diff options
Diffstat (limited to 'klibc/include/setjmp.h')
-rw-r--r-- | klibc/include/setjmp.h | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/klibc/include/setjmp.h b/klibc/include/setjmp.h deleted file mode 100644 index b504eb6d08..0000000000 --- a/klibc/include/setjmp.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * setjmp.h - */ - -#ifndef _SETJMP_H -#define _SETJMP_H - -#include <klibc/extern.h> -#include <klibc/compiler.h> -#include <stddef.h> -#include <signal.h> - -#include <klibc/archsetjmp.h> - -__extern int setjmp(jmp_buf); -__extern __noreturn longjmp(jmp_buf, int); - -/* - Whose bright idea was it to add unrelated functionality to just about - the only function in the standard C library (setjmp) which cannot be - wrapped by an ordinary function wrapper? Anyway, the damage is done, - and therefore, this wrapper *must* be inline. However, gcc will - complain if this is an inline function for unknown reason, and - therefore sigsetjmp() needs to be a macro. -*/ - -struct __sigjmp_buf { - jmp_buf __jmpbuf; - sigset_t __sigs; -}; - -typedef struct __sigjmp_buf sigjmp_buf[1]; - -#define sigsetjmp(__env, __save) \ -({ \ - struct __sigjmp_buf *__e = (__env); \ - sigprocmask(0, NULL, &__e->__sigs); \ - setjmp(__e->__jmpbuf); \ -}) - -__extern __noreturn siglongjmp(sigjmp_buf, int); - -#endif /* _SETJMP_H */ |