Part 1 of <many> ntoskrnl header cleanups
[reactos.git] / reactos / ntoskrnl / include / internal / ps.h
1 #ifndef __INCLUDE_INTERNAL_PS_H
2 #define __INCLUDE_INTERNAL_PS_H
3
4 /* Forward declarations. */
5 struct _KTHREAD;
6 struct _KTRAPFRAME;
7 struct _EJOB;
8
9 #include <internal/arch/ps.h>
10
11 extern LCID PsDefaultThreadLocaleId;
12 extern LCID PsDefaultSystemLocaleId;
13 extern LIST_ENTRY PspReaperListHead;
14 extern WORK_QUEUE_ITEM PspReaperWorkItem;
15 extern BOOLEAN PspReaping;
16 extern PEPROCESS PsInitialSystemProcess;
17 extern PEPROCESS PsIdleProcess;
18 extern LIST_ENTRY PsActiveProcessHead;
19 extern FAST_MUTEX PspActiveProcessMutex;
20 extern LARGE_INTEGER ShortPsLockDelay, PsLockTimeout;
21 extern EPROCESS_QUOTA_BLOCK PspDefaultQuotaBlock;
22
23 /* Top level irp definitions. */
24 #define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
25 #define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
26 #define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
27 #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
28 #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG (0x04)
29
30 #define MAX_PROCESS_NOTIFY_ROUTINE_COUNT 8
31 #define MAX_LOAD_IMAGE_NOTIFY_ROUTINE_COUNT 8
32
33 VOID
34 NTAPI
35 PiInitDefaultLocale(VOID);
36
37 VOID
38 NTAPI
39 PiInitProcessManager(VOID);
40
41 VOID
42 NTAPI
43 PiShutdownProcessManager(VOID);
44
45 VOID
46 NTAPI
47 PsInitThreadManagment(VOID);
48
49 VOID
50 NTAPI
51 PsInitProcessManagment(VOID);
52
53 VOID
54 NTAPI
55 PsInitIdleThread(VOID);
56
57 VOID
58 NTAPI
59 PiTerminateProcessThreads(
60 PEPROCESS Process,
61 NTSTATUS ExitStatus
62 );
63
64 VOID
65 NTAPI
66 PsTerminateCurrentThread(NTSTATUS ExitStatus);
67
68 VOID
69 NTAPI
70 PsTerminateOtherThread(
71 PETHREAD Thread,
72 NTSTATUS ExitStatus
73 );
74
75 VOID
76 NTAPI
77 PsReleaseThread(PETHREAD Thread);
78
79 VOID
80 NTAPI
81 PsBeginThread(
82 PKSTART_ROUTINE StartRoutine,
83 PVOID StartContext
84 );
85
86 VOID
87 NTAPI
88 PsBeginThreadWithContextInternal(VOID);
89
90 VOID
91 NTAPI
92 PiKillMostProcesses(VOID);
93
94 NTSTATUS
95 STDCALL
96 PiTerminateProcess(
97 PEPROCESS Process,
98 NTSTATUS ExitStatus
99 );
100
101 VOID
102 NTAPI
103 PiInitApcManagement(VOID);
104
105 VOID
106 STDCALL
107 PiDeleteThread(PVOID ObjectBody);
108
109 VOID
110 NTAPI
111 PsReapThreads(VOID);
112
113 VOID
114 NTAPI
115 PsInitializeThreadReaper(VOID);
116
117 VOID
118 NTAPI
119 PsQueueThreadReap(PETHREAD Thread);
120
121 NTSTATUS
122 NTAPI
123 PsInitializeThread(
124 PEPROCESS Process,
125 PETHREAD* ThreadPtr,
126 POBJECT_ATTRIBUTES ObjectAttributes,
127 KPROCESSOR_MODE AccessMode,
128 BOOLEAN First
129 );
130
131 PACCESS_TOKEN
132 STDCALL
133 PsReferenceEffectiveToken(
134 PETHREAD Thread,
135 PTOKEN_TYPE TokenType,
136 PUCHAR b,
137 PSECURITY_IMPERSONATION_LEVEL Level
138 );
139
140 NTSTATUS
141 STDCALL
142 PsOpenTokenOfProcess(
143 HANDLE ProcessHandle,
144 PACCESS_TOKEN* Token
145 );
146
147 VOID
148 STDCALL
149 PspTerminateProcessThreads(
150 PEPROCESS Process,
151 NTSTATUS ExitStatus
152 );
153
154 NTSTATUS
155 NTAPI
156 PsSuspendThread(
157 PETHREAD Thread,
158 PULONG PreviousCount
159 );
160
161 NTSTATUS
162 NTAPI
163 PsResumeThread(
164 PETHREAD Thread,
165 PULONG PreviousCount
166 );
167
168 NTSTATUS
169 STDCALL
170 PspAssignPrimaryToken(
171 PEPROCESS Process,
172 HANDLE TokenHandle
173 );
174
175 VOID
176 STDCALL
177 PsExitSpecialApc(
178 PKAPC Apc,
179 PKNORMAL_ROUTINE *NormalRoutine,
180 PVOID *NormalContext,
181 PVOID *SystemArgument1,
182 PVOID *SystemArgument2
183 );
184
185 NTSTATUS
186 STDCALL
187 PspInitializeProcessSecurity(
188 PEPROCESS Process,
189 PEPROCESS Parent OPTIONAL
190 );
191
192 VOID
193 STDCALL
194 PspSystemThreadStartup(
195 PKSTART_ROUTINE StartRoutine,
196 PVOID StartContext
197 );
198
199 NTSTATUS
200 NTAPI
201 PsInitializeIdleOrFirstThread(
202 PEPROCESS Process,
203 PETHREAD* ThreadPtr,
204 PKSTART_ROUTINE StartRoutine,
205 KPROCESSOR_MODE AccessMode,
206 BOOLEAN First
207 );
208
209 VOID
210 STDCALL
211 PiDeleteProcess(PVOID ObjectBody);
212
213 VOID
214 STDCALL
215 PspReapRoutine(PVOID Context);
216
217 VOID
218 STDCALL
219 PspExitThread(NTSTATUS ExitStatus);
220
221 VOID
222 STDCALL
223 PspTerminateThreadByPointer(
224 PETHREAD Thread,
225 NTSTATUS ExitStatus
226 );
227
228 VOID
229 NTAPI
230 PsUnfreezeOtherThread(PETHREAD Thread);
231
232 VOID
233 NTAPI
234 PsFreezeOtherThread(PETHREAD Thread);
235
236 VOID
237 NTAPI
238 PsFreezeProcessThreads(PEPROCESS Process);
239
240 VOID
241 NTAPI
242 PsUnfreezeProcessThreads(PEPROCESS Process);
243
244 ULONG
245 NTAPI
246 PsEnumThreadsByProcess(PEPROCESS Process);
247
248 PEPROCESS
249 STDCALL
250 PsGetNextProcess(PEPROCESS OldProcess);
251
252 VOID
253 NTAPI
254 PsApplicationProcessorInit(VOID);
255
256 VOID
257 NTAPI
258 PsPrepareForApplicationProcessorInit(ULONG Id);
259
260 VOID
261 STDCALL
262 PsIdleThreadMain(PVOID Context);
263
264 VOID
265 STDCALL
266 PiSuspendThreadRundownRoutine(PKAPC Apc);
267
268 VOID
269 STDCALL
270 PiSuspendThreadKernelRoutine(
271 PKAPC Apc,
272 PKNORMAL_ROUTINE* NormalRoutine,
273 PVOID* NormalContext,
274 PVOID* SystemArgument1,
275 PVOID* SystemArguemnt2
276 );
277
278 VOID
279 STDCALL
280 PiSuspendThreadNormalRoutine(
281 PVOID NormalContext,
282 PVOID SystemArgument1,
283 PVOID SystemArgument2
284 );
285
286 VOID
287 NTAPI
288 PsInitialiseSuspendImplementation(VOID);
289
290 NTSTATUS
291 STDCALL
292 PspExitProcess(PEPROCESS Process);
293
294 VOID
295 STDCALL
296 PspDeleteProcess(PVOID ObjectBody);
297
298 VOID
299 STDCALL
300 PspDeleteThread(PVOID ObjectBody);
301
302
303 NTSTATUS
304 NTAPI
305 PsInitWin32Thread(PETHREAD Thread);
306
307 VOID
308 NTAPI
309 PsTerminateWin32Process(PEPROCESS Process);
310
311 VOID
312 NTAPI
313 PsTerminateWin32Thread(PETHREAD Thread);
314
315 VOID
316 NTAPI
317 PsInitialiseW32Call(VOID);
318
319 VOID
320 STDCALL
321 PspRunCreateThreadNotifyRoutines(
322 PETHREAD,
323 BOOLEAN
324 );
325
326 VOID
327 STDCALL
328 PspRunCreateProcessNotifyRoutines(
329 PEPROCESS,
330 BOOLEAN
331 );
332
333 VOID
334 STDCALL
335 PspRunLegoRoutine(IN PKTHREAD Thread);
336
337 VOID
338 NTAPI
339 INIT_FUNCTION
340 PsInitJobManagment(VOID);
341
342 VOID
343 STDCALL
344 PspInheritQuota(
345 PEPROCESS Process,
346 PEPROCESS ParentProcess
347 );
348
349 VOID
350 STDCALL
351 PspDestroyQuotaBlock(PEPROCESS Process);
352
353 NTSTATUS
354 STDCALL
355 PspMapSystemDll(
356 PEPROCESS Process,
357 PVOID *DllBase
358 );
359
360 NTSTATUS
361 STDCALL
362 PsLocateSystemDll(VOID);
363
364 NTSTATUS
365 STDCALL
366 PspGetSystemDllEntryPoints(VOID);
367
368 NTSTATUS
369 NTAPI
370 PsLockProcess(
371 PEPROCESS Process,
372 BOOLEAN Timeout
373 );
374
375 VOID
376 NTAPI
377 PsUnlockProcess(PEPROCESS Process);
378
379 #endif /* __INCLUDE_INTERNAL_PS_H */