132
|
1 /**
|
|
2 * D header file for POSIX.
|
|
3 *
|
|
4 * Copyright: Public Domain
|
|
5 * License: Public Domain
|
|
6 * Authors: Sean Kelly
|
|
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
|
|
8 */
|
|
9 module tango.stdc.posix.setjmp;
|
|
10
|
|
11 private import tango.stdc.posix.config;
|
|
12 private import tango.stdc.posix.signal; // for sigset_t
|
|
13
|
|
14 extern (C):
|
|
15
|
|
16 //
|
|
17 // Required
|
|
18 //
|
|
19 /*
|
|
20 jmp_buf
|
|
21
|
|
22 int setjmp(jmp_buf);
|
|
23 void longjmp(jmp_buf, int);
|
|
24 */
|
|
25
|
|
26 version( linux )
|
|
27 {
|
|
28 version( X86_64 )
|
|
29 {
|
|
30 //const JB_BX = 0;
|
|
31 //const JB_BP = 1;
|
|
32 //const JB_12 = 2;
|
|
33 //const JB_13 = 3;
|
|
34 //const JB_14 = 4;
|
|
35 //const JB_15 = 5;
|
|
36 //const JB_SP = 6;
|
|
37 //const JB_PC = 7;
|
|
38 //const JB_SIZE = 64;
|
|
39
|
|
40 alias long[8] __jmp_buf;
|
|
41 }
|
|
42 else version( X86 )
|
|
43 {
|
|
44 //const JB_BX = 0;
|
|
45 //const JB_SI = 1;
|
|
46 //const JB_DI = 2;
|
|
47 //const JB_BP = 3;
|
|
48 //const JB_SP = 4;
|
|
49 //const JB_PC = 5;
|
|
50 //const JB_SIZE = 24;
|
|
51
|
|
52 alias int[6] __jmp_buf;
|
|
53 }
|
|
54
|
|
55 struct __jmp_buf_tag
|
|
56 {
|
|
57 __jmp_buf __jmpbuf;
|
|
58 int __mask_was_saved;
|
|
59 sigset_t __saved_mask;
|
|
60 }
|
|
61
|
|
62 alias __jmp_buf_tag[1] jmp_buf;
|
|
63
|
|
64 alias _setjmp setjmp; // see XOpen block
|
|
65 void longjmp(jmp_buf, int);
|
|
66 }
|
|
67
|
|
68 //
|
|
69 // C Extension (CX)
|
|
70 //
|
|
71 /*
|
|
72 sigjmp_buf
|
|
73
|
|
74 int sigsetjmp(sigjmp_buf, int);
|
|
75 void siglongjmp(sigjmp_buf, int);
|
|
76 */
|
|
77
|
|
78 version( linux )
|
|
79 {
|
|
80 alias jmp_buf sigjmp_buf;
|
|
81
|
|
82 int __sigsetjmp(sigjmp_buf, int);
|
|
83 alias __sigsetjmp sigsetjmp;
|
|
84 void siglongjmp(sigjmp_buf, int);
|
|
85 }
|
|
86
|
|
87 //
|
|
88 // XOpen (XSI)
|
|
89 //
|
|
90 /*
|
|
91 int _setjmp(jmp_buf);
|
|
92 void _longjmp(jmp_buf, int);
|
|
93 */
|
|
94
|
|
95 version( linux )
|
|
96 {
|
|
97 int _setjmp(jmp_buf);
|
|
98 void _longjmp(jmp_buf, int);
|
|
99 }
|