diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/internal/pthread_impl.h | 6 | ||||
-rw-r--r-- | src/thread/pthread_create.c | 4 | ||||
-rw-r--r-- | 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) |