]> git.llucax.com Git - software/druntime.git/blob - import/stdc/posix/setjmp.d
First commit of the D Runtime Project. This includes a fully functional runtime...
[software/druntime.git] / import / stdc / posix / setjmp.d
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 stdc.posix.setjmp;
10
11 private import stdc.posix.config;
12 private import 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     else version ( SPARC )
55     {
56         alias int[3] __jmp_buf;
57     }
58
59     struct __jmp_buf_tag
60     {
61         __jmp_buf   __jmpbuf;
62         int         __mask_was_saved;
63         sigset_t    __saved_mask;
64     }
65
66     alias __jmp_buf_tag[1] jmp_buf;
67
68     alias _setjmp setjmp; // see XOpen block
69     void longjmp(jmp_buf, int);
70 }
71
72 //
73 // C Extension (CX)
74 //
75 /*
76 sigjmp_buf
77
78 int  sigsetjmp(sigjmp_buf, int);
79 void siglongjmp(sigjmp_buf, int);
80 */
81
82 version( linux )
83 {
84     alias jmp_buf sigjmp_buf;
85
86     int __sigsetjmp(sigjmp_buf, int);
87     alias __sigsetjmp sigsetjmp;
88     void siglongjmp(sigjmp_buf, int);
89 }
90
91 //
92 // XOpen (XSI)
93 //
94 /*
95 int  _setjmp(jmp_buf);
96 void _longjmp(jmp_buf, int);
97 */
98
99 version( linux )
100 {
101     int  _setjmp(jmp_buf);
102     void _longjmp(jmp_buf, int);
103 }