Re: send_sigqueue problem..

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux