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