xref: /haiku/headers/posix/setjmp.h (revision 2222d0559df303a9846a2fad53741f8b20b14d7c)
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