comparison druntime/import/stdc/posix/ucontext.d @ 760:6f33b427bfd1

Seems like hg ignores .di files, so I missed a bunch of stuff. complete druntime should be there now :)
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 12 Nov 2008 00:19:18 +0100
parents
children
comparison
equal deleted inserted replaced
759:d3eb054172f9 760:6f33b427bfd1
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.ucontext;
10
11 private import stdc.posix.config;
12 public import stdc.posix.signal; // for sigset_t, stack_t
13
14 extern (C):
15
16 //
17 // XOpen (XSI)
18 //
19 /*
20 mcontext_t
21
22 struct ucontext_t
23 {
24 ucontext_t* uc_link;
25 sigset_t uc_sigmask;
26 stack_t uc_stack;
27 mcontext_t uc_mcontext;
28 }
29 */
30
31 version( linux )
32 {
33
34 version( X86_64 )
35 {
36 private
37 {
38 struct _libc_fpxreg
39 {
40 ushort[4] significand;
41 ushort exponent;
42 ushort[3] padding;
43 }
44
45 struct _libc_xmmreg
46 {
47 uint[4] element;
48 }
49
50 struct _libc_fpstate
51 {
52 ushort cwd;
53 ushort swd;
54 ushort ftw;
55 ushort fop;
56 ulong rip;
57 ulong rdp;
58 uint mxcsr;
59 uint mxcr_mask;
60 _libc_fpxreg[8] _st;
61 _libc_xmmreg[16] _xmm;
62 uint[24] padding;
63 }
64
65 const NGREG = 23;
66
67 alias c_long greg_t;
68 alias greg_t[NGREG] gregset_t;
69 alias _libc_fpstate* fpregset_t;
70 }
71
72 struct mcontext_t
73 {
74 gregset_t gregs;
75 fpregset_t fpregs;
76 c_ulong[8] __reserved1;
77 }
78
79 struct ucontext_t
80 {
81 c_ulong uc_flags;
82 ucontext_t* uc_link;
83 stack_t uc_stack;
84 mcontext_t uc_mcontext;
85 sigset_t uc_sigmask;
86 _libc_fpstate __fpregs_mem;
87 }
88 }
89 else version( X86 )
90 {
91 private
92 {
93 struct _libc_fpreg
94 {
95 ushort[4] significand;
96 ushort exponent;
97 }
98
99 struct _libc_fpstate
100 {
101 c_ulong cw;
102 c_ulong sw;
103 c_ulong tag;
104 c_ulong ipoff;
105 c_ulong cssel;
106 c_ulong dataoff;
107 c_ulong datasel;
108 _libc_fpreg[8] _st;
109 c_ulong status;
110 }
111
112 const NGREG = 19;
113
114 alias int greg_t;
115 alias greg_t[NGREG] gregset_t;
116 alias _libc_fpstate* fpregset_t;
117 }
118
119 struct mcontext_t
120 {
121 gregset_t gregs;
122 fpregset_t fpregs;
123 c_ulong oldmask;
124 c_ulong cr2;
125 }
126
127 struct ucontext_t
128 {
129 c_ulong uc_flags;
130 ucontext_t* uc_link;
131 stack_t uc_stack;
132 mcontext_t uc_mcontext;
133 sigset_t uc_sigmask;
134 _libc_fpstate __fpregs_mem;
135 }
136 }
137 }
138
139 //
140 // Obsolescent (OB)
141 //
142 /*
143 int getcontext(ucontext_t*);
144 void makecontext(ucontext_t*, void function(), int, ...);
145 int setcontext(in ucontext_t*);
146 int swapcontext(ucontext_t*, in ucontext_t*);
147 */
148
149 static if( is( ucontext_t ) )
150 {
151 int getcontext(ucontext_t*);
152 void makecontext(ucontext_t*, void function(), int, ...);
153 int setcontext(in ucontext_t*);
154 int swapcontext(ucontext_t*, in ucontext_t*);
155 }