Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 1abbfde

Browse files
ibuclawdlang-bot
authored andcommitted
core.sys.posix.sys.wait: Separate OS-specific types and flags from C runtime functions
1 parent 4dae7e0 commit 1abbfde

1 file changed

Lines changed: 112 additions & 105 deletions

File tree

src/core/sys/posix/sys/wait.d

Lines changed: 112 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -38,30 +38,96 @@ extern (C) nothrow @nogc:
3838
/*
3939
WNOHANG
4040
WUNTRACED
41+
*/
42+
43+
version (linux)
44+
{
45+
enum WNOHANG = 1;
46+
enum WUNTRACED = 2;
47+
48+
private
49+
{
50+
enum __W_CONTINUED = 0xFFFF;
51+
}
52+
}
53+
else version (Darwin)
54+
{
55+
enum WNOHANG = 1;
56+
enum WUNTRACED = 2;
57+
58+
private
59+
{
60+
enum _WSTOPPED = 0x7F; // octal 0177
61+
}
62+
}
63+
else version (FreeBSD)
64+
{
65+
enum WNOHANG = 1;
66+
enum WUNTRACED = 2;
67+
68+
private
69+
{
70+
enum _WSTOPPED = 0x7F; // octal 0177
71+
enum __W_CONTINUED = 0x13;
72+
}
73+
}
74+
else version (NetBSD)
75+
{
76+
enum WNOHANG = 1;
77+
enum WUNTRACED = 2;
78+
79+
private
80+
{
81+
enum _WSTOPPED = 0x7F; // octal 0177
82+
}
83+
}
84+
else version (OpenBSD)
85+
{
86+
enum WNOHANG = 1;
87+
enum WUNTRACED = 2;
88+
89+
private
90+
{
91+
enum _WSTOPPED = 0x7F; // octal 0177
92+
enum _WCONTINUED = 0xFFFF; // octal 0177777
93+
}
94+
}
95+
else version (DragonFlyBSD)
96+
{
97+
enum WNOHANG = 1;
98+
enum WUNTRACED = 2;
4199

100+
private
101+
{
102+
enum _WSTOPPED = 0x7F; // octal 0177
103+
}
104+
}
105+
else version (Solaris)
106+
{
107+
enum WNOHANG = 64;
108+
enum WUNTRACED = 4;
109+
}
110+
else
111+
{
112+
static assert(false, "Unsupported platform");
113+
}
114+
115+
/*
42116
WEXITSTATUS
43117
WIFCONTINUED
44118
WIFEXITED
45119
WIFSIGNALED
46120
WIFSTOPPED
47121
WSTOPSIG
48122
WTERMSIG
49-
50-
pid_t wait(int*);
51-
pid_t waitpid(pid_t, int*, int);
52123
*/
53124

54125
version (CRuntime_Glibc)
55126
{
56127
@safe pure:
57128

58-
enum WNOHANG = 1;
59-
enum WUNTRACED = 2;
60-
61129
private
62130
{
63-
enum __W_CONTINUED = 0xFFFF;
64-
65131
extern (D) int __WTERMSIG( int status ) { return status & 0x7F; }
66132
}
67133

@@ -85,14 +151,6 @@ else version (Darwin)
85151
{
86152
@safe pure:
87153

88-
enum WNOHANG = 1;
89-
enum WUNTRACED = 2;
90-
91-
private
92-
{
93-
enum _WSTOPPED = 0x7F; // octal 0177
94-
}
95-
96154
extern (D) int _WSTATUS(int status) { return (status & 0x7F); }
97155
extern (D) int WEXITSTATUS( int status ) { return (status >> 8); }
98156
extern (D) int WIFCONTINUED( int status ) { return status == 0x13; }
@@ -109,14 +167,6 @@ else version (FreeBSD)
109167
{
110168
@safe pure:
111169

112-
enum WNOHANG = 1;
113-
enum WUNTRACED = 2;
114-
115-
private
116-
{
117-
enum _WSTOPPED = 0x7F; // octal 0177
118-
}
119-
120170
extern (D) int _WSTATUS(int status) { return (status & 0x7F); }
121171
extern (D) int WEXITSTATUS( int status ) { return (status >> 8); }
122172
extern (D) int WIFCONTINUED( int status ) { return status == 0x13; }
@@ -133,14 +183,6 @@ else version (NetBSD)
133183
{
134184
@safe pure:
135185

136-
enum WNOHANG = 1;
137-
enum WUNTRACED = 2;
138-
139-
private
140-
{
141-
enum _WSTOPPED = 0x7F; // octal 0177
142-
}
143-
144186
extern (D) int _WSTATUS(int status) { return (status & 0x7F); }
145187
extern (D) int WEXITSTATUS( int status ) { return (status >> 8); }
146188
extern (D) int WIFCONTINUED( int status ) { return status == 0x13; }
@@ -157,15 +199,6 @@ else version (OpenBSD)
157199
{
158200
@safe pure:
159201

160-
enum WNOHANG = 1;
161-
enum WUNTRACED = 2;
162-
163-
private
164-
{
165-
enum _WSTOPPED = 0x7F; // octal 0177
166-
enum _WCONTINUED = 0xFFFF; // octal 0177777
167-
}
168-
169202
extern (D) int _WSTATUS(int status) { return (status & 0x7F); }
170203
extern (D) int WEXITSTATUS(int status) { return (status >> 8) & 0xFF; }
171204
extern (D) int WIFCONTINUED(int status) { return (status & _WCONTINUED) == _WCONTINUED; }
@@ -182,14 +215,6 @@ else version (DragonFlyBSD)
182215
{
183216
@safe pure:
184217

185-
enum WNOHANG = 1;
186-
enum WUNTRACED = 2;
187-
188-
private
189-
{
190-
enum _WSTOPPED = 0x7F; // octal 0177
191-
}
192-
193218
extern (D) int _WSTATUS(int status) { return (status & 0x7F); }
194219
extern (D) int WEXITSTATUS( int status ) { return (status >> 8); }
195220
extern (D) int WIFCONTINUED( int status ) { return status == 0x13; }
@@ -206,9 +231,6 @@ else version (Solaris)
206231
{
207232
@safe pure:
208233

209-
enum WNOHANG = 64;
210-
enum WUNTRACED = 4;
211-
212234
extern (D) int WEXITSTATUS(int status) { return (status >> 8) & 0xff; }
213235
extern (D) int WIFCONTINUED(int status) { return (status & 0xffff) == 0xffff; }
214236
extern (D) bool WIFEXITED(int status) { return (status & 0xff) == 0; }
@@ -220,10 +242,6 @@ else version (Solaris)
220242
else version (CRuntime_Bionic)
221243
{
222244
@safe pure:
223-
224-
enum WNOHANG = 1;
225-
enum WUNTRACED = 2;
226-
227245
extern (D) int WEXITSTATUS( int status ) { return ( status & 0xFF00 ) >> 8; }
228246
extern (D) bool WIFEXITED( int status ) { return WTERMSIG(status) == 0; }
229247
extern (D) bool WIFSIGNALED( int status ) { return WTERMSIG(status + 1) >= 2; }
@@ -234,10 +252,6 @@ else version (CRuntime_Bionic)
234252
else version (CRuntime_Musl)
235253
{
236254
@safe pure:
237-
238-
enum WNOHANG = 1;
239-
enum WUNTRACED = 2;
240-
241255
extern (D) int WEXITSTATUS( int status ) { return ( status & 0xFF00 ) >> 8; }
242256
extern (D) int WIFCONTINUED( int status ) { return status == 0xffff; }
243257
extern (D) bool WIFEXITED( int status ) { return WTERMSIG( status ) == 0; }
@@ -250,13 +264,8 @@ else version (CRuntime_UClibc)
250264
{
251265
@safe pure:
252266

253-
enum WNOHANG = 1;
254-
enum WUNTRACED = 2;
255-
256267
private
257268
{
258-
enum __W_CONTINUED = 0xFFFF;
259-
260269
extern (D) int __WTERMSIG( int status ) { return status & 0x7F; }
261270
}
262271

@@ -288,6 +297,11 @@ else
288297
static assert(false, "Unsupported platform");
289298
}
290299

300+
/*
301+
pid_t wait(int*);
302+
pid_t waitpid(pid_t, int*, int);
303+
*/
304+
291305
pid_t wait(int*);
292306
pid_t waitpid(pid_t, int*, int);
293307

@@ -306,11 +320,9 @@ enum idtype_t
306320
P_PID,
307321
P_PGID
308322
}
309-
310-
int waitid(idtype_t, id_t, siginfo_t*, int);
311323
*/
312324

313-
version (CRuntime_Glibc)
325+
version (linux)
314326
{
315327
enum WEXITED = 4;
316328
enum WSTOPPED = 2;
@@ -323,8 +335,6 @@ version (CRuntime_Glibc)
323335
P_PID,
324336
P_PGID
325337
}
326-
327-
int waitid(idtype_t, id_t, siginfo_t*, int);
328338
}
329339
else version (Darwin)
330340
{
@@ -339,8 +349,6 @@ else version (Darwin)
339349
P_PID,
340350
P_PGID
341351
}
342-
343-
int waitid(idtype_t, id_t, siginfo_t*, int);
344352
}
345353
else version (FreeBSD)
346354
{
@@ -369,8 +377,6 @@ else version (FreeBSD)
369377
P_CPUID,
370378
P_PSETID
371379
}
372-
373-
int waitid(idtype_t, id_t, siginfo_t*, int);
374380
}
375381
else version (NetBSD)
376382
{
@@ -419,50 +425,51 @@ else version (Solaris)
419425
P_CPUID, /* CPU identifier. */
420426
P_PSETID, /* Processor set identifier */
421427
}
428+
}
429+
else
430+
{
431+
static assert(false, "Unsupported platform");
432+
}
433+
434+
/*
435+
int waitid(idtype_t, id_t, siginfo_t*, int);
436+
*/
422437

438+
version (CRuntime_Glibc)
439+
{
440+
int waitid(idtype_t, id_t, siginfo_t*, int);
441+
}
442+
else version (Darwin)
443+
{
444+
int waitid(idtype_t, id_t, siginfo_t*, int);
445+
}
446+
else version (FreeBSD)
447+
{
448+
int waitid(idtype_t, id_t, siginfo_t*, int);
449+
}
450+
else version (NetBSD)
451+
{
452+
}
453+
else version (OpenBSD)
454+
{
455+
}
456+
else version (DragonFlyBSD)
457+
{
458+
}
459+
else version (Solaris)
460+
{
423461
int waitid(idtype_t, id_t, siginfo_t*, int);
424462
}
425463
else version (CRuntime_Bionic)
426464
{
427-
enum WEXITED = 4;
428-
enum WSTOPPED = 2;
429-
enum WCONTINUED = 8;
430-
enum WNOWAIT = 0x01000000;
431-
432-
alias int idtype_t;
433-
434465
int waitid(idtype_t, id_t, siginfo_t*, int);
435466
}
436467
else version (CRuntime_Musl)
437468
{
438-
enum WEXITED = 4;
439-
enum WSTOPPED = 2;
440-
enum WCONTINUED = 8;
441-
enum WNOWAIT = 0x01000000;
442-
443-
enum idtype_t
444-
{
445-
P_ALL,
446-
P_PID,
447-
P_PGID
448-
}
449-
450469
int waitid(idtype_t, id_t, siginfo_t*, int);
451470
}
452471
else version (CRuntime_UClibc)
453472
{
454-
enum WEXITED = 4;
455-
enum WSTOPPED = 2;
456-
enum WCONTINUED = 8;
457-
enum WNOWAIT = 0x01000000;
458-
459-
enum idtype_t
460-
{
461-
P_ALL,
462-
P_PID,
463-
P_PGID
464-
}
465-
466473
int waitid(idtype_t, id_t, siginfo_t*, int);
467474
}
468475
else

0 commit comments

Comments
 (0)