blob: 990aec5b212dbed0ff56ad1442927bef35406aeb (
plain)
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
|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
/*++
Module Name:
include/pal/process.h
Abstract:
Miscellaneous process related functions.
Revision History:
--*/
#ifndef _PAL_PROCESS_H_
#define _PAL_PROCESS_H_
#include "pal/palinternal.h"
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
/* thread ID of thread that has initiated an ExitProcess (or TerminateProcess).
this is to make sure only one thread cleans up the PAL, and also to prevent
calls to CreateThread from succeeding once shutdown has started
[defined in process.c]
*/
extern Volatile<LONG> terminator;
// The process and session ID of this process, so we can avoid excessive calls to getpid() and getsid().
extern DWORD gPID;
extern DWORD gSID;
extern LPWSTR pAppDir;
/*++
Function:
PROCGetProcessIDFromHandle
Abstract
Return the process ID from a process handle
--*/
DWORD PROCGetProcessIDFromHandle(HANDLE hProcess);
/*++
Function:
PROCCreateInitialProcess
Abstract
Initialize all the structures for the initial process.
Parameter
lpwstrCmdLine: Command line.
lpwstrFullPath : Full path to executable
Return
TRUE: if successful
FALSE: otherwise
Notes :
This function takes ownership of lpwstrCmdLine, but not of lpwstrFullPath
--*/
BOOL PROCCreateInitialProcess(LPWSTR lpwstrCmdLine, LPWSTR lpwstrFullPath);
/*++
Function:
PROCCleanupInitialProcess
Abstract
Cleanup all the structures for the initial process.
Parameter
VOID
Return
VOID
--*/
VOID PROCCleanupInitialProcess(VOID);
#if USE_SYSV_SEMAPHORES
/*++
Function:
PROCCleanupThreadSemIds(VOID);
Abstract
Cleanup SysV semaphore ids for all threads.
(no parameters, no return value)
--*/
VOID PROCCleanupThreadSemIds(VOID);
#endif
/*++
Function:
PROCProcessLock
Abstract
Enter the critical section associated to the current process
--*/
VOID PROCProcessLock(VOID);
/*++
Function:
PROCProcessUnlock
Abstract
Leave the critical section associated to the current process
--*/
VOID PROCProcessUnlock(VOID);
/*++
Function:
PROCAbort()
Aborts the process after calling the shutdown cleanup handler. This function
should be called instead of calling abort() directly.
Does not return
--*/
PAL_NORETURN
void PROCAbort();
/*++
Function:
PROCNotifyProcessShutdown
Calls the abort handler to do any shutdown cleanup. Call be
called from the unhandled native exception handler.
(no return value)
--*/
void PROCNotifyProcessShutdown();
/*++
Function:
InitializeFlushProcessWriteBuffers
Abstract
This function initializes data structures needed for the FlushProcessWriteBuffers
Return
TRUE if it succeeded, FALSE otherwise
--*/
BOOL InitializeFlushProcessWriteBuffers();
#ifdef __cplusplus
}
#endif // __cplusplus
#endif //PAL_PROCESS_H_
|