On 11/3/05, ppunnam@xxxxxxxxxxx <ppunnam@xxxxxxxxxxx> wrote: > > i am trying to use the linux signaling to signal a user process from the > kernel.. > i require a reliable(without any signal loss) and fast signaling > mechanism. > i tried to use the send_sigqueue to send the signals...here what i did > > 1) creted the sigqueue structure using the sigqueue_alloc().. > 2) called the send_sigqueue() function... > it worked fine for some time(around 1000 sig) but after that > sigqueue_alloc failing..may be becuse of not enough memory available to > allocate sigqueue.. Its obvious that if you allocate some-thing (like through sigqueue_alloc) then you have to free that too (like through sigqueue_free) > i got few question about this.. > > 1) does sigqueue structure need to be removed explisitly or it will be > autometically cleared after the signal delivery (i did't used the > sigqueue_free() becuse i dont know when the signal is deliverd). yes, you have to remove the structure explicitly as you allocated it by your-self ! And I think you can call sigqueue_free just after calling send_sigqueue because the singals are delivered to the process with the wake_up call and then you can remove your sigqueue structure (I might be wrong as I am saying this by just going through the send_sigqueue function, CMIIW) > 2)there is any another way i can implement such a signaling mechanism. > I saw one simple way in signal.c file. send_sig function which sends signal by-itself (means allocate sigqueue internally) see http://lxr.linux.no/source/kernel/signal.c#L1249 -- Fawad Lateef -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/