From 4c4e22d781d75a461097cccc2ecac5adbafb1a59 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 7 May 2011 23:37:10 -0400 Subject: optimize compound-literal sigset_t's not to contain useless hurd bits --- src/internal/pthread_impl.h | 6 ++++-- src/thread/pthread_create.c | 4 ++-- src/time/timer_create.c | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/internal/pthread_impl.h b/src/internal/pthread_impl.h index 24cbeb25..615713c7 100644 --- a/src/internal/pthread_impl.h +++ b/src/internal/pthread_impl.h @@ -79,8 +79,10 @@ struct __timer { #define SIGCANCEL 33 #define SIGSYSCALL 34 -#define SIGPT_SET ((sigset_t){{[sizeof(long)==4] = 3<<(32*(sizeof(long)>4))}}) -#define SIGTIMER_SET ((sigset_t){{ 0x80000000 }}) +#define SIGPT_SET ((sigset_t *)(unsigned long [1+(sizeof(long)==4)]){ \ + [sizeof(long)==4] = 3<<(32*(sizeof(long)>4)) }) +#define SIGTIMER_SET ((sigset_t *)(unsigned long [1+(sizeof(long)==4)]){ \ + 0x80000000 }) int __set_thread_area(void *); int __libc_sigaction(int, const struct sigaction *, struct sigaction *); diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c index 6545539b..0609aab1 100644 --- a/src/thread/pthread_create.c +++ b/src/thread/pthread_create.c @@ -45,7 +45,7 @@ static int start(void *p) { struct pthread *self = p; if (self->unblock_cancel) - __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, &SIGPT_SET, 0, 8); + __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGPT_SET, 0, 8); pthread_exit(self->start(self->start_arg)); return 0; } @@ -68,7 +68,7 @@ int pthread_create(pthread_t *res, const pthread_attr_t *attr, void *(*entry)(vo if (!self) return ENOSYS; if (!libc.threaded) { - __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, &SIGPT_SET, 0, 8); + __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGPT_SET, 0, 8); libc.threaded = 1; } diff --git a/src/time/timer_create.c b/src/time/timer_create.c index 3bcfa951..1561d797 100644 --- a/src/time/timer_create.c +++ b/src/time/timer_create.c @@ -51,7 +51,7 @@ static void install_handler() .sa_flags = SA_SIGINFO | SA_RESTART }; __libc_sigaction(SIGTIMER, &sa, 0); - __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, &SIGTIMER_SET, 0, 8); + __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGTIMER_SET, 0, 8); } static void *start(void *arg) -- cgit v1.2.1