Did you ever figure this out?  I'm seeing the same issue.

On Aug 12, 8:24 am, Ashutosh <as...@techmahindra.com> wrote:
> Below is the sample code --
>
> #include <stdio.h>
> #include <errno.h>
> #include <signal.h>
> #include <string.h>
>
> int main()
> {
>         int retval = -1;
>     sigset_t  allsig, oldsig;
>
>         printf("sizeof(sigset_t) = %d\n", sizeof(sigset_t));
>
>     sigfillset (&allsig);
>     retval = pthread_sigmask (SIG_SETMASK, &allsig, &oldsig);
>         printf("SIG_SETMASK = %d\n", SIG_SETMASK);
>     if (retval < 0)
>     {
>         printf("pthread_sigmask(): %s, errno = %d, retval = %d\n",
> strerror(errno), errno, retval);
> //        return -1;
>     }
>
>     retval = pthread_sigmask (SIG_SETMASK, &oldsig, 0);
>     if (retval != 0)
>     {
>         printf("Restore sigmask: %s, errno = %d, retval = %d\n",
> strerror(errno), errno, retval);
> //        return -1;
>     }
>
>         return 0;
>
> }
>
> When I run this code on ADP1, I get following output --
>
> sizeof(sigset_t) = 4
> SIG_SETMASK = 2
> pthread_sigmask(): Invalid argument, errno = 22, retval = -1
> Restore sigmask: Invalid argument, errno = 22, retval = -1
>
> strace shows that rt_sigprocmask() failed with error EINVAL
>
> rt_sigprocmask(SIG_SETMASK, ~[], 0xbec7cbb4, 4) = -1 EINVAL (Invalid
> argument)
> rt_sigprocmask(SIG_SETMASK, [STKFLT], NULL, 4) = -1 EINVAL (Invalid
> argument)
>
> In kernel it fails at 'if (sigsetsize != sizeof(sigset_t))' in
> function rt_sigprocmask() in file kernel/signal.c .
> Here size of sigset_t is 8 and size of sigsetsize is 4.
>
> I looked at file arch/arm/include/asm/signal.h and found that size of
> sigset_t is 8 ((_NSIG_WORDS=2)*(sizeof(unsigned long))).
>
> Further analysis shows that in file libc/bionic/pthread.c last
> argument is passed as (_NSIG / 8) and _NSIG(==NSIG) is defined as 32
> in libc/kernel/arch-arm/asm/signal.h.
>
> Why does this inconsistency exist? Have I missed something or it is
> like this and what do I need to do to get this working. I have tried
> this on 2.6.27 and 2.6.29 both. The current output is on 2.6.29.
>
> Please help.
>
> Thanks
> Ashutosh

--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel
-~----------~----~----~----~------~----~------~--~---

Reply via email to