78ee583a772c5464c9643a726b2072d301427ced
[reactos.git] / reactos / include / internal / ps.h
1 #ifndef __INCLUDE_INTERNAL_PSMGR_H
2 #define __INCLUDE_INTERNAL_PSMGR_H
3
4 #include <internal/hal.h>
5
6 extern HANDLE SystemProcessHandle;
7
8 /* ntoskrnl/ps/thread.c */
9 extern PETHREAD CurrentThread;
10
11 VOID PiInitProcessManager(VOID);
12 VOID PiShutdownProcessManager(VOID);
13 VOID PsInitThreadManagment(VOID);
14 VOID PsInitProcessManagment(VOID);
15 VOID PsInitIdleThread(VOID);
16 VOID PsDispatchThread(ULONG NewThreadStatus);
17 VOID PsDispatchThreadNoLock(ULONG NewThreadStatus);
18 VOID PiTerminateProcessThreads(PEPROCESS Process, NTSTATUS ExitStatus);
19 VOID PsTerminateOtherThread(PETHREAD Thread, NTSTATUS ExitStatus);
20 VOID PsReleaseThread(PETHREAD Thread);
21 VOID PsBeginThread(PKSTART_ROUTINE StartRoutine, PVOID StartContext);
22 VOID PsBeginThreadWithContextInternal(VOID);
23 VOID PiKillMostProcesses(VOID);
24 NTSTATUS STDCALL PiTerminateProcess(PEPROCESS Process, NTSTATUS ExitStatus);
25 ULONG PsUnfreezeThread(PETHREAD Thread, PNTSTATUS WaitStatus);
26 ULONG PsFreezeThread(PETHREAD Thread, PNTSTATUS WaitStatus,
27 UCHAR Alertable, ULONG WaitMode);
28 VOID PiInitApcManagement(VOID);
29 VOID PiDeleteThread(PVOID ObjectBody);
30 VOID PiCloseThread(PVOID ObjectBody, ULONG HandleCount);
31 VOID PsReapThreads(VOID);
32 NTSTATUS PsInitializeThread(HANDLE ProcessHandle,
33 PETHREAD* ThreadPtr,
34 PHANDLE ThreadHandle,
35 ACCESS_MASK DesiredAccess,
36 POBJECT_ATTRIBUTES ObjectAttributes);
37
38 #define THREAD_STATE_INVALID (0)
39 #define THREAD_STATE_RUNNABLE (1)
40 #define THREAD_STATE_RUNNING (2)
41 #define THREAD_STATE_SUSPENDED (3)
42 #define THREAD_STATE_FROZEN (4)
43 #define THREAD_STATE_TERMINATED_1 (5)
44 #define THREAD_STATE_TERMINATED_2 (6)
45 #define THREAD_STATE_MAX (7)
46
47
48 // Internal thread priorities, added by Phillip Susi
49 // TODO: rebalence these to make use of all priorities... the ones above 16 can not all be used right now
50
51 #define PROCESS_PRIO_IDLE 3
52 #define PROCESS_PRIO_NORMAL 8
53 #define PROCESS_PRIO_HIGH 13
54 #define PROCESS_PRIO_RT 18
55
56 /*
57 * Functions the HAL must provide
58 */
59
60 void HalInitFirstTask(PETHREAD thread);
61 NTSTATUS HalInitTask(PETHREAD thread, PKSTART_ROUTINE fn, PVOID StartContext);
62 void HalTaskSwitch(PKTHREAD thread);
63 NTSTATUS HalInitTaskWithContext(PETHREAD Thread, PCONTEXT Context);
64 NTSTATUS HalReleaseTask(PETHREAD Thread);
65 VOID PiDeleteProcess(PVOID ObjectBody);
66 VOID PsReapThreads(VOID);
67 VOID PsUnfreezeOtherThread(PETHREAD Thread);
68 VOID PsFreezeOtherThread(PETHREAD Thread);
69 VOID PsFreezeProcessThreads(PEPROCESS Process);
70 VOID PsUnfreezeProcessThreads(PEPROCESS Process);
71
72 #endif