diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-03-25 22:13:57 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-03-25 22:13:57 -0400 |
commit | ea343364a719add2cd8adf8a50c15bb5f9400dd8 (patch) | |
tree | 36056bd0bd1c4c49118b6b3366db6432f7c80fc1 /include/pthread.h | |
parent | 92b52b70e8c0786c95cb73a691e1f6e89a73be46 (diff) | |
download | musl-ea343364a719add2cd8adf8a50c15bb5f9400dd8.tar.gz |
match glibc/lsb cancellation abi on i386
glibc made the ridiculous choice to use pass-by-register calling
convention for these functions, which is impossible to duplicate
directly on non-gcc compilers. instead, we use ugly asm to wrap and
convert the calling convention. presumably this works with every
compiler anyone could potentially want to use.
Diffstat (limited to 'include/pthread.h')
-rw-r--r-- | include/pthread.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/pthread.h b/include/pthread.h index e15f25bb..76333669 100644 --- a/include/pthread.h +++ b/include/pthread.h @@ -181,9 +181,11 @@ int pthread_atfork(void (*)(void), void (*)(void), void (*)(void)); #include <bits/pthread.h> int __setjmp(void *); +#ifndef __pthread_register_cancel void __pthread_register_cancel(struct __ptcb *); void __pthread_unregister_cancel(struct __ptcb *); void __pthread_unwind_next(struct __ptcb *); +#endif #define pthread_cleanup_push(f, x) \ do { struct __ptcb __cb; void (*__f)(void *) = (f); void *__x = (x); \ |