win64: use new headers from mingw
This commit is contained in:
@ -1,158 +1,176 @@
|
||||
/*
|
||||
* process.h
|
||||
*
|
||||
* Function calls for spawning child processes.
|
||||
*
|
||||
* This file is part of the Mingw32 package.
|
||||
*
|
||||
* Contributors:
|
||||
* Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
|
||||
*
|
||||
* THIS SOFTWARE IS NOT COPYRIGHTED
|
||||
*
|
||||
* This source code is offered for use in the public domain. You may
|
||||
* use, modify or distribute it freely.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful but
|
||||
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
||||
* DISCLAIMED. This includes but is not limited to warranties of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Revision: 1.2 $
|
||||
* $Author: bellard $
|
||||
* $Date: 2005/04/17 13:14:29 $
|
||||
*
|
||||
/**
|
||||
* This file has no copyright assigned and is placed in the Public Domain.
|
||||
* This file is part of the w64 mingw-runtime package.
|
||||
* No warranty is given; refer to the file DISCLAIMER within this package.
|
||||
*/
|
||||
#ifndef _INC_PROCESS
|
||||
#define _INC_PROCESS
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
|
||||
#ifndef _PROCESS_H_
|
||||
#define _PROCESS_H_
|
||||
|
||||
/* All the headers include this file. */
|
||||
#include <_mingw.h>
|
||||
|
||||
/* Includes a definition of _pid_t and pid_t */
|
||||
#include <sys/types.h>
|
||||
|
||||
/*
|
||||
* Constants for cwait actions.
|
||||
* Obsolete for Win32.
|
||||
*/
|
||||
#define _WAIT_CHILD 0
|
||||
#define _WAIT_GRANDCHILD 1
|
||||
|
||||
#ifndef _NO_OLDNAMES
|
||||
#define WAIT_CHILD _WAIT_CHILD
|
||||
#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
|
||||
#endif /* Not _NO_OLDNAMES */
|
||||
|
||||
/*
|
||||
* Mode constants for spawn functions.
|
||||
*/
|
||||
#define _P_WAIT 0
|
||||
#define _P_NOWAIT 1
|
||||
#define _P_OVERLAY 2
|
||||
#define _OLD_P_OVERLAY _P_OVERLAY
|
||||
#define _P_NOWAITO 3
|
||||
#define _P_DETACH 4
|
||||
|
||||
#ifndef _NO_OLDNAMES
|
||||
#define P_WAIT _P_WAIT
|
||||
#define P_NOWAIT _P_NOWAIT
|
||||
#define P_OVERLAY _P_OVERLAY
|
||||
#define OLD_P_OVERLAY _OLD_P_OVERLAY
|
||||
#define P_NOWAITO _P_NOWAITO
|
||||
#define P_DETACH _P_DETACH
|
||||
#endif /* Not _NO_OLDNAMES */
|
||||
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
#ifdef __cplusplus
|
||||
#ifndef _POSIX_
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void _cexit(void);
|
||||
void _c_exit(void);
|
||||
#define _P_WAIT 0
|
||||
#define _P_NOWAIT 1
|
||||
#define _OLD_P_OVERLAY 2
|
||||
#define _P_NOWAITO 3
|
||||
#define _P_DETACH 4
|
||||
#define _P_OVERLAY 2
|
||||
|
||||
int _cwait (int*, _pid_t, int);
|
||||
#define _WAIT_CHILD 0
|
||||
#define _WAIT_GRANDCHILD 1
|
||||
|
||||
_pid_t _getpid(void);
|
||||
_CRTIMP uintptr_t __cdecl _beginthread(void (__cdecl *_StartAddress) (void *),unsigned _StackSize,void *_ArgList);
|
||||
_CRTIMP void __cdecl _endthread(void);
|
||||
_CRTIMP uintptr_t __cdecl _beginthreadex(void *_Security,unsigned _StackSize,unsigned (__stdcall *_StartAddress) (void *),void *_ArgList,unsigned _InitFlag,unsigned *_ThrdAddr);
|
||||
_CRTIMP void __cdecl _endthreadex(unsigned _Retval);
|
||||
|
||||
int _execl (const char*, const char*, ...);
|
||||
int _execle (const char*, const char*, ...);
|
||||
int _execlp (const char*, const char*, ...);
|
||||
int _execlpe (const char*, const char*, ...);
|
||||
int _execv (const char*, char* const*);
|
||||
int _execve (const char*, char* const*, char* const*);
|
||||
int _execvp (const char*, char* const*);
|
||||
int _execvpe (const char*, char* const*, char* const*);
|
||||
#ifndef _CRT_TERMINATE_DEFINED
|
||||
#define _CRT_TERMINATE_DEFINED
|
||||
void __cdecl __MINGW_NOTHROW exit(int _Code) __MINGW_ATTRIB_NORETURN;
|
||||
_CRTIMP void __cdecl __MINGW_NOTHROW _exit(int _Code) __MINGW_ATTRIB_NORETURN;
|
||||
|
||||
int _spawnl (int, const char*, const char*, ...);
|
||||
int _spawnle (int, const char*, const char*, ...);
|
||||
int _spawnlp (int, const char*, const char*, ...);
|
||||
int _spawnlpe (int, const char*, const char*, ...);
|
||||
int _spawnv (int, const char*, char* const*);
|
||||
int _spawnve (int, const char*, char* const*, char* const*);
|
||||
int _spawnvp (int, const char*, char* const*);
|
||||
int _spawnvpe (int, const char*, char* const*, char* const*);
|
||||
#pragma push_macro("abort")
|
||||
#undef abort
|
||||
void __cdecl __declspec(noreturn) abort(void);
|
||||
#pragma pop_macro("abort")
|
||||
|
||||
/*
|
||||
* The functions _beginthreadex and _endthreadex are not provided by CRTDLL.
|
||||
* They are provided by MSVCRT.
|
||||
*
|
||||
* NOTE: Apparently _endthread calls CloseHandle on the handle of the thread,
|
||||
* making for race conditions if you are not careful. Basically you have to
|
||||
* make sure that no-one is going to do *anything* with the thread handle
|
||||
* after the thread calls _endthread or returns from the thread function.
|
||||
*
|
||||
* NOTE: No old names for these functions. Use the underscore.
|
||||
*/
|
||||
unsigned long
|
||||
_beginthread (void (*)(void *), unsigned, void*);
|
||||
void _endthread (void);
|
||||
|
||||
#ifdef __MSVCRT__
|
||||
unsigned long
|
||||
_beginthreadex (void *, unsigned, unsigned (__stdcall *) (void *),
|
||||
void*, unsigned, unsigned*);
|
||||
void _endthreadex (unsigned);
|
||||
#endif
|
||||
|
||||
_CRTIMP void __cdecl __MINGW_NOTHROW _cexit(void);
|
||||
_CRTIMP void __cdecl __MINGW_NOTHROW _c_exit(void);
|
||||
_CRTIMP int __cdecl _getpid(void);
|
||||
_CRTIMP intptr_t __cdecl _cwait(int *_TermStat,intptr_t _ProcHandle,int _Action);
|
||||
_CRTIMP intptr_t __cdecl _execl(const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _execle(const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _execlp(const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _execlpe(const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _execv(const char *_Filename,const char *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _execve(const char *_Filename,const char *const *_ArgList,const char *const *_Env);
|
||||
_CRTIMP intptr_t __cdecl _execvp(const char *_Filename,const char *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _execvpe(const char *_Filename,const char *const *_ArgList,const char *const *_Env);
|
||||
_CRTIMP intptr_t __cdecl _spawnl(int _Mode,const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _spawnle(int _Mode,const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _spawnlp(int _Mode,const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _spawnlpe(int _Mode,const char *_Filename,const char *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _spawnv(int _Mode,const char *_Filename,const char *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _spawnve(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
|
||||
_CRTIMP intptr_t __cdecl _spawnvp(int _Mode,const char *_Filename,const char *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _spawnvpe(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
|
||||
|
||||
#ifndef _NO_OLDNAMES
|
||||
/*
|
||||
* Functions without the leading underscore, for portability. These functions
|
||||
* live in liboldnames.a.
|
||||
*/
|
||||
int cwait (int*, pid_t, int);
|
||||
pid_t getpid (void);
|
||||
int execl (const char*, const char*, ...);
|
||||
int execle (const char*, const char*, ...);
|
||||
int execlp (const char*, const char*, ...);
|
||||
int execlpe (const char*, const char*, ...);
|
||||
int execv (const char*, char* const*);
|
||||
int execve (const char*, char* const*, char* const*);
|
||||
int execvp (const char*, char* const*);
|
||||
int execvpe (const char*, char* const*, char* const*);
|
||||
int spawnl (int, const char*, const char*, ...);
|
||||
int spawnle (int, const char*, const char*, ...);
|
||||
int spawnlp (int, const char*, const char*, ...);
|
||||
int spawnlpe (int, const char*, const char*, ...);
|
||||
int spawnv (int, const char*, char* const*);
|
||||
int spawnve (int, const char*, char* const*, char* const*);
|
||||
int spawnvp (int, const char*, char* const*);
|
||||
int spawnvpe (int, const char*, char* const*, char* const*);
|
||||
#endif /* Not _NO_OLDNAMES */
|
||||
#ifndef _CRT_SYSTEM_DEFINED
|
||||
#define _CRT_SYSTEM_DEFINED
|
||||
int __cdecl system(const char *_Command);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
#ifndef _WPROCESS_DEFINED
|
||||
#define _WPROCESS_DEFINED
|
||||
_CRTIMP intptr_t __cdecl _wexecl(const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wexecle(const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wexeclp(const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wexeclpe(const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wexecv(const wchar_t *_Filename,const wchar_t *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _wexecve(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
|
||||
_CRTIMP intptr_t __cdecl _wexecvp(const wchar_t *_Filename,const wchar_t *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _wexecvpe(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
|
||||
_CRTIMP intptr_t __cdecl _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
|
||||
_CRTIMP intptr_t __cdecl _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
|
||||
_CRTIMP intptr_t __cdecl _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
|
||||
_CRTIMP intptr_t __cdecl _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
|
||||
#ifndef _CRT_WSYSTEM_DEFINED
|
||||
#define _CRT_WSYSTEM_DEFINED
|
||||
_CRTIMP int __cdecl _wsystem(const wchar_t *_Command);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void __cdecl __security_init_cookie(void);
|
||||
#if (defined(_X86_) && !defined(__x86_64))
|
||||
void __fastcall __security_check_cookie(uintptr_t _StackCookie);
|
||||
__declspec(noreturn) void __cdecl __report_gsfailure(void);
|
||||
#else
|
||||
void __cdecl __security_check_cookie(uintptr_t _StackCookie);
|
||||
__declspec(noreturn) void __cdecl __report_gsfailure(uintptr_t _StackCookie);
|
||||
#endif
|
||||
extern uintptr_t __security_cookie;
|
||||
|
||||
intptr_t __cdecl _loaddll(char *_Filename);
|
||||
int __cdecl _unloaddll(intptr_t _Handle);
|
||||
int (__cdecl *__cdecl _getdllprocaddr(intptr_t _Handle,char *_ProcedureName,intptr_t _Ordinal))(void);
|
||||
|
||||
#ifdef _DECL_DLLMAIN
|
||||
#ifdef _WINDOWS_
|
||||
WINBOOL WINAPI DllMain(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved);
|
||||
WINBOOL WINAPI _CRT_INIT(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved);
|
||||
WINBOOL WINAPI _wCRT_INIT(HANDLE _HDllHandle,DWORD _Reason,LPVOID _Reserved);
|
||||
extern WINBOOL (WINAPI *const _pRawDllMain)(HANDLE,DWORD,LPVOID);
|
||||
#else
|
||||
int __stdcall DllMain(void *_HDllHandle,unsigned _Reason,void *_Reserved);
|
||||
int __stdcall _CRT_INIT(void *_HDllHandle,unsigned _Reason,void *_Reserved);
|
||||
int __stdcall _wCRT_INIT(void *_HDllHandle,unsigned _Reason,void *_Reserved);
|
||||
extern int (__stdcall *const _pRawDllMain)(void *,unsigned,void *);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef NO_OLDNAMES
|
||||
#define P_WAIT _P_WAIT
|
||||
#define P_NOWAIT _P_NOWAIT
|
||||
#define P_OVERLAY _P_OVERLAY
|
||||
#define OLD_P_OVERLAY _OLD_P_OVERLAY
|
||||
#define P_NOWAITO _P_NOWAITO
|
||||
#define P_DETACH _P_DETACH
|
||||
#define WAIT_CHILD _WAIT_CHILD
|
||||
#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
|
||||
|
||||
intptr_t __cdecl cwait(int *_TermStat,intptr_t _ProcHandle,int _Action);
|
||||
#ifdef __GNUC__
|
||||
int __cdecl execl(const char *_Filename,const char *_ArgList,...);
|
||||
int __cdecl execle(const char *_Filename,const char *_ArgList,...);
|
||||
int __cdecl execlp(const char *_Filename,const char *_ArgList,...);
|
||||
int __cdecl execlpe(const char *_Filename,const char *_ArgList,...);
|
||||
#else
|
||||
intptr_t __cdecl execl(const char *_Filename,const char *_ArgList,...);
|
||||
intptr_t __cdecl execle(const char *_Filename,const char *_ArgList,...);
|
||||
intptr_t __cdecl execlp(const char *_Filename,const char *_ArgList,...);
|
||||
intptr_t __cdecl execlpe(const char *_Filename,const char *_ArgList,...);
|
||||
#endif
|
||||
intptr_t __cdecl spawnl(int,const char *_Filename,const char *_ArgList,...);
|
||||
intptr_t __cdecl spawnle(int,const char *_Filename,const char *_ArgList,...);
|
||||
intptr_t __cdecl spawnlp(int,const char *_Filename,const char *_ArgList,...);
|
||||
intptr_t __cdecl spawnlpe(int,const char *_Filename,const char *_ArgList,...);
|
||||
int __cdecl getpid(void);
|
||||
#ifdef __GNUC__
|
||||
/* Those methods are predefined by gcc builtins to return int. So to prevent
|
||||
stupid warnings, define them in POSIX way. This is save, because those
|
||||
methods do not return in success case, so that the return value is not
|
||||
really dependent to its scalar width. */
|
||||
int __cdecl execv(const char *_Filename,char *const _ArgList[]);
|
||||
int __cdecl execve(const char *_Filename,char *const _ArgList[],char *const _Env[]);
|
||||
int __cdecl execvp(const char *_Filename,char *const _ArgList[]);
|
||||
int __cdecl execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]);
|
||||
#else
|
||||
intptr_t __cdecl execv(const char *_Filename,char *const _ArgList[]);
|
||||
intptr_t __cdecl execve(const char *_Filename,char *const _ArgList[],char *const _Env[]);
|
||||
intptr_t __cdecl execvp(const char *_Filename,char *const _ArgList[]);
|
||||
intptr_t __cdecl execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]);
|
||||
#endif
|
||||
intptr_t __cdecl spawnv(int,const char *_Filename,char *const _ArgList[]);
|
||||
intptr_t __cdecl spawnve(int,const char *_Filename,char *const _ArgList[],char *const _Env[]);
|
||||
intptr_t __cdecl spawnvp(int,const char *_Filename,char *const _ArgList[]);
|
||||
intptr_t __cdecl spawnvpe(int,const char *_Filename,char *const _ArgList[],char *const _Env[]);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* Not RC_INVOKED */
|
||||
|
||||
#endif /* _PROCESS_H_ not defined */
|
||||
|
||||
#endif /* Not __STRICT_ANSI__ */
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user