diff options
Diffstat (limited to 'linuxthreads/pthread.c')
-rw-r--r-- | linuxthreads/pthread.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index 3ceb33562e..eca90635b0 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -369,10 +369,12 @@ static void pthread_initialize(void) #ifndef __i386__ sa.sa_handler = pthread_handle_sigrestart; #else - if (__pthread_sig_restart >= SIGRTMIN) - sa.sa_handler = (__sighandler_t) pthread_handle_sigrestart_rt; - else +# if !__ASSUME_REALTIME_SIGNALS + if (__pthread_sig_restart < SIGRTMIN) sa.sa_handler = (__sighandler_t) pthread_handle_sigrestart_nonrt; + else +# endif + sa.sa_handler = (__sighandler_t) pthread_handle_sigrestart_rt; #endif sigemptyset(&sa.sa_mask); sa.sa_flags = 0; @@ -380,10 +382,12 @@ static void pthread_initialize(void) #ifndef __i386__ sa.sa_handler = pthread_handle_sigcancel; #else - if (__pthread_sig_restart >= SIGRTMIN) - sa.sa_handler = (__sighandler_t) pthread_handle_sigcancel_rt; - else +# if !__ASSUME_REALTIME_SIGNALS + if (__pthread_sig_restart < SIGRTMIN) sa.sa_handler = (__sighandler_t) pthread_handle_sigcancel_nonrt; + else +# endif + sa.sa_handler = (__sighandler_t) pthread_handle_sigcancel_rt; #endif sa.sa_flags = 0; __sigaction(__pthread_sig_cancel, &sa, NULL); @@ -664,11 +668,13 @@ static void pthread_handle_sigrestart(int sig) } #ifdef __i386__ +# if !__ASSUME_REALTIME_SIGNALS static void pthread_handle_sigrestart_nonrt(int sig, struct sigcontext ctx) { asm volatile ("movw %w0,%%gs" : : "r" (ctx.gs)); pthread_handle_sigrestart(sig); } +# endif static void pthread_handle_sigrestart_rt(int sig, struct siginfo *si, struct ucontext *uc) @@ -713,11 +719,13 @@ static void pthread_handle_sigcancel(int sig) } #ifdef __i386__ +# if !__ASSUME_REALTIME_SIGNALS static void pthread_handle_sigcancel_nonrt(int sig, struct sigcontext ctx) { asm volatile ("movw %w0,%%gs" : : "r" (ctx.gs)); pthread_handle_sigcancel(sig); } +# endif static void pthread_handle_sigcancel_rt(int sig, struct siginfo *si, struct ucontext *uc) |