From e2947c429eaf51b7c0645e9484d70f141ba560d6 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 16 Apr 2000 08:18:10 +0000 Subject: Update. 2000-04-16 Ulrich Drepper * pthread.c: Correct long-time braino. We never set SA_SIGINFO and therefore don't need the _rt versions of the signal handlers. * internals.h: Declare __pthread_yield. --- linuxthreads/ChangeLog | 6 ++++++ linuxthreads/internals.h | 2 ++ linuxthreads/pthread.c | 36 ++---------------------------------- 3 files changed, 10 insertions(+), 34 deletions(-) diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 9a1213b910..893528d95b 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,8 +1,14 @@ +2000-04-16 Ulrich Drepper + + * pthread.c: Correct long-time braino. We never set SA_SIGINFO and + therefore don't need the _rt versions of the signal handlers. + 2000-04-15 Ulrich Drepper * pthread.c (pthread_yield): New function. * sysdeps/pthread/pthread.h (pthread_yield): Add prototype. * Versions [libpthread] (GLIBC_2.2): Add pthread_yield. + * internals.h: Declare __pthread_yield. * pthread.c (pthread_initialize): Avoid a bit more code if realtime signals are known to exist. diff --git a/linuxthreads/internals.h b/linuxthreads/internals.h index e6b58df3ca..c1f4081c7b 100644 --- a/linuxthreads/internals.h +++ b/linuxthreads/internals.h @@ -439,6 +439,8 @@ int __pthread_timedsuspend_new(pthread_descr self, const struct timespec *abs); void __pthread_wait_for_restart_signal(pthread_descr self); +int __pthread_yield (void); + /* Global pointers to old or new suspend functions */ extern void (*__pthread_restart)(pthread_descr); diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index ae747bc5ac..3375f7eaac 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -197,11 +197,7 @@ static void pthread_handle_sigcancel(int sig); static void pthread_handle_sigrestart(int sig); #ifdef __i386__ static void pthread_handle_sigrestart_nonrt(int sig, struct sigcontext ctx); -static void pthread_handle_sigrestart_rt(int sig, struct siginfo *si, - struct ucontext *uc); static void pthread_handle_sigcancel_nonrt(int sig, struct sigcontext ctx); -static void pthread_handle_sigcancel_rt(int sig, struct siginfo *si, - struct ucontext *uc); #endif static void pthread_handle_sigdebug(int sig); @@ -369,12 +365,7 @@ static void pthread_initialize(void) #ifndef __i386__ sa.sa_handler = pthread_handle_sigrestart; #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; + sa.sa_handler = (__sighandler_t) pthread_handle_sigrestart_nonrt; #endif sigemptyset(&sa.sa_mask); sa.sa_flags = 0; @@ -382,12 +373,7 @@ static void pthread_initialize(void) #ifndef __i386__ sa.sa_handler = pthread_handle_sigcancel; #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; + sa.sa_handler = (__sighandler_t) pthread_handle_sigcancel_nonrt; #endif sa.sa_flags = 0; __sigaction(__pthread_sig_cancel, &sa, NULL); @@ -675,20 +661,11 @@ 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) -{ - asm volatile ("movw %w0,%%gs" : : "r" (uc->uc_mcontext.gregs[REG_GS])); - pthread_handle_sigrestart(sig); -} #endif /* The handler for the CANCEL signal checks for cancellation @@ -726,20 +703,11 @@ 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) -{ - asm volatile ("movw %w0,%%gs" : : "r" (uc->uc_mcontext.gregs[REG_GS])); - pthread_handle_sigcancel(sig); -} #endif /* Handler for the DEBUG signal. -- cgit 1.4.1