1 #ifndef __INCLUDE_INTERNAL_PSMGR_H
2 #define __INCLUDE_INTERNAL_PSMGR_H
4 #include <internal/hal.h>
6 extern PEPROCESS SystemProcess
;
7 extern HANDLE SystemProcessHandle
;
9 extern POBJECT_TYPE PsThreadType
;
10 extern POBJECT_TYPE PsProcessType
;
12 void PsInitThreadManagment(void);
13 VOID
PsInitProcessManagment(VOID
);
14 VOID
PsInitIdleThread(VOID
);
15 VOID
PsDispatchThread(VOID
);
16 VOID
PiTerminateProcessThreads(PEPROCESS Process
, NTSTATUS ExitStatus
);
17 VOID
PsTerminateOtherThread(PETHREAD Thread
, NTSTATUS ExitStatus
);
18 VOID
PsReleaseThread(PETHREAD Thread
);
19 VOID
PsBeginThread(PKSTART_ROUTINE StartRoutine
, PVOID StartContext
);
20 VOID
PsBeginThreadWithContextInternal(VOID
);
23 * PURPOSE: Thread states
28 * PURPOSE: Don't touch
33 * PURPOSE: Waiting to be dispatched
35 THREAD_STATE_RUNNABLE
,
38 * PURPOSE: Currently running
43 * PURPOSE: Doesn't want to run
45 THREAD_STATE_SUSPENDED
,
50 THREAD_STATE_TERMINATED
,
54 * Functions the HAL must provide
57 void HalInitFirstTask(PETHREAD thread
);
58 NTSTATUS
HalInitTask(PETHREAD thread
, PKSTART_ROUTINE fn
, PVOID StartContext
);
59 void HalTaskSwitch(PKTHREAD thread
);
60 NTSTATUS
HalInitTaskWithContext(PETHREAD Thread
, PCONTEXT Context
);
61 NTSTATUS
HalReleaseTask(PETHREAD Thread
);
62 VOID
PiDeleteProcess(PVOID ObjectBody
);