strange sigaction ()

Kevin B. Hendricks khendricks at
Thu Mar 8 00:36:49 EST 2001


> It did not work for me !!
> Is the problem with kernel or it is elsewhere ?
> Which kernel patch will fix this ?

What kernel are you using?
What version of glibc are you using?

The patch to support siginfo and rt signals was added during the 2.2.14
series someplace and should be in both 2.2.16 and higher and 2.4.X.

For example, my kernel is 2.2.17-pre10 and it has the necessary support. The
glibc I am using is 2.1.3 latest from Franz Sirl.

If you are using a 2.2.1X series kernel you may want to see if this patch is
present in your kernel sources (see attached patch).

p.s. I don't know how your previous code worked on Intel RedHat since it
never loaded the SA_SIGINFO and handler into the sigaction structure before
calling sigaction.  If it worked, you were lucky.  Technically without the
handler being specified in the sigaction structure and without the SA_SIGINFO
flag you should have been playing with a zero'd out act structure.


> Try the following, it works for me:
> #include <stdlib.h>
> #include <stdio.h>
> #include <signal.h>
> static struct sigaction act;
> static void handler (int,siginfo_t *,void *);
> int
> main ()
> {
>   act.sa_sigaction=handler;
>   act.sa_flags=SA_SIGINFO;
>   sigaction (SIGALRM,&act,NULL);
>   alarm (1);
>   sleep (2);
> }
> void handler (int x, siginfo_t *s,void *v)
> {
>     printf ("si_signo   = %d, si_code  = %d, si_errno  = %d\n",s->si_signo,
> s->si_code, s->si_errno);
> }
> [kbhend at localhost kbhend]$ gcc -otest test.c
> [kbhend at localhost kbhend]$ ./test
> si_signo   = 14, si_code  = 0, si_errno  = 0
> [kbhend at localhost kbhend]$
-------------- next part --------------
A non-text attachment was scrubbed...
Name: posix_stable.patch
Type: text/x-c
Size: 10479 bytes
Desc: not available
URL: <>

More information about the Linuxppc-dev mailing list