diff options
Diffstat (limited to 'src/time/timer_delete.c')
-rw-r--r-- | src/time/timer_delete.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/time/timer_delete.c b/src/time/timer_delete.c new file mode 100644 index 0000000..b0bfac0 --- /dev/null +++ b/src/time/timer_delete.c @@ -0,0 +1,14 @@ +#include <time.h> +#include <limits.h> +#include "pthread_impl.h" + +int timer_delete(timer_t t) +{ + if ((intptr_t)t < 0) { + pthread_t td = (void *)((uintptr_t)t << 1); + a_store(&td->timer_id, td->timer_id | INT_MIN); + __syscall(SYS_tkill, td->tid, SIGTIMER); + return 0; + } + return __syscall(SYS_timer_delete, t); +} |