17777dab0Sopenharmony_ci#ifndef	_SETJMP_H
27777dab0Sopenharmony_ci#define	_SETJMP_H
37777dab0Sopenharmony_ci
47777dab0Sopenharmony_ci#ifdef __cplusplus
57777dab0Sopenharmony_ciextern "C" {
67777dab0Sopenharmony_ci#endif
77777dab0Sopenharmony_ci
87777dab0Sopenharmony_ci#include <features.h>
97777dab0Sopenharmony_ci
107777dab0Sopenharmony_ci#include <bits/setjmp.h>
117777dab0Sopenharmony_ci
127777dab0Sopenharmony_citypedef struct __jmp_buf_tag {
137777dab0Sopenharmony_ci	__jmp_buf __jb;
147777dab0Sopenharmony_ci	unsigned long __fl;
157777dab0Sopenharmony_ci	unsigned long __ss[128/sizeof(long)];
167777dab0Sopenharmony_ci} jmp_buf[1];
177777dab0Sopenharmony_ci
187777dab0Sopenharmony_ci#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
197777dab0Sopenharmony_ci || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
207777dab0Sopenharmony_ci || defined(_BSD_SOURCE)
217777dab0Sopenharmony_citypedef jmp_buf sigjmp_buf;
227777dab0Sopenharmony_ciint sigsetjmp (sigjmp_buf, int);
237777dab0Sopenharmony_ci_Noreturn void siglongjmp (sigjmp_buf, int);
247777dab0Sopenharmony_ci#endif
257777dab0Sopenharmony_ci
267777dab0Sopenharmony_ci#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
277777dab0Sopenharmony_ci || defined(_BSD_SOURCE)
287777dab0Sopenharmony_ciint _setjmp (jmp_buf);
297777dab0Sopenharmony_ci_Noreturn void _longjmp (jmp_buf, int);
307777dab0Sopenharmony_ci#endif
317777dab0Sopenharmony_ci
327777dab0Sopenharmony_ciint setjmp (jmp_buf);
337777dab0Sopenharmony_ci_Noreturn void longjmp (jmp_buf, int);
347777dab0Sopenharmony_ci
357777dab0Sopenharmony_ci#define setjmp setjmp
367777dab0Sopenharmony_ci
377777dab0Sopenharmony_ci#ifdef __cplusplus
387777dab0Sopenharmony_ci}
397777dab0Sopenharmony_ci#endif
407777dab0Sopenharmony_ci
417777dab0Sopenharmony_ci#endif
42