1 #pragma once 2 3 #ifdef __cplusplus 4 extern "C" { 5 #endif 6 7 #include <features.h> 8 9 #include <bits/setjmp.h> 10 11 typedef struct __jmp_buf_tag { 12 __jmp_buf __jb; 13 unsigned long __fl; 14 unsigned long __ss[128 / sizeof(long)]; 15 } jmp_buf[1]; 16 17 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 18 defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 19 typedef jmp_buf sigjmp_buf; 20 int sigsetjmp(sigjmp_buf, int); 21 _Noreturn void siglongjmp(sigjmp_buf, int); 22 #endif 23 24 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 25 int _setjmp(jmp_buf); 26 _Noreturn void _longjmp(jmp_buf, int); 27 #endif 28 29 int setjmp(jmp_buf); 30 _Noreturn void longjmp(jmp_buf, int); 31 32 #define setjmp setjmp 33 34 #ifdef __cplusplus 35 } 36 #endif 37