| 1 | /** | 
 
 
 
 
 | 2 | * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 | 3 | * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 
 
 
 
 | 5 | */ | 
 
 
 
 
 | 6 | #ifndef _INC_PROCESS | 
 
 
 
 
 | 7 | #define _INC_PROCESS | 
 
 
 
 
 | 8 |  | 
 
 
 
 
 | 9 | #include <crtdefs.h> | 
 
 
 
 
 | 10 | #include <corecrt_startup.h> | 
 
 
 
 
 | 11 |  | 
 
 
 
 
 | 12 | /* Includes a definition of _pid_t and pid_t */ | 
 
 
 
 
 | 13 | #include <sys/types.h> | 
 
 
 
 
 | 14 |  | 
 
 
 
 
 | 15 | #ifndef _POSIX_ | 
 
 
 
 
 | 16 | #ifdef __cplusplus | 
 
 
 
 
 | 17 | extern "C" { | 
 
 
 
 
 | 18 | #endif | 
 
 
 
 
 | 19 |  | 
 
 
 
 
 | 20 | #ifndef _P_WAIT | 
 
 
 
 
 | 21 | #define _P_WAIT 0 | 
 
 
 
 
 | 22 | #define _P_NOWAIT 1 | 
 
 
 
 
 | 23 | #define _OLD_P_OVERLAY 2 | 
 
 
 
 
 | 24 | #define _P_NOWAITO 3 | 
 
 
 
 
 | 25 | #define _P_DETACH 4 | 
 
 
 
 
 | 26 | #define _P_OVERLAY 2 | 
 
 
 
 
 | 27 |  | 
 
 
 
 
 | 28 | #define _WAIT_CHILD 0 | 
 
 
 
 
 | 29 | #define _WAIT_GRANDCHILD 1 | 
 
 
 
 
 | 30 | #endif | 
 
 
 
 
 | 31 |  | 
 
 
 
 
 | 32 | typedef void (__cdecl *_beginthread_proc_type)(void *); | 
 
 
 
 
 | 33 | typedef unsigned (__stdcall *_beginthreadex_proc_type)(void *); | 
 
 
 
 
 | 34 |  | 
 
 
 
 
 | 35 | _CRTIMP uintptr_t __cdecl _beginthread(_beginthread_proc_type _StartAddress,unsigned _StackSize,void *_ArgList); | 
 
 
 
 
 | 36 | _CRTIMP void __cdecl _endthread(void) __MINGW_ATTRIB_NORETURN; | 
 
 
 
 
 | 37 | _CRTIMP uintptr_t __cdecl _beginthreadex(void *_Security,unsigned _StackSize,_beginthreadex_proc_type _StartAddress,void *_ArgList,unsigned _InitFlag,unsigned *_ThrdAddr); | 
 
 
 
 
 | 38 | _CRTIMP void __cdecl _endthreadex(unsigned _Retval) __MINGW_ATTRIB_NORETURN; | 
 
 
 
 
 | 39 |  | 
 
 
 
 
 | 40 | #ifndef _CRT_TERMINATE_DEFINED | 
 
 
 
 
 | 41 | #define _CRT_TERMINATE_DEFINED | 
 
 
 
 
 | 42 | void __cdecl __MINGW_NOTHROW exit(int _Code) __MINGW_ATTRIB_NORETURN; | 
 
 
 
 
 | 43 | void __cdecl __MINGW_NOTHROW _exit(int _Code) __MINGW_ATTRIB_NORETURN; | 
 
 
 
 
 | 44 | #ifdef _UCRT | 
 
 
 
 
 | 45 | void __cdecl __MINGW_NOTHROW quick_exit(int _Code) __MINGW_ATTRIB_NORETURN; | 
 
 
 
 
 | 46 | #endif | 
 
 
 
 
 | 47 |  | 
 
 
 
 
 | 48 | #if !defined __NO_ISOCEXT /* extern stub in static libmingwex.a */ | 
 
 
 
 
 | 49 | /* C99 function name */ | 
 
 
 
 
 | 50 | void __cdecl _Exit(int) __MINGW_ATTRIB_NORETURN; | 
 
 
 
 
 | 51 | #ifndef __CRT__NO_INLINE | 
 
 
 
 
 | 52 | __CRT_INLINE __MINGW_ATTRIB_NORETURN void  __cdecl _Exit(int status) | 
 
 
 
 
 | 53 | {  _exit(status); } | 
 
 
 
 
 | 54 | #endif /* !__CRT__NO_INLINE */ | 
 
 
 
 
 | 55 | #endif /* Not  __NO_ISOCEXT */ | 
 
 
 
 
 | 56 |  | 
 
 
 
 
 | 57 | #pragma push_macro("abort") | 
 
 
 
 
 | 58 | #undef abort | 
 
 
 
 
 | 59 | void __cdecl __MINGW_ATTRIB_NORETURN abort(void); | 
 
 
 
 
 | 60 | #pragma pop_macro("abort") | 
 
 
 
 
 | 61 |  | 
 
 
 
 
 | 62 | #endif /* _CRT_TERMINATE_DEFINED */ | 
 
 
 
 
 | 63 |  | 
 
 
 
 
 | 64 | typedef void (__stdcall *_tls_callback_type)(void*,unsigned long,void*); | 
 
 
 
 
 | 65 | _CRTIMP void __cdecl _register_thread_local_exe_atexit_callback(_tls_callback_type callback); | 
 
 
 
 
 | 66 |  | 
 
 
 
 
 | 67 | void __cdecl __MINGW_NOTHROW _cexit(void); | 
 
 
 
 
 | 68 | void __cdecl __MINGW_NOTHROW _c_exit(void); | 
 
 
 
 
 | 69 | #ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP | 
 
 
 
 
 | 70 | _CRTIMP int __cdecl _getpid(void); | 
 
 
 
 
 | 71 | _CRTIMP intptr_t __cdecl _cwait(int *_TermStat,intptr_t _ProcHandle,int _Action); | 
 
 
 
 
 | 72 | _CRTIMP intptr_t __cdecl _execl(const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 73 | _CRTIMP intptr_t __cdecl _execle(const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 74 | _CRTIMP intptr_t __cdecl _execlp(const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 75 | _CRTIMP intptr_t __cdecl _execlpe(const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 76 | _CRTIMP intptr_t __cdecl _execv(const char *_Filename,const char *const *_ArgList); | 
 
 
 
 
 | 77 | _CRTIMP intptr_t __cdecl _execve(const char *_Filename,const char *const *_ArgList,const char *const *_Env); | 
 
 
 
 
 | 78 | _CRTIMP intptr_t __cdecl _execvp(const char *_Filename,const char *const *_ArgList); | 
 
 
 
 
 | 79 | _CRTIMP intptr_t __cdecl _execvpe(const char *_Filename,const char *const *_ArgList,const char *const *_Env); | 
 
 
 
 
 | 80 | _CRTIMP intptr_t __cdecl _spawnl(int _Mode,const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 81 | _CRTIMP intptr_t __cdecl _spawnle(int _Mode,const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 82 | _CRTIMP intptr_t __cdecl _spawnlp(int _Mode,const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 83 | _CRTIMP intptr_t __cdecl _spawnlpe(int _Mode,const char *_Filename,const char *_ArgList,...); | 
 
 
 
 
 | 84 |  | 
 
 
 
 
 | 85 | #ifndef _SPAWNV_DEFINED | 
 
 
 
 
 | 86 | #define _SPAWNV_DEFINED | 
 
 
 
 
 | 87 | _CRTIMP intptr_t __cdecl _spawnv(int _Mode,const char *_Filename,const char *const *_ArgList); | 
 
 
 
 
 | 88 | _CRTIMP intptr_t __cdecl _spawnve(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env); | 
 
 
 
 
 | 89 | _CRTIMP intptr_t __cdecl _spawnvp(int _Mode,const char *_Filename,const char *const *_ArgList); | 
 
 
 
 
 | 90 | _CRTIMP intptr_t __cdecl _spawnvpe(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env); | 
 
 
 
 
 | 91 | #endif | 
 
 
 
 
 | 92 |  | 
 
 
 
 
 | 93 | #ifndef _CRT_SYSTEM_DEFINED | 
 
 
 
 
 | 94 | #define _CRT_SYSTEM_DEFINED | 
 
 
 
 
 | 95 | int __cdecl system(const char *_Command); | 
 
 
 
 
 | 96 | #endif | 
 
 
 
 
 | 97 |  | 
 
 
 
 
 | 98 | #ifndef _WEXEC_DEFINED | 
 
 
 
 
 | 99 | #define _WEXEC_DEFINED | 
 
 
 
 
 | 100 | _CRTIMP intptr_t __cdecl _wexecl(const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 101 | _CRTIMP intptr_t __cdecl _wexecle(const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 102 | _CRTIMP intptr_t __cdecl _wexeclp(const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 103 | _CRTIMP intptr_t __cdecl _wexeclpe(const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 104 | _CRTIMP intptr_t __cdecl _wexecv(const wchar_t *_Filename,const wchar_t *const *_ArgList); | 
 
 
 
 
 | 105 | _CRTIMP intptr_t __cdecl _wexecve(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); | 
 
 
 
 
 | 106 | _CRTIMP intptr_t __cdecl _wexecvp(const wchar_t *_Filename,const wchar_t *const *_ArgList); | 
 
 
 
 
 | 107 | _CRTIMP intptr_t __cdecl _wexecvpe(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); | 
 
 
 
 
 | 108 | #endif | 
 
 
 
 
 | 109 |  | 
 
 
 
 
 | 110 | #ifndef _WSPAWN_DEFINED | 
 
 
 
 
 | 111 | #define _WSPAWN_DEFINED | 
 
 
 
 
 | 112 | _CRTIMP intptr_t __cdecl _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 113 | _CRTIMP intptr_t __cdecl _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 114 | _CRTIMP intptr_t __cdecl _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 115 | _CRTIMP intptr_t __cdecl _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...); | 
 
 
 
 
 | 116 | _CRTIMP intptr_t __cdecl _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList); | 
 
 
 
 
 | 117 | _CRTIMP intptr_t __cdecl _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); | 
 
 
 
 
 | 118 | _CRTIMP intptr_t __cdecl _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList); | 
 
 
 
 
 | 119 | _CRTIMP intptr_t __cdecl _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env); | 
 
 
 
 
 | 120 | #endif | 
 
 
 
 
 | 121 |  | 
 
 
 
 
 | 122 | #ifndef _CRT_WSYSTEM_DEFINED | 
 
 
 
 
 | 123 | #define _CRT_WSYSTEM_DEFINED | 
 
 
 
 
 | 124 | _CRTIMP int __cdecl _wsystem(const wchar_t *_Command); | 
 
 
 
 
 | 125 | #endif | 
 
 
 
 
 | 126 | #endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */ | 
 
 
 
 
 | 127 |  | 
 
 
 
 
 | 128 | #ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP | 
 
 
 
 
 | 129 | intptr_t __cdecl _loaddll(char *_Filename); | 
 
 
 
 
 | 130 | int __cdecl _unloaddll(intptr_t _Handle); | 
 
 
 
 
 | 131 | int (__cdecl *__cdecl _getdllprocaddr(intptr_t _Handle,char *_ProcedureName,intptr_t _Ordinal))(void); | 
 
 
 
 
 | 132 | #endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */ | 
 
 
 
 
 | 133 |  | 
 
 
 
 
 | 134 | #ifdef _DECL_DLLMAIN | 
 
 
 
 
 | 135 | #ifdef _WINDOWS_ | 
 
 
 
 
 | 136 | WINBOOL WINAPI DllMain(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved); | 
 
 
 
 
 | 137 | WINBOOL WINAPI _CRT_INIT(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved); | 
 
 
 
 
 | 138 | WINBOOL WINAPI _wCRT_INIT(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved); | 
 
 
 
 
 | 139 | extern WINBOOL (WINAPI *const _pRawDllMain)(HANDLE,DWORD,LPVOID); | 
 
 
 
 
 | 140 | #else | 
 
 
 
 
 | 141 | int __stdcall DllMain(void *_HDllHandle,unsigned _Reason,void *_Reserved); | 
 
 
 
 
 | 142 | int __stdcall _CRT_INIT(void *_HDllHandle,unsigned _Reason,void *_Reserved); | 
 
 
 
 
 | 143 | int __stdcall _wCRT_INIT(void *_HDllHandle,unsigned _Reason,void *_Reserved); | 
 
 
 
 
 | 144 | extern int (__stdcall *const _pRawDllMain)(void *,unsigned,void *); | 
 
 
 
 
 | 145 | #endif | 
 
 
 
 
 | 146 | #endif | 
 
 
 
 
 | 147 |  | 
 
 
 
 
 | 148 | #ifndef NO_OLDNAMES | 
 
 
 
 
 | 149 | #define P_WAIT _P_WAIT | 
 
 
 
 
 | 150 | #define P_NOWAIT _P_NOWAIT | 
 
 
 
 
 | 151 | #define P_OVERLAY _P_OVERLAY | 
 
 
 
 
 | 152 | #define OLD_P_OVERLAY _OLD_P_OVERLAY | 
 
 
 
 
 | 153 | #define P_NOWAITO _P_NOWAITO | 
 
 
 
 
 | 154 | #define P_DETACH _P_DETACH | 
 
 
 
 
 | 155 | #define WAIT_CHILD _WAIT_CHILD | 
 
 
 
 
 | 156 | #define WAIT_GRANDCHILD _WAIT_GRANDCHILD | 
 
 
 
 
 | 157 |  | 
 
 
 
 
 | 158 | #if defined(_CRT_USE_WINAPI_FAMILY_DESKTOP_APP) || defined(WINSTORECOMPAT) | 
 
 
 
 
 | 159 | #ifndef _CRT_GETPID_DEFINED | 
 
 
 
 
 | 160 | #define _CRT_GETPID_DEFINED  /* Also in unistd.h */ | 
 
 
 
 
 | 161 | int __cdecl getpid(void) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 162 | #endif | 
 
 
 
 
 | 163 | #endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP || WINSTORECOMPAT */ | 
 
 
 
 
 | 164 | #ifdef _CRT_USE_WINAPI_FAMILY_DESKTOP_APP | 
 
 
 
 
 | 165 | intptr_t __cdecl cwait(int *_TermStat,intptr_t _ProcHandle,int _Action) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 166 | #ifdef __GNUC__ | 
 
 
 
 
 | 167 | int __cdecl execl(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 168 | int __cdecl execle(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 169 | int __cdecl execlp(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 170 | int __cdecl execlpe(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 171 | #else | 
 
 
 
 
 | 172 | intptr_t __cdecl execl(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 173 | intptr_t __cdecl execle(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 174 | intptr_t __cdecl execlp(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 175 | intptr_t __cdecl execlpe(const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 176 | #endif | 
 
 
 
 
 | 177 | intptr_t __cdecl spawnl(int,const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 178 | intptr_t __cdecl spawnle(int,const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 179 | intptr_t __cdecl spawnlp(int,const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 180 | intptr_t __cdecl spawnlpe(int,const char *_Filename,const char *_ArgList,...) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 181 | #ifdef __GNUC__ | 
 
 
 
 
 | 182 | /* Those methods are predefined by gcc builtins to return int. So to prevent | 
 
 
 
 
 | 183 | stupid warnings, define them in POSIX way.  This is save, because those | 
 
 
 
 
 | 184 | methods do not return in success case, so that the return value is not | 
 
 
 
 
 | 185 | really dependent to its scalar width.  */ | 
 
 
 
 
 | 186 | _CRTIMP int __cdecl execv(const char *_Filename,char *const _ArgList[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 187 | _CRTIMP int __cdecl execve(const char *_Filename,char *const _ArgList[],char *const _Env[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 188 | _CRTIMP int __cdecl execvp(const char *_Filename,char *const _ArgList[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 189 | _CRTIMP int __cdecl execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 190 | #else | 
 
 
 
 
 | 191 | _CRTIMP intptr_t __cdecl execv(const char *_Filename,char *const _ArgList[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 192 | _CRTIMP intptr_t __cdecl execve(const char *_Filename,char *const _ArgList[],char *const _Env[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 193 | _CRTIMP intptr_t __cdecl execvp(const char *_Filename,char *const _ArgList[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 194 | _CRTIMP intptr_t __cdecl execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 195 | #endif | 
 
 
 
 
 | 196 | _CRTIMP intptr_t __cdecl spawnv(int,const char *_Filename,char *const _ArgList[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 197 | _CRTIMP intptr_t __cdecl spawnve(int,const char *_Filename,char *const _ArgList[],char *const _Env[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 198 | _CRTIMP intptr_t __cdecl spawnvp(int,const char *_Filename,char *const _ArgList[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 199 | _CRTIMP intptr_t __cdecl spawnvpe(int,const char *_Filename,char *const _ArgList[],char *const _Env[]) __MINGW_ATTRIB_DEPRECATED_MSVC2005; | 
 
 
 
 
 | 200 | #endif | 
 
 
 
 
 | 201 | #endif /* _CRT_USE_WINAPI_FAMILY_DESKTOP_APP */ | 
 
 
 
 
 | 202 |  | 
 
 
 
 
 | 203 | #ifdef __cplusplus | 
 
 
 
 
 | 204 | } | 
 
 
 
 
 | 205 | #endif | 
 
 
 
 
 | 206 | #endif | 
 
 
 
 
 | 207 | #endif |