1/* 2 * Copyright 2004-2018 Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _SETJMP_H_ 6#define _SETJMP_H_ 7 8 9#include <config/HaikuConfig.h> 10 11#include <signal.h> 12 13/* include architecture specific definitions */ 14#include __HAIKU_ARCH_HEADER(arch_setjmp.h) 15 16typedef struct __jmp_buf_tag { 17 __jmp_buf regs; /* saved registers, stack & program pointer */ 18 sigset_t inverted_signal_mask; 19} jmp_buf[1]; 20 21typedef jmp_buf sigjmp_buf; 22 23 24#ifdef __cplusplus 25extern "C" { 26#endif 27 28extern int _setjmp(jmp_buf jumpBuffer); 29extern int setjmp(jmp_buf jumpBuffer); 30extern int sigsetjmp(jmp_buf jumpBuffer, int saveMask); 31 32extern void _longjmp(jmp_buf jumpBuffer, int value) 33 __attribute__ ((noreturn)); 34extern void longjmp(jmp_buf jumpBuffer, int value) 35 __attribute__ ((noreturn)); 36extern void siglongjmp(sigjmp_buf jumpBuffer, int value) 37 __attribute__ ((noreturn)); 38 39#ifdef __cplusplus 40} 41#endif 42 43#endif /* _SETJMP_H_ */ 44