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