Author: ion
Date: Thu Jul 20 20:26:10 2006
New Revision: 23194
URL:
http://svn.reactos.org/svn/reactos?rev=23194&view=rev
Log:
- Move a bunch of externs to ps.h and delete many dupped/tripped ones.
- Change FAST_MUTEX PsActiveProcessMutex to KGUARDED_MUTEX.
- Define PS Flags and use them, isntead of magic numbers. (For magic mushrooms, you'll
have to wait a while, these aren't implemented yet).
Modified:
trunk/reactos/include/ndk/pstypes.h
trunk/reactos/ntoskrnl/include/internal/dbgk.h
trunk/reactos/ntoskrnl/include/internal/ps.h
trunk/reactos/ntoskrnl/ps/idle.c
trunk/reactos/ntoskrnl/ps/kill.c
trunk/reactos/ntoskrnl/ps/process.c
trunk/reactos/ntoskrnl/ps/psmgr.c
trunk/reactos/ntoskrnl/ps/thread.c
Modified: trunk/reactos/include/ndk/pstypes.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ndk/pstypes.h?rev=…
==============================================================================
--- trunk/reactos/include/ndk/pstypes.h (original)
+++ trunk/reactos/include/ndk/pstypes.h Thu Jul 20 20:26:10 2006
@@ -179,6 +179,37 @@
#define STA_LPC_EXIT_THREAD_CALLED_BIT 0x2
#define STA_ADDRESS_SPACE_OWNER_BIT 0x4
#endif
+
+//
+// Process Flags
+//
+#define PSF_CREATE_REPORTED_BIT 0x1
+#define PSF_NO_DEBUG_INHERIT_BIT 0x2
+#define PSF_PROCESS_EXITING_BIT 0x4
+#define PSF_PROCESS_DELETE_BIT 0x8
+#define PSF_WOW64_SPLIT_PAGES_BIT 0x10
+#define PSF_VM_DELETED_BIT 0x20
+#define PSF_OUTSWAP_ENABLED_BIT 0x40
+#define PSF_OUTSWAPPED_BIT 0x80
+#define PSF_FORK_FAILED_BIT 0x100
+#define PSF_WOW64_VA_SPACE_4GB_BIT 0x200
+#define PSF_ADDRESS_SPACE_INITIALIZED_BIT 0x400
+#define PSF_SET_TIMER_RESOLUTION_BIT 0x1000
+#define PSF_BREAK_ON_TERMINATION_BIT 0x2000
+#define PSF_SESSION_CREATION_UNDERWAY_BIT 0x4000
+#define PSF_WRITE_WATCH_BIT 0x8000
+#define PSF_PROCESS_IN_SESSION_BIT 0x10000
+#define PSF_OVERRIDE_ADDRESS_SPACE_BIT 0x20000
+#define PSF_HAS_ADDRESS_SPACE_BIT 0x40000
+#define PSF_LAUNCH_PREFETCHED_BIT 0x80000
+#define PSF_INJECT_INPAGE_ERRORS_BIT 0x100000
+#define PSF_VM_TOP_DOWN_BIT 0x200000
+#define PSF_IMAGE_NOTIFY_DONE_BIT 0x400000
+#define PSF_PDE_UPDATE_NEEDED_BIT 0x800000
+#define PSF_VDM_ALLOWED_BIT 0x1000000
+#define PSF_SWAP_ALLOWED_BIT 0x2000000
+#define PSF_CREATE_FAILED_BIT 0x4000000
+#define PSF_DEFAULT_IO_PRIORITY_BIT 0x8000000
#ifdef NTOS_MODE_USER
//
Modified: trunk/reactos/ntoskrnl/include/internal/dbgk.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/dbgk.h (original)
+++ trunk/reactos/ntoskrnl/include/internal/dbgk.h Thu Jul 20 20:26:10 2006
@@ -20,6 +20,7 @@
IN PEPROCESS Parent
);
+extern POBJECT_TYPE DbgkDebugObjectType;
#endif
/* EOF */
Modified: trunk/reactos/ntoskrnl/include/internal/ps.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/ps.h (original)
+++ trunk/reactos/ntoskrnl/include/internal/ps.h Thu Jul 20 20:26:10 2006
@@ -390,9 +390,10 @@
extern PEPROCESS PsInitialSystemProcess;
extern PEPROCESS PsIdleProcess;
extern LIST_ENTRY PsActiveProcessHead;
-extern FAST_MUTEX PspActiveProcessMutex;
+extern KGUARDED_MUTEX PspActiveProcessMutex;
extern LARGE_INTEGER ShortPsLockDelay, PsLockTimeout;
extern EPROCESS_QUOTA_BLOCK PspDefaultQuotaBlock;
+extern PHANDLE_TABLE PspCidTable;
extern PCREATE_THREAD_NOTIFY_ROUTINE
PspThreadNotifyRoutine[PSP_MAX_CREATE_THREAD_NOTIFY];
extern PCREATE_PROCESS_NOTIFY_ROUTINE
@@ -401,6 +402,10 @@
PspLoadImageNotifyRoutine[PSP_MAX_LOAD_IMAGE_NOTIFY];
extern PLEGO_NOTIFY_ROUTINE PspLegoNotifyRoutine;
extern ULONG PspThreadNotifyRoutineCount;
+extern PKWIN32_PROCESS_CALLOUT PspW32ProcessCallout;
+extern PKWIN32_THREAD_CALLOUT PspW32ThreadCallout;
+extern PVOID PspSystemDllEntryPoint;
+extern PVOID PspSystemDllBase;
#include "ps_x.h"
Modified: trunk/reactos/ntoskrnl/ps/idle.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/idle.c?rev=231…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/idle.c (original)
+++ trunk/reactos/ntoskrnl/ps/idle.c Thu Jul 20 20:26:10 2006
@@ -17,10 +17,6 @@
#if defined (ALLOC_PRAGMA)
#pragma alloc_text(INIT, PsInitIdleThread)
#endif
-
-/* GLOBALS *******************************************************************/
-
-extern PEPROCESS PsIdleProcess;
/* FUNCTIONS *****************************************************************/
Modified: trunk/reactos/ntoskrnl/ps/kill.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/kill.c?rev=231…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/kill.c (original)
+++ trunk/reactos/ntoskrnl/ps/kill.c Thu Jul 20 20:26:10 2006
@@ -18,13 +18,6 @@
LIST_ENTRY PspReaperListHead = {0};
WORK_QUEUE_ITEM PspReaperWorkItem;
-extern LIST_ENTRY PsActiveProcessHead;
-extern FAST_MUTEX PspActiveProcessMutex;
-extern PHANDLE_TABLE PspCidTable;
-extern PKWIN32_PROCESS_CALLOUT PspW32ProcessCallout;
-extern PKWIN32_THREAD_CALLOUT PspW32ThreadCallout;
-extern PEPROCESS PsInitialSystemProcess;
-extern PEPROCESS PsIdleProcess;
/* PRIVATE FUNCTIONS *********************************************************/
@@ -45,7 +38,7 @@
}
/* Set the delete flag */
- InterlockedOr((PLONG)&Process->Flags, 8);
+ InterlockedOr((PLONG)&Process->Flags, PSF_PROCESS_DELETE_BIT);
/* Get the first thread */
Thread = PsGetNextProcessThread(Process, Thread);
@@ -147,9 +140,9 @@
if (Process->ActiveProcessLinks.Flink)
{
/* Remove it from the Active List */
- ExAcquireFastMutex(&PspActiveProcessMutex);
+ KeAcquireGuardedMutex(&PspActiveProcessMutex);
RemoveEntryList(&Process->ActiveProcessLinks);
- ExReleaseFastMutex(&PspActiveProcessMutex);
+ KeReleaseGuardedMutex(&PspActiveProcessMutex);
}
/* Check for Auditing information */
@@ -401,7 +394,7 @@
if (!(--CurrentProcess->ActiveThreads))
{
/* Set the delete flag */
- InterlockedOr((PLONG)&CurrentProcess->Flags, 8);
+ InterlockedOr((PLONG)&CurrentProcess->Flags, PSF_PROCESS_DELETE_BIT);
/* Remember we are last */
Last = TRUE;
@@ -820,7 +813,7 @@
ASSERT_IRQL(PASSIVE_LEVEL);
/* Mark it as terminated */
- InterlockedOr((PLONG)&Thread->CrossThreadFlags, 1);
+ InterlockedOr((PLONG)&Thread->CrossThreadFlags, CT_TERMINATED_BIT);
/* Directly terminate the thread */
PspExitThread(ExitStatus);
@@ -878,8 +871,8 @@
ULONG Actual;
PAGED_CODE();
- /* Set Process Delete flag */
- InterlockedOr((PLONG)&Process->Flags, 4);
+ /* Set Process Exit flag */
+ InterlockedOr((PLONG)&Process->Flags, PSF_PROCESS_EXITING_BIT);
/* Check if we are the last thread */
if (LastThread)
@@ -992,8 +985,9 @@
/* Lock the Process */
ExAcquireRundownProtection(&Process->RundownProtect);
- /* Set the exit flag */
- if (!KillByHandle) InterlockedOr((PLONG)&Process->Flags, 8);
+ /* Set the delete flag */
+ if (!KillByHandle) InterlockedOr((PLONG)&Process->Flags,
+ PSF_PROCESS_DELETE_BIT);
/* Get the first thread */
Status = STATUS_NOTHING_TO_TERMINATE;
Modified: trunk/reactos/ntoskrnl/ps/process.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/process.c?rev=…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/process.c (original)
+++ trunk/reactos/ntoskrnl/ps/process.c Thu Jul 20 20:26:10 2006
@@ -18,14 +18,12 @@
PEPROCESS PsInitialSystemProcess = NULL;
PEPROCESS PsIdleProcess = NULL;
POBJECT_TYPE PsProcessType = NULL;
-extern PHANDLE_TABLE PspCidTable;
-extern POBJECT_TYPE DbgkDebugObjectType;
EPROCESS_QUOTA_BLOCK PspDefaultQuotaBlock;
ULONG PsMinimumWorkingSet, PsMaximumWorkingSet;
LIST_ENTRY PsActiveProcessHead;
-FAST_MUTEX PspActiveProcessMutex;
+KGUARDED_MUTEX PspActiveProcessMutex;
#if 1
LARGE_INTEGER ShortPsLockDelay, PsLockTimeout;
@@ -182,7 +180,7 @@
PAGED_CODE();
/* Acquire the Active Process Lock */
- ExAcquireFastMutex(&PspActiveProcessMutex);
+ KeAcquireGuardedMutex(&PspActiveProcessMutex);
/* Check if we're already starting somewhere */
if (OldProcess)
@@ -209,7 +207,7 @@
}
/* Release the lock */
- ExReleaseFastMutex(&PspActiveProcessMutex);
+ KeReleaseGuardedMutex(&PspActiveProcessMutex);
/* Reference the Process we had referenced earlier */
if (OldProcess) ObDereferenceObject(OldProcess);
@@ -396,7 +394,7 @@
if (Flags & PS_NO_DEBUG_INHERIT)
{
/* Set the process flag */
- InterlockedOr((PLONG)&Process->Flags, 2);
+ InterlockedOr((PLONG)&Process->Flags, PSF_NO_DEBUG_INHERIT_BIT);
}
}
else
@@ -444,7 +442,7 @@
&DirectoryTableBase);
/* We now have an address space */
- InterlockedOr((PLONG)&Process->Flags, 0x40000);
+ InterlockedOr((PLONG)&Process->Flags, PSF_HAS_ADDRESS_SPACE_BIT);
/* Set the maximum WS */
Process->Vm.MaximumWorkingSetSize = MaxWs;
@@ -524,9 +522,9 @@
}
/* The process can now be activated */
- ExAcquireFastMutex(&PspActiveProcessMutex);
+ KeAcquireGuardedMutex(&PspActiveProcessMutex);
InsertTailList(&PsActiveProcessHead, &Process->ActiveProcessLinks);
- ExReleaseFastMutex(&PspActiveProcessMutex);
+ KeReleaseGuardedMutex(&PspActiveProcessMutex);
/* FIXME: SeCreateAccessStateEx */
Modified: trunk/reactos/ntoskrnl/ps/psmgr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/psmgr.c?rev=23…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/psmgr.c (original)
+++ trunk/reactos/ntoskrnl/ps/psmgr.c Thu Jul 20 20:26:10 2006
@@ -157,7 +157,7 @@
ObCreateObjectType(&Name, &ObjectTypeInitializer, NULL, &PsProcessType);
InitializeListHead(&PsActiveProcessHead);
- ExInitializeFastMutex(&PspActiveProcessMutex);
+ KeInitializeGuardedMutex(&PspActiveProcessMutex);
/*
* Initialize the default quota block.
Modified: trunk/reactos/ntoskrnl/ps/thread.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ps/thread.c?rev=2…
==============================================================================
--- trunk/reactos/ntoskrnl/ps/thread.c (original)
+++ trunk/reactos/ntoskrnl/ps/thread.c Thu Jul 20 20:26:10 2006
@@ -15,9 +15,6 @@
/* GLOBALS ******************************************************************/
-extern PVOID PspSystemDllEntryPoint;
-extern PVOID PspSystemDllBase;
-extern PHANDLE_TABLE PspCidTable;
extern BOOLEAN CcPfEnablePrefetcher;
extern ULONG MmReadClusterSize;
POBJECT_TYPE PsThreadType = NULL;