1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
|
/***
*process.h - definition and declarations for process control functions
*
* Copyright (c) 1985-1993, Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file defines the modeflag values for spawnxx calls.
* Only P_WAIT and P_OVERLAY are currently implemented on MS-DOS.
* Also contains the function argument declarations for all
* process control related routines.
*
*Revision History:
* 08/24/87 JCR Added P_NOWAITO
* 10/20/87 JCR Removed "MSC40_ONLY" entries and "MSSDK_ONLY" comments
* 12-11-87 JCR Added "_loadds" functionality
* 12-18-87 JCR Added _FAR_ to declarations
* 01-11-88 JCR Added _beginthread/_endthread
* 01-15-88 JCR Got rid of _p_overlay for MTRHEAD/DLL
* 02-10-88 JCR Cleaned up white space
* 05-08-88 SKS Removed bogus comment about "DOS 4"; Added "P_DETACH"
* 08-22-88 GJF Modified to also work for the 386 (small model only)
* 09-14-88 JCR Added _cexit and _c_exit declarations
* 05-03-89 JCR Added _INTERNAL_IFSTRIP for relinc usage
* 06-08-89 JCR 386 _beginthread does NOT take a stackpointer arg
* 08-01-89 GJF Cleanup, now specific to OS/2 2.0 (i.e., 386 flat model)
* 10-30-89 GJF Fixed copyright
* 11-02-89 JCR Changed "DLL" to "_DLL"
* 11-17-89 GJF Added const attribute to appropriate arg types
* 03-01-90 GJF Added #ifndef _INC_PROCESS and #include <cruntime.h>
* stuff. Also, removed some (now) useless preprocessor
* directives.
* 03-21-90 GJF Replaced _cdecl with _CALLTYPE1 or _CALLTYPE2 in
* prototypes.
* 04-10-90 GJF Replaced remaining instances of _cdecl (with _CALLTYPE1
* or _VARTYPE1, as appropriate).
* 10-12-90 GJF Changed return type of _beginthread() to unsigned long.
* 01-17-91 GJF ANSI naming.
* 08-20-91 JCR C++ and ANSI naming
* 08-26-91 BWM Added prototypes for _loaddll, unloaddll, and
* _getdllprocaddr.
* 09-28-91 JCR ANSI names: DOSX32=prototypes, WIN32=#defines for now
* 07-22-92 GJF Deleted references to _wait for Win32.
* 08-05-92 GJF Function calling type and variable type macros.
* 08-28-92 GJF #ifdef-ed out for POSIX.
* 09-03-92 GJF Merged two changes above.
* 01-21-93 GJF Removed support for C6-386's _cdecl.
*
****/
#ifndef _INC_PROCESS
#ifndef _POSIX_
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _INTERNAL_IFSTRIP_
#include <cruntime.h>
#endif /* _INTERNAL_IFSTRIP_ */
/*
* Conditional macro definition for function calling type and variable type
* qualifiers.
*/
#if ( (_MSC_VER >= 800) && (_M_IX86 >= 300) )
/*
* Definitions for MS C8-32 (386/486) compiler
*/
#define _CRTAPI1 __cdecl
#define _CRTAPI2 __cdecl
#else
/*
* Other compilers (e.g., MIPS)
*/
#define _CRTAPI1
#define _CRTAPI2
#endif
/* modeflag values for _spawnxx routines */
#ifndef MTHREAD
extern int _CRTVAR1 _p_overlay;
#endif
#define _P_WAIT 0
#define _P_NOWAIT 1
#ifdef MTHREAD
#define _P_OVERLAY 2
#else
#define _P_OVERLAY _p_overlay
#endif
#define _OLD_P_OVERLAY 2
#define _P_NOWAITO 3
#define _P_DETACH 4
/* Action codes for _cwait(). The action code argument to _cwait is ignored
on Win32 though it is accepted for compatibilty with OS/2 */
#define _WAIT_CHILD 0
#define _WAIT_GRANDCHILD 1
/* function prototypes */
#ifdef MTHREAD
unsigned long _CRTAPI1 _beginthread (void (_CRTAPI1 *) (void *),
unsigned, void *);
void _CRTAPI1 _endthread(void);
#endif
void _CRTAPI1 abort(void);
void _CRTAPI1 _cexit(void);
void _CRTAPI1 _c_exit(void);
int _CRTAPI1 _cwait(int *, int, int);
int _CRTAPI2 _execl(const char *, const char *, ...);
int _CRTAPI2 _execle(const char *, const char *, ...);
int _CRTAPI2 _execlp(const char *, const char *, ...);
int _CRTAPI2 _execlpe(const char *, const char *, ...);
int _CRTAPI1 _execv(const char *, const char * const *);
int _CRTAPI1 _execve(const char *, const char * const *, const char * const *);
int _CRTAPI1 _execvp(const char *, const char * const *);
int _CRTAPI1 _execvpe(const char *, const char * const *, const char * const *);
void _CRTAPI1 exit(int);
void _CRTAPI1 _exit(int);
int _CRTAPI1 _getpid(void);
int _CRTAPI2 _spawnl(int, const char *, const char *, ...);
int _CRTAPI2 _spawnle(int, const char *, const char *, ...);
int _CRTAPI2 _spawnlp(int, const char *, const char *, ...);
int _CRTAPI2 _spawnlpe(int, const char *, const char *, ...);
int _CRTAPI1 _spawnv(int, const char *, const char * const *);
int _CRTAPI1 _spawnve(int, const char *, const char * const *,
const char * const *);
int _CRTAPI1 _spawnvp(int, const char *, const char * const *);
int _CRTAPI1 _spawnvpe(int, const char *, const char * const *,
const char * const *);
int _CRTAPI1 system(const char *);
#ifndef _WIN32_
int _CRTAPI1 _wait(int *);
#endif
int _CRTAPI1 _loaddll(char *);
int _CRTAPI1 _unloaddll(int);
int (_CRTAPI1 * _CRTAPI1 _getdllprocaddr(int, char *, int))();
#ifdef _DECL_DLLMAIN
/*
* Declare DLL notification (initialization/termination) routines
* The preferred method is for the user to provide DllMain() which will
* be called automatically by the DLL entry point defined by the C run-
* time library code. If the user wants to define the DLL entry point
* routine, the user's entry point must call _CRT_INIT on all types of
* notifications, as the very first thing on attach notifications and
* as the very last thing on detach notifications.
*/
#ifdef _WINDOWS_ /* Use types from WINDOWS.H */
BOOL WINAPI DllMain(HANDLE, DWORD, LPVOID);
BOOL WINAPI _CRT_INIT(HANDLE, DWORD, LPVOID);
#else
#ifdef _M_IX86
int __stdcall DllMain(void *, unsigned, void *);
int __stdcall _CRT_INIT(void *, unsigned, void *);
#else
int DllMain(void *, unsigned, void *);
int _CRT_INIT(void *, unsigned, void *);
#endif
#endif /* _WINDOWS_ */
#endif /* _DECL_DLLMAIN */
#if !__STDC__
/* Non-ANSI names for compatibility */
#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
#ifndef _DOSX32_
#define cwait _cwait
#define execl _execl
#define execle _execle
#define execlp _execlp
#define execlpe _execlpe
#define execv _execv
#define execve _execve
#define execvp _execvp
#define execvpe _execvpe
#define getpid _getpid
#define spawnl _spawnl
#define spawnle _spawnle
#define spawnlp _spawnlp
#define spawnlpe _spawnlpe
#define spawnv _spawnv
#define spawnve _spawnve
#define spawnvp _spawnvp
#define spawnvpe _spawnvpe
#ifndef _WIN32_
#define wait _wait
#endif
#else
int _CRTAPI1 cwait(int *, int, int);
int _CRTAPI2 execl(const char *, const char *, ...);
int _CRTAPI2 execle(const char *, const char *, ...);
int _CRTAPI2 execlp(const char *, const char *, ...);
int _CRTAPI2 execlpe(const char *, const char *, ...);
int _CRTAPI1 execv(const char *, const char * const *);
int _CRTAPI1 execve(const char *, const char * const *, const char * const *);
int _CRTAPI1 execvp(const char *, const char * const *);
int _CRTAPI1 execvpe(const char *, const char * const *, const char * const *);
int _CRTAPI1 getpid(void);
int _CRTAPI2 spawnl(int, const char *, const char *, ...);
int _CRTAPI2 spawnle(int, const char *, const char *, ...);
int _CRTAPI2 spawnlp(int, const char *, const char *, ...);
int _CRTAPI2 spawnlpe(int, const char *, const char *, ...);
int _CRTAPI1 spawnv(int, const char *, const char * const *);
int _CRTAPI1 spawnve(int, const char *, const char * const *,
const char * const *);
int _CRTAPI1 spawnvp(int, const char *, const char * const *);
int _CRTAPI1 spawnvpe(int, const char *, const char * const *,
const char * const *);
#ifndef _WIN32_
int _CRTAPI1 wait(int *);
#endif
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif /* _POSIX_ */
#define _INC_PROCESS
#endif /* _INC_PROCESS */
|