1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#include <features.h>
8
9#include <bits/setjmp.h>
10
11typedef 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)
19typedef jmp_buf sigjmp_buf;
20int 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)
25int _setjmp(jmp_buf);
26_Noreturn void _longjmp(jmp_buf, int);
27#endif
28
29int setjmp(jmp_buf);
30_Noreturn void longjmp(jmp_buf, int);
31
32#define setjmp setjmp
33
34#ifdef __cplusplus
35}
36#endif
37