diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-08-16 14:03:43 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-08-16 14:03:43 +0000 |
commit | 93a78ac437ba44f493333d7e2a4b0249839ce460 (patch) | |
tree | be93f2f5a76313d6decc7ccca7623671e23c7974 /nptl/sysdeps/unix/sysv/linux/timer_delete.c | |
parent | 4b4f2771c217d7b038bcfc17c985ba057da554db (diff) | |
download | glibc-93a78ac437ba44f493333d7e2a4b0249839ce460.tar.gz |
Remove __ASSUME_POSIX_TIMERS.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/timer_delete.c')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/timer_delete.c | 104 |
1 files changed, 32 insertions, 72 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/timer_delete.c b/nptl/sysdeps/unix/sysv/linux/timer_delete.c index 98f68e9c2c..598be8343e 100644 --- a/nptl/sysdeps/unix/sysv/linux/timer_delete.c +++ b/nptl/sysdeps/unix/sysv/linux/timer_delete.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2003-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@redhat.com>, 2003. @@ -24,91 +24,51 @@ #include "kernel-posix-timers.h" -#ifdef __NR_timer_delete -# ifndef __ASSUME_POSIX_TIMERS -static int compat_timer_delete (timer_t timerid); -# define timer_delete static compat_timer_delete -# include <nptl/sysdeps/pthread/timer_delete.c> -# undef timer_delete -# endif - -# ifdef timer_delete_alias -# define timer_delete timer_delete_alias -# endif +#ifdef timer_delete_alias +# define timer_delete timer_delete_alias +#endif int timer_delete (timerid) timer_t timerid; { -# undef timer_delete -# ifndef __ASSUME_POSIX_TIMERS - if (__no_posix_timers >= 0) -# endif - { - struct timer *kt = (struct timer *) timerid; +#undef timer_delete + struct timer *kt = (struct timer *) timerid; - /* Delete the kernel timer object. */ - int res = INLINE_SYSCALL (timer_delete, 1, kt->ktimerid); + /* Delete the kernel timer object. */ + int res = INLINE_SYSCALL (timer_delete, 1, kt->ktimerid); - if (res == 0) + if (res == 0) + { + if (kt->sigev_notify == SIGEV_THREAD) { - if (kt->sigev_notify == SIGEV_THREAD) + /* Remove the timer from the list. */ + pthread_mutex_lock (&__active_timer_sigev_thread_lock); + if (__active_timer_sigev_thread == kt) + __active_timer_sigev_thread = kt->next; + else { - /* Remove the timer from the list. */ - pthread_mutex_lock (&__active_timer_sigev_thread_lock); - if (__active_timer_sigev_thread == kt) - __active_timer_sigev_thread = kt->next; - else - { - struct timer *prevp = __active_timer_sigev_thread; - while (prevp->next != NULL) - if (prevp->next == kt) - { - prevp->next = kt->next; - break; - } - else - prevp = prevp->next; - } - pthread_mutex_unlock (&__active_timer_sigev_thread_lock); + struct timer *prevp = __active_timer_sigev_thread; + while (prevp->next != NULL) + if (prevp->next == kt) + { + prevp->next = kt->next; + break; + } + else + prevp = prevp->next; } - -# ifndef __ASSUME_POSIX_TIMERS - /* We know the syscall support is available. */ - __no_posix_timers = 1; -# endif - - /* Free the memory. */ - (void) free (kt); - - return 0; + pthread_mutex_unlock (&__active_timer_sigev_thread_lock); } - /* The kernel timer is not known or something else bad happened. - Return the error. */ -# ifndef __ASSUME_POSIX_TIMERS - if (errno != ENOSYS) - { - __no_posix_timers = 1; -# endif - return -1; -# ifndef __ASSUME_POSIX_TIMERS - } + /* Free the memory. */ + (void) free (kt); - __no_posix_timers = -1; -# endif + return 0; } -# ifndef __ASSUME_POSIX_TIMERS - return compat_timer_delete (timerid); -# endif + /* The kernel timer is not known or something else bad happened. + Return the error. */ + return -1; } -#else -# ifdef timer_delete_alias -# define timer_delete timer_delete_alias -# endif -/* The new system calls are not available. Use the userlevel - implementation. */ -# include <nptl/sysdeps/pthread/timer_delete.c> -#endif |