summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linuxthreads/ChangeLog6
-rw-r--r--linuxthreads/internals.h2
-rw-r--r--linuxthreads/pthread.c36
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 <drepper@redhat.com>
+
+ * 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 <drepper@redhat.com>
* 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.