Reactos
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6#ifndef _INC_PROCESS
7#define _INC_PROCESS
8
9#include <corecrt.h>
10
11/* Includes a definition of _pid_t and pid_t */
12#include <sys/types.h>
13
14#ifndef _POSIX_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#define _P_WAIT 0
21#define _P_NOWAIT 1
22#define _OLD_P_OVERLAY 2
23#define _P_NOWAITO 3
24#define _P_DETACH 4
25#define _P_OVERLAY 2
26
27#define _WAIT_CHILD 0
28#define _WAIT_GRANDCHILD 1
29
30 _CRTIMP
31 uintptr_t
32 __cdecl
33 _beginthread(
34 _In_ void(__cdecl *_StartAddress) (void *),
35 _In_ unsigned _StackSize,
36 _In_opt_ void *_ArgList);
37
38 _CRTIMP void __cdecl _endthread(void);
39
40 _CRTIMP
41 uintptr_t
42 __cdecl
43 _beginthreadex(
44 _In_opt_ void *_Security,
45 _In_ unsigned _StackSize,
46 _In_ unsigned(__stdcall *_StartAddress) (void *),
47 _In_opt_ void *_ArgList,
48 _In_ unsigned _InitFlag,
49 _Out_opt_ unsigned *_ThrdAddr);
50
51 _CRTIMP void __cdecl _endthreadex(_In_ unsigned _Retval);
52
53#ifndef _CRT_TERMINATE_DEFINED
54#define _CRT_TERMINATE_DEFINED
55 __declspec(noreturn) void __cdecl exit(_In_ int _Code);
56 _CRTIMP __declspec(noreturn) void __cdecl _exit(_In_ int _Code);
57#if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */
58 /* C99 function name */
59 __declspec(noreturn) void __cdecl _Exit(int); /* Declare to get noreturn attribute. */
60 __CRT_INLINE void __cdecl _Exit(int status)
61 { _exit(status); }
62#endif
63#if __MINGW_GNUC_PREREQ(4,4)
64#pragma push_macro("abort")
65#undef abort
66#endif
67 __declspec(noreturn) void __cdecl abort(void);
68#if __MINGW_GNUC_PREREQ(4,4)
69#pragma pop_macro("abort")
70#endif
71#endif
72
73 __analysis_noreturn _CRTIMP void __cdecl _cexit(void);
74 __analysis_noreturn _CRTIMP void __cdecl _c_exit(void);
75 _CRTIMP int __cdecl _getpid(void);
76
77 _CRTIMP
78 intptr_t
79 __cdecl
80 _cwait(
81 _Out_opt_ int *_TermStat,
82 _In_ intptr_t _ProcHandle,
83 _In_ int _Action);
84
85 _CRTIMP
86 intptr_t
87 __cdecl
88 _execl(
89 _In_z_ const char *_Filename,
90 _In_z_ const char *_ArgList,
91 ...);
92
93 _CRTIMP
94 intptr_t
95 __cdecl
96 _execle(
97 _In_z_ const char *_Filename,
98 _In_z_ const char *_ArgList,
99 ...);
100
101 _CRTIMP
102 intptr_t
103 __cdecl
104 _execlp(
105 _In_z_ const char *_Filename,
106 _In_z_ const char *_ArgList,
107 ...);
108
109 _CRTIMP
110 intptr_t
111 __cdecl
112 _execlpe(
113 _In_z_ const char *_Filename,
114 _In_z_ const char *_ArgList,
115 ...);
116
117 _CRTIMP
118 intptr_t
119 __cdecl
120 _execv(
121 _In_z_ const char *_Filename,
122 _In_z_ const char *const *_ArgList);
123
124 _CRTIMP
125 intptr_t
126 __cdecl
127 _execve(
128 _In_z_ const char *_Filename,
129 _In_z_ const char *const *_ArgList,
130 _In_opt_z_ const char *const *_Env);
131
132 _CRTIMP
133 intptr_t
134 __cdecl
135 _execvp(
136 _In_z_ const char *_Filename,
137 _In_z_ const char *const *_ArgList);
138
139 _CRTIMP
140 intptr_t
141 __cdecl
142 _execvpe(
143 _In_z_ const char *_Filename,
144 _In_z_ const char *const *_ArgList,
145 _In_opt_z_ const char *const *_Env);
146
147 _CRTIMP
148 intptr_t
149 __cdecl
150 _spawnl(
151 _In_ int _Mode,
152 _In_z_ const char *_Filename,
153 _In_z_ const char *_ArgList,
154 ...);
155
156 _CRTIMP
157 intptr_t
158 __cdecl
159 _spawnle(
160 _In_ int _Mode,
161 _In_z_ const char *_Filename,
162 _In_z_ const char *_ArgList,
163 ...);
164
165 _CRTIMP
166 intptr_t
167 __cdecl
168 _spawnlp(
169 _In_ int _Mode,
170 _In_z_ const char *_Filename,
171 _In_z_ const char *_ArgList,
172 ...);
173
174 _CRTIMP
175 intptr_t
176 __cdecl
177 _spawnlpe(
178 _In_ int _Mode,
179 _In_z_ const char *_Filename,
180 _In_z_ const char *_ArgList,
181 ...);
182
183 _CRTIMP
184 intptr_t
185 __cdecl
186 _spawnv(
187 _In_ int _Mode,
188 _In_z_ const char *_Filename,
189 _In_z_ const char *const *_ArgList);
190
191 _CRTIMP
192 intptr_t
193 __cdecl
194 _spawnve(
195 _In_ int _Mode,
196 _In_z_ const char *_Filename,
197 _In_z_ const char *const *_ArgList,
198 _In_opt_z_ const char *const *_Env);
199
200 _CRTIMP
201 intptr_t
202 __cdecl
203 _spawnvp(
204 _In_ int _Mode,
205 _In_z_ const char *_Filename,
206 _In_z_ const char *const *_ArgList);
207
208 _CRTIMP
209 intptr_t
210 __cdecl
211 _spawnvpe(
212 _In_ int _Mode,
213 _In_z_ const char *_Filename,
214 _In_z_ const char *const *_ArgList,
215 _In_opt_z_ const char *const *_Env);
216
217#ifndef _CRT_SYSTEM_DEFINED
218#define _CRT_SYSTEM_DEFINED
219 int __cdecl system(_In_opt_z_ const char *_Command);
220#endif
221
222#ifndef _WPROCESS_DEFINED
223#define _WPROCESS_DEFINED
224
225 _CRTIMP
226 intptr_t
227 __cdecl
228 _wexecl(
229 _In_z_ const wchar_t *_Filename,
230 _In_z_ const wchar_t *_ArgList,
231 ...);
232
233 _CRTIMP
234 intptr_t
235 __cdecl
236 _wexecle(
237 _In_z_ const wchar_t *_Filename,
238 _In_z_ const wchar_t *_ArgList,
239 ...);
240
241 _CRTIMP
242 intptr_t
243 __cdecl
244 _wexeclp(
245 _In_z_ const wchar_t *_Filename,
246 _In_z_ const wchar_t *_ArgList,
247 ...);
248
249 _CRTIMP
250 intptr_t
251 __cdecl
252 _wexeclpe(
253 _In_z_ const wchar_t *_Filename,
254 _In_z_ const wchar_t *_ArgList,
255 ...);
256
257 _CRTIMP
258 intptr_t
259 __cdecl
260 _wexecv(
261 _In_z_ const wchar_t *_Filename,
262 _In_z_ const wchar_t *const *_ArgList);
263
264 _CRTIMP
265 intptr_t
266 __cdecl
267 _wexecve(
268 _In_z_ const wchar_t *_Filename,
269 _In_z_ const wchar_t *const *_ArgList,
270 _In_opt_z_ const wchar_t *const *_Env);
271
272 _CRTIMP
273 intptr_t
274 __cdecl
275 _wexecvp(
276 _In_z_ const wchar_t *_Filename,
277 _In_z_ const wchar_t *const *_ArgList);
278
279 _CRTIMP
280 intptr_t
281 __cdecl
282 _wexecvpe(
283 _In_z_ const wchar_t *_Filename,
284 _In_z_ const wchar_t *const *_ArgList,
285 _In_opt_z_ const wchar_t *const *_Env);
286
287 _CRTIMP
288 intptr_t
289 __cdecl
290 _wspawnl(
291 _In_ int _Mode,
292 _In_z_ const wchar_t *_Filename,
293 _In_z_ const wchar_t *_ArgList,
294 ...);
295
296 _CRTIMP
297 intptr_t
298 __cdecl
299 _wspawnle(
300 _In_ int _Mode,
301 _In_z_ const wchar_t *_Filename,
302 _In_z_ const wchar_t *_ArgList,
303 ...);
304
305 _CRTIMP
306 intptr_t
307 __cdecl
308 _wspawnlp(
309 _In_ int _Mode,
310 _In_z_ const wchar_t *_Filename,
311 _In_z_ const wchar_t *_ArgList,
312 ...);
313
314 _CRTIMP
315 intptr_t
316 __cdecl
317 _wspawnlpe(
318 _In_ int _Mode,
319 _In_z_ const wchar_t *_Filename,
320 _In_z_ const wchar_t *_ArgList,
321 ...);
322
323 _CRTIMP
324 intptr_t
325 __cdecl
326 _wspawnv(
327 _In_ int _Mode,
328 _In_z_ const wchar_t *_Filename,
329 _In_z_ const wchar_t *const *_ArgList);
330
331 _CRTIMP
332 intptr_t
333 __cdecl
334 _wspawnve(
335 _In_ int _Mode,
336 _In_z_ const wchar_t *_Filename,
337 _In_z_ const wchar_t *const *_ArgList,
338 _In_opt_z_ const wchar_t *const *_Env);
339
340 _CRTIMP
341 intptr_t
342 __cdecl
343 _wspawnvp(
344 _In_ int _Mode,
345 _In_z_ const wchar_t *_Filename,
346 _In_z_ const wchar_t *const *_ArgList);
347
348 _CRTIMP
349 intptr_t
350 __cdecl
351 _wspawnvpe(
352 _In_ int _Mode,
353 _In_z_ const wchar_t *_Filename,
354 _In_z_ const wchar_t *const *_ArgList,
355 _In_opt_z_ const wchar_t *const *_Env);
356
357#ifndef _CRT_WSYSTEM_DEFINED
358#define _CRT_WSYSTEM_DEFINED
359 _CRTIMP int __cdecl _wsystem(_In_opt_z_ const wchar_t *_Command);
360#endif /* _CRT_WSYSTEM_DEFINED */
361
362#endif /* _WPROCESS_DEFINED */
363
364 void __cdecl __security_init_cookie(void);
365#if (defined(_X86_) && !defined(__x86_64))
366 void __fastcall __security_check_cookie(uintptr_t _StackCookie);
367 __declspec(noreturn) void __cdecl __report_gsfailure(void);
368#else
369 void __cdecl __security_check_cookie(uintptr_t _StackCookie);
370 __declspec(noreturn) void __cdecl __report_gsfailure(uintptr_t _StackCookie);
371#endif
372 extern uintptr_t __security_cookie;
373
374 intptr_t __cdecl _loaddll(_In_z_ char *_Filename);
375 int __cdecl _unloaddll(_In_ intptr_t _Handle);
376 int (__cdecl *__cdecl _getdllprocaddr(_In_ intptr_t _Handle, _In_opt_z_ char *_ProcedureName, _In_ intptr_t _Ordinal))(void);
377
378#ifdef _DECL_DLLMAIN
379
380#ifdef _WIN32
381
382 WINBOOL
383 WINAPI
384 DllMain(
385 _In_ HANDLE _HDllHandle,
386 _In_ DWORD _Reason,
387 _In_opt_ LPVOID _Reserved);
388
389 WINBOOL
390 WINAPI
391 _CRT_INIT(
392 _In_ HANDLE _HDllHandle,
393 _In_ DWORD _Reason,
394 _In_opt_ LPVOID _Reserved);
395
396 WINBOOL
397 WINAPI
398 _wCRT_INIT(
399 _In_ HANDLE _HDllHandle,
400 _In_ DWORD _Reason,
401 _In_opt_ LPVOID _Reserved);
402
403 extern WINBOOL (WINAPI *const _pRawDllMain)(HANDLE,DWORD,LPVOID);
404
405#else /* _WIN32 */
406
407 int
408 __stdcall
409 DllMain(
410 _In_ void *_HDllHandle,
411 _In_ unsigned _Reason,
412 _In_opt_ void *_Reserved);
413
414 int
415 __stdcall
416 _CRT_INIT(
417 _In_ void *_HDllHandle,
418 _In_ unsigned _Reason,
419 _In_opt_ void *_Reserved);
420
421 int
422 __stdcall
423 _wCRT_INIT(
424 _In_ void *_HDllHandle,
425 _In_ unsigned _Reason,
426 _In_opt_ void *_Reserved);
427
428 extern int (__stdcall *const _pRawDllMain)(void *,unsigned,void *);
429
430#endif /* _WIN32 */
431
432#endif /* _DECL_DLLMAIN */
433
434#ifndef NO_OLDNAMES
435
436#define P_WAIT _P_WAIT
437#define P_NOWAIT _P_NOWAIT
438#define P_OVERLAY _P_OVERLAY
439#define OLD_P_OVERLAY _OLD_P_OVERLAY
440#define P_NOWAITO _P_NOWAITO
441#define P_DETACH _P_DETACH
442#define WAIT_CHILD _WAIT_CHILD
443#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
444
445 _CRTIMP
446 intptr_t
447 __cdecl
448 cwait(
449 _Out_opt_ int *_TermStat,
450 _In_ intptr_t _ProcHandle,
451 _In_ int _Action);
452
453#ifdef __GNUC__
454
455 _CRTIMP
456 int
457 __cdecl
458 execl(
459 _In_z_ const char *_Filename,
460 _In_z_ const char *_ArgList,
461 ...);
462
463 _CRTIMP
464 int
465 __cdecl
466 execle(
467 _In_z_ const char *_Filename,
468 _In_z_ const char *_ArgList,
469 ...);
470
471 _CRTIMP
472 int
473 __cdecl
474 execlp(
475 _In_z_ const char *_Filename,
476 _In_z_ const char *_ArgList,
477 ...);
478
479 _CRTIMP
480 int
481 __cdecl
482 execlpe(
483 _In_z_ const char *_Filename,
484 _In_z_ const char *_ArgList,
485 ...);
486
487#else /* __GNUC__ */
488
489 _CRTIMP
490 intptr_t
491 __cdecl
492 execl(
493 _In_z_ const char *_Filename,
494 _In_z_ const char *_ArgList,
495 ...);
496
497 _CRTIMP
498 intptr_t
499 __cdecl
500 execle(
501 _In_z_ const char *_Filename,
502 _In_z_ const char *_ArgList,
503 ...);
504
505 _CRTIMP
506 intptr_t
507 __cdecl
508 execlp(
509 _In_z_ const char *_Filename,
510 _In_z_ const char *_ArgList,
511 ...);
512
513 _CRTIMP
514 intptr_t
515 __cdecl
516 execlpe(
517 _In_z_ const char *_Filename,
518 _In_z_ const char *_ArgList,
519 ...);
520
521#endif /* __GNUC__ */
522
523 _CRTIMP
524 intptr_t
525 __cdecl
526 spawnl(
527 _In_ int,
528 _In_z_ const char *_Filename,
529 _In_z_ const char *_ArgList,
530 ...);
531
532 _CRTIMP
533 intptr_t
534 __cdecl
535 spawnle(
536 _In_ int,
537 _In_z_ const char *_Filename,
538 _In_z_ const char *_ArgList,
539 ...);
540
541 _CRTIMP
542 intptr_t
543 __cdecl
544 spawnlp(
545 _In_ int,
546 _In_z_ const char *_Filename,
547 _In_z_ const char *_ArgList,
548 ...);
549
550 _CRTIMP
551 intptr_t
552 __cdecl
553 spawnlpe(
554 _In_ int,
555 _In_z_ const char *_Filename,
556 _In_z_ const char *_ArgList,
557 ...);
558
559 _CRTIMP int __cdecl getpid(void);
560
561#ifdef __GNUC__
562
563 /* Those methods are predefined by gcc builtins to return int. So to prevent
564 stupid warnings, define them in POSIX way. This is save, because those
565 methods do not return in success case, so that the return value is not
566 really dependent to its scalar width. */
567
568 _CRTIMP
569 int
570 __cdecl
571 execv(
572 _In_z_ const char *_Filename,
573 _In_z_ char *const _ArgList[]);
574
575 _CRTIMP
576 int
577 __cdecl
578 execve(
579 _In_z_ const char *_Filename,
580 _In_z_ char *const _ArgList[],
581 _In_opt_z_ char *const _Env[]);
582
583 _CRTIMP
584 int
585 __cdecl
586 execvp(
587 _In_z_ const char *_Filename,
588 _In_z_ char *const _ArgList[]);
589
590 _CRTIMP
591 int
592 __cdecl
593 execvpe(
594 _In_z_ const char *_Filename,
595 _In_z_ char *const _ArgList[],
596 _In_opt_z_ char *const _Env[]);
597
598#else /* __GNUC__ */
599
600 _CRTIMP
601 intptr_t
602 __cdecl
603 execv(
604 _In_z_ const char *_Filename,
605 _In_z_ char *const _ArgList[]);
606
607 _CRTIMP
608 intptr_t
609 __cdecl
610 execve(
611 _In_z_ const char *_Filename,
612 _In_z_ char *const _ArgList[],
613 _In_opt_z_ char *const _Env[]);
614
615 _CRTIMP
616 intptr_t
617 __cdecl
618 execvp(
619 _In_z_ const char *_Filename,
620 _In_z_ char *const _ArgList[]);
621
622 _CRTIMP
623 intptr_t
624 __cdecl
625 execvpe(
626 _In_z_ const char *_Filename,
627 _In_z_ char *const _ArgList[],
628 _In_opt_z_ char *const _Env[]);
629
630#endif /* __GNUC__ */
631
632 _CRTIMP
633 intptr_t
634 __cdecl
635 spawnv(
636 _In_ int,
637 _In_z_ const char *_Filename,
638 _In_z_ char *const _ArgList[]);
639
640 _CRTIMP
641 intptr_t
642 __cdecl
643 spawnve(
644 _In_ int,
645 _In_z_ const char *_Filename,
646 _In_z_ char *const _ArgList[],
647 _In_opt_z_ char *const _Env[]);
648
649 _CRTIMP
650 intptr_t
651 __cdecl
652 spawnvp(
653 _In_ int,
654 _In_z_ const char *_Filename,
655 _In_z_ char *const _ArgList[]);
656
657 _CRTIMP
658 intptr_t
659 __cdecl
660 spawnvpe(
661 _In_ int,
662 _In_z_ const char *_Filename,
663 _In_z_ char *const _ArgList[],
664 _In_opt_z_ char *const _Env[]);
665
666#endif /* NO_OLDNAMES */
667
668#ifdef __cplusplus
669}
670#endif
671
672#endif /* _POSIX_ */
673
674#endif /* _INC_PROCESS */