comparison druntime/import/core/sys/posix/setjmp.d @ 1458:e0b2d67cfe7c

Added druntime (this should be removed once it works).
author Robert Clipsham <robert@octarineparrot.com>
date Tue, 02 Jun 2009 17:43:06 +0100
parents
children
comparison
equal deleted inserted replaced
1456:7b218ec1044f 1458:e0b2d67cfe7c
1 /**
2 * D header file for POSIX.
3 *
4 * Copyright: Copyright Sean Kelly 2005 - 2009.
5 * License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>.
6 * Authors: Sean Kelly
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 *
9 * Copyright Sean Kelly 2005 - 2009.
10 * Distributed under the Boost Software License, Version 1.0.
11 * (See accompanying file LICENSE_1_0.txt or copy at
12 * http://www.boost.org/LICENSE_1_0.txt)
13 */
14 module core.sys.posix.setjmp;
15
16 private import core.sys.posix.config;
17 private import core.sys.posix.signal; // for sigset_t
18
19 extern (C):
20
21 //
22 // Required
23 //
24 /*
25 jmp_buf
26
27 int setjmp(jmp_buf);
28 void longjmp(jmp_buf, int);
29 */
30
31 version( linux )
32 {
33 version( X86_64 )
34 {
35 //enum JB_BX = 0;
36 //enum JB_BP = 1;
37 //enum JB_12 = 2;
38 //enum JB_13 = 3;
39 //enum JB_14 = 4;
40 //enum JB_15 = 5;
41 //enum JB_SP = 6;
42 //enum JB_PC = 7;
43 //enum JB_SIZE = 64;
44
45 alias long[8] __jmp_buf;
46 }
47 else version( X86 )
48 {
49 //enum JB_BX = 0;
50 //enum JB_SI = 1;
51 //enum JB_DI = 2;
52 //enum JB_BP = 3;
53 //enum JB_SP = 4;
54 //enum JB_PC = 5;
55 //enum JB_SIZE = 24;
56
57 alias int[6] __jmp_buf;
58 }
59 else version ( SPARC )
60 {
61 alias int[3] __jmp_buf;
62 }
63
64 struct __jmp_buf_tag
65 {
66 __jmp_buf __jmpbuf;
67 int __mask_was_saved;
68 sigset_t __saved_mask;
69 }
70
71 alias __jmp_buf_tag[1] jmp_buf;
72
73 alias _setjmp setjmp; // see XOpen block
74 void longjmp(jmp_buf, int);
75 }
76
77 //
78 // C Extension (CX)
79 //
80 /*
81 sigjmp_buf
82
83 int sigsetjmp(sigjmp_buf, int);
84 void siglongjmp(sigjmp_buf, int);
85 */
86
87 version( linux )
88 {
89 alias jmp_buf sigjmp_buf;
90
91 int __sigsetjmp(sigjmp_buf, int);
92 alias __sigsetjmp sigsetjmp;
93 void siglongjmp(sigjmp_buf, int);
94 }
95
96 //
97 // XOpen (XSI)
98 //
99 /*
100 int _setjmp(jmp_buf);
101 void _longjmp(jmp_buf, int);
102 */
103
104 version( linux )
105 {
106 int _setjmp(jmp_buf);
107 void _longjmp(jmp_buf, int);
108 }