1999-01-16 21:03:00 +00:00
|
|
|
#ifndef __INCLUDE_INTERNAL_PSMGR_H
|
|
|
|
#define __INCLUDE_INTERNAL_PSMGR_H
|
|
|
|
|
|
|
|
#include <internal/hal.h>
|
|
|
|
|
|
|
|
extern PEPROCESS SystemProcess;
|
|
|
|
extern HANDLE SystemProcessHandle;
|
|
|
|
|
1999-06-24 22:40:06 +00:00
|
|
|
/* ntoskrnl/ps/thread.c */
|
|
|
|
extern POBJECT_TYPE PsThreadType;
|
|
|
|
extern POBJECT_TYPE PsProcessType;
|
|
|
|
extern PETHREAD CurrentThread;
|
1999-01-16 21:03:00 +00:00
|
|
|
|
1999-11-24 11:51:55 +00:00
|
|
|
VOID PiInitProcessManager(VOID);
|
|
|
|
VOID PiShutdownProcessManager(VOID);
|
1999-11-02 08:55:45 +00:00
|
|
|
VOID PsInitThreadManagment(VOID);
|
1999-01-16 21:03:00 +00:00
|
|
|
VOID PsInitProcessManagment(VOID);
|
|
|
|
VOID PsInitIdleThread(VOID);
|
1999-11-02 08:55:45 +00:00
|
|
|
VOID PsDispatchThread(ULONG NewThreadStatus);
|
1999-12-13 22:04:41 +00:00
|
|
|
VOID PsDispatchThreadNoLock(ULONG NewThreadStatus);
|
1999-01-16 21:03:00 +00:00
|
|
|
VOID PiTerminateProcessThreads(PEPROCESS Process, NTSTATUS ExitStatus);
|
1999-03-25 00:37:06 +00:00
|
|
|
VOID PsTerminateOtherThread(PETHREAD Thread, NTSTATUS ExitStatus);
|
|
|
|
VOID PsReleaseThread(PETHREAD Thread);
|
1999-04-05 15:04:46 +00:00
|
|
|
VOID PsBeginThread(PKSTART_ROUTINE StartRoutine, PVOID StartContext);
|
|
|
|
VOID PsBeginThreadWithContextInternal(VOID);
|
1999-11-24 11:51:55 +00:00
|
|
|
VOID PiKillMostProcesses(VOID);
|
|
|
|
NTSTATUS STDCALL PiTerminateProcess(PEPROCESS Process, NTSTATUS ExitStatus);
|
1999-12-13 22:04:41 +00:00
|
|
|
ULONG PsUnfreezeThread(PETHREAD Thread, PNTSTATUS WaitStatus);
|
|
|
|
ULONG PsFreezeThread(PETHREAD Thread, PNTSTATUS WaitStatus,
|
|
|
|
UCHAR Alertable, ULONG WaitMode);
|
|
|
|
VOID PiInitApcManagement(VOID);
|
|
|
|
VOID PiDeleteThread(PVOID ObjectBody);
|
|
|
|
VOID PiCloseThread(PVOID ObjectBody, ULONG HandleCount);
|
1999-12-18 17:48:23 +00:00
|
|
|
VOID PsReapThreads(VOID);
|
1999-12-13 22:04:41 +00:00
|
|
|
NTSTATUS PsInitializeThread(HANDLE ProcessHandle,
|
|
|
|
PETHREAD* ThreadPtr,
|
|
|
|
PHANDLE ThreadHandle,
|
|
|
|
ACCESS_MASK DesiredAccess,
|
|
|
|
POBJECT_ATTRIBUTES ObjectAttributes);
|
1999-01-16 21:03:00 +00:00
|
|
|
|
1999-12-02 20:53:55 +00:00
|
|
|
#define THREAD_STATE_INVALID (0)
|
|
|
|
#define THREAD_STATE_RUNNABLE (1)
|
|
|
|
#define THREAD_STATE_RUNNING (2)
|
|
|
|
#define THREAD_STATE_SUSPENDED (3)
|
1999-12-13 22:04:41 +00:00
|
|
|
#define THREAD_STATE_FROZEN (4)
|
|
|
|
#define THREAD_STATE_TERMINATED_1 (5)
|
|
|
|
#define THREAD_STATE_TERMINATED_2 (6)
|
|
|
|
#define THREAD_STATE_MAX (7)
|
1999-12-10 22:07:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
// Internal thread priorities, added by Phillip Susi
|
|
|
|
// TODO: rebalence these to make use of all priorities... the ones above 16 can not all be used right now
|
|
|
|
|
|
|
|
#define PROCESS_PRIO_IDLE 3
|
|
|
|
#define PROCESS_PRIO_NORMAL 8
|
|
|
|
#define PROCESS_PRIO_HIGH 13
|
|
|
|
#define PROCESS_PRIO_RT 18
|
1999-01-16 21:03:00 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Functions the HAL must provide
|
|
|
|
*/
|
|
|
|
|
|
|
|
void HalInitFirstTask(PETHREAD thread);
|
1999-03-30 12:55:31 +00:00
|
|
|
NTSTATUS HalInitTask(PETHREAD thread, PKSTART_ROUTINE fn, PVOID StartContext);
|
1999-01-16 21:03:00 +00:00
|
|
|
void HalTaskSwitch(PKTHREAD thread);
|
|
|
|
NTSTATUS HalInitTaskWithContext(PETHREAD Thread, PCONTEXT Context);
|
1999-03-25 00:37:06 +00:00
|
|
|
NTSTATUS HalReleaseTask(PETHREAD Thread);
|
1999-04-01 12:39:43 +00:00
|
|
|
VOID PiDeleteProcess(PVOID ObjectBody);
|
1999-12-02 20:53:55 +00:00
|
|
|
VOID PsReapThreads(VOID);
|
1999-01-16 21:03:00 +00:00
|
|
|
|
|
|
|
#endif
|