Large partial cleanup of ntoskrnl internal headers, mostly to delete obsoleted or...
authorAlex Ionescu <aionescu@gmail.com>
Sat, 25 Jun 2005 17:01:17 +0000 (17:01 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Sat, 25 Jun 2005 17:01:17 +0000 (17:01 +0000)
svn path=/trunk/; revision=16268

61 files changed:
reactos/include/ndk/dbgktypes.h [new file with mode: 0644]
reactos/include/ndk/extypes.h
reactos/include/ndk/i386/floatsave.h
reactos/include/ndk/i386/segment.h
reactos/include/ndk/iotypes.h
reactos/include/ndk/ketypes.h
reactos/include/ndk/ldrfuncs.h
reactos/include/ndk/mmtypes.h
reactos/include/ndk/ntndk.h
reactos/include/ndk/obtypes.h
reactos/include/ndk/potypes.h
reactos/include/ndk/pstypes.h
reactos/ntoskrnl/ex/callback.c
reactos/ntoskrnl/include/internal/arch/ps.h
reactos/ntoskrnl/include/internal/asm.h [new file with mode: 0644]
reactos/ntoskrnl/include/internal/callbacks.h [deleted file]
reactos/ntoskrnl/include/internal/cc.h
reactos/ntoskrnl/include/internal/config.h [deleted file]
reactos/ntoskrnl/include/internal/dbgk.h
reactos/ntoskrnl/include/internal/ex.h
reactos/ntoskrnl/include/internal/fs.h [moved from reactos/ntoskrnl/include/internal/ifs.h with 96% similarity]
reactos/ntoskrnl/include/internal/i386/fpu.h
reactos/ntoskrnl/include/internal/i386/hal.h [deleted file]
reactos/ntoskrnl/include/internal/i386/ke.h
reactos/ntoskrnl/include/internal/i386/mm.h
reactos/ntoskrnl/include/internal/i386/ps.h [deleted file]
reactos/ntoskrnl/include/internal/i386/segment.h [deleted file]
reactos/ntoskrnl/include/internal/io.h
reactos/ntoskrnl/include/internal/kbd.h
reactos/ntoskrnl/include/internal/kd.h
reactos/ntoskrnl/include/internal/kdb.h [deleted file]
reactos/ntoskrnl/include/internal/kdbochs.h [deleted file]
reactos/ntoskrnl/include/internal/kdgdb.h [deleted file]
reactos/ntoskrnl/include/internal/ke.h
reactos/ntoskrnl/include/internal/ldr.h
reactos/ntoskrnl/include/internal/mm.h
reactos/ntoskrnl/include/internal/module.h
reactos/ntoskrnl/include/internal/nls.h
reactos/ntoskrnl/include/internal/ntoskrnl.h
reactos/ntoskrnl/include/internal/ob.h
reactos/ntoskrnl/include/internal/po.h
reactos/ntoskrnl/include/internal/pool.h [deleted file]
reactos/ntoskrnl/include/internal/port.h
reactos/ntoskrnl/include/internal/ps.h
reactos/ntoskrnl/include/internal/safe.h [deleted file]
reactos/ntoskrnl/include/internal/se.h
reactos/ntoskrnl/include/internal/tag.h
reactos/ntoskrnl/include/internal/trap.h [deleted file]
reactos/ntoskrnl/include/internal/v86m.h
reactos/ntoskrnl/include/internal/xhal.h
reactos/ntoskrnl/io/disk.c
reactos/ntoskrnl/kdbg/kdb.h
reactos/ntoskrnl/ke/i386/ctxswitch.S
reactos/ntoskrnl/ke/i386/irqhand.s
reactos/ntoskrnl/ke/i386/main.S
reactos/ntoskrnl/ke/i386/stkswitch.S
reactos/ntoskrnl/ke/i386/syscall.S
reactos/ntoskrnl/ke/i386/trap.s
reactos/ntoskrnl/ke/i386/usercall.S
reactos/ntoskrnl/ke/i386/v86m_sup.S
reactos/ntoskrnl/ob/object.c

diff --git a/reactos/include/ndk/dbgktypes.h b/reactos/include/ndk/dbgktypes.h
new file mode 100644 (file)
index 0000000..ed11397
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * PROJECT:         ReactOS Native Headers
+ * FILE:            include/ndk/dbgktypes.h
+ * PURPOSE:         Definitions for User-Mode Kernel Debugging not in DDK/IFS
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ * UPDATE HISTORY:
+ *                  Created 25/06/05
+ */
+
+#ifndef _DBGKTYPES_H
+#define _DBGKTYPES_H
+
+/* DEPENDENCIES **************************************************************/
+
+/* EXPORTED DATA *************************************************************/
+
+/* CONSTANTS *****************************************************************/
+#define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F)
+#define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001
+#define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002
+
+/* ENUMERATIONS **************************************************************/
+
+typedef enum _DEBUGOBJECTINFOCLASS
+{
+       DebugObjectUnusedInformation,
+       DebugObjectKillProcessOnExitInformation
+} DEBUGOBJECTINFOCLASS, * PDEBUGOBJECTINFOCLASS;
+
+/* TYPES *********************************************************************/
+
+typedef struct _DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION
+{
+       ULONG KillProcessOnExit;
+} DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION, *
+PDEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION;
+
+typedef struct _DBGK_DEBUG_OBJECT
+{
+    KEVENT Event;
+    FAST_MUTEX Mutex;
+    LIST_ENTRY StateEventListEntry;
+    union
+    {
+        ULONG Flags;
+        struct
+        {
+            UCHAR DebuggerInactive  :1;
+            UCHAR KillProcessOnExit :1;
+        };
+    };
+} DBGK_DEBUG_OBJECT, *PDBGK_DEBUG_OBJECT;
+
+typedef enum _DBG_STATE
+{
+    DbgIdle,
+    DbgReplyPending,
+    DbgCreateThreadStateChange,
+    DbgCreateProcessStateChange,
+    DbgExitThreadStateChange,
+    DbgExitProcessStateChange,
+    DbgExceptionStateChange,
+    DbgBreakpointStateChange,
+    DbgSingleStepStateChange,
+    DbgLoadDllStateChange,
+    DbgUnloadDllStateChange
+} DBG_STATE, *PDBG_STATE;
+
+typedef struct _DBGKM_EXCEPTION
+{
+    EXCEPTION_RECORD ExceptionRecord;
+    ULONG FirstChance;
+} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
+
+typedef struct _DBGKM_CREATE_THREAD
+{
+    ULONG SubSystemKey;
+    PVOID StartAddress;
+} DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
+
+typedef struct _DBGKM_CREATE_PROCESS
+{
+    ULONG SubSystemKey;
+    HANDLE FileHandle;
+    PVOID BaseOfImage;
+    ULONG DebugInfoFileOffset;
+    ULONG DebugInfoSize;
+    DBGKM_CREATE_THREAD InitialThread;
+} DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
+
+typedef struct _DBGKM_EXIT_THREAD
+{
+    NTSTATUS ExitStatus;
+} DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
+
+typedef struct _DBGKM_EXIT_PROCESS
+{
+    NTSTATUS ExitStatus;
+} DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
+
+typedef struct _DBGKM_LOAD_DLL
+{
+    HANDLE FileHandle;
+    PVOID BaseOfDll;
+    ULONG DebugInfoFileOffset;
+    ULONG DebugInfoSize;
+} DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
+
+typedef struct _DBGKM_UNLOAD_DLL
+{
+    PVOID BaseAddress;
+} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
+
+typedef struct _DBGUI_WAIT_STATE_CHANGE
+{
+    DBG_STATE NewState;
+    CLIENT_ID AppClientId;
+    union
+    {
+        struct
+        {
+            HANDLE HandleToThread;
+            DBGKM_CREATE_THREAD NewThread;
+        } CreateThread;
+        struct
+        {
+            HANDLE HandleToProcess;
+            HANDLE HandleToThread;
+            DBGKM_CREATE_PROCESS NewProcess;
+        } CreateProcessInfo;
+        DBGKM_EXIT_THREAD ExitThread;
+        DBGKM_EXIT_PROCESS ExitProcess;
+        DBGKM_EXCEPTION Exception;
+        DBGKM_LOAD_DLL LoadDll;
+        DBGKM_UNLOAD_DLL UnloadDll;
+    } StateInfo;
+} DBGUI_WAIT_STATE_CHANGE, * PDBGUI_WAIT_STATE_CHANGE;
+
+#endif
index 6bfee7a..478f28a 100644 (file)
@@ -21,6 +21,12 @@ extern NTOSAPI POBJECT_TYPE ExTimerType;
 /* CONSTANTS *****************************************************************/
 #define INVALID_HANDLE_VALUE (HANDLE)-1
 
+/* Callback Object Access Rights */
+#define CALLBACK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
+#define CALLBACK_EXECUTE    (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
+#define CALLBACK_WRITE      (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
+#define CALLBACK_READ       (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
+
 /* ENUMERATIONS **************************************************************/
 
 /* TYPES *********************************************************************/
@@ -57,6 +63,14 @@ typedef struct _RUNDOWN_DESCRIPTOR
     KEVENT RundownEvent;
 } RUNDOWN_DESCRIPTOR, *PRUNDOWN_DESCRIPTOR;
 
+typedef struct _CALLBACK_OBJECT
+{
+    ULONG Name;
+    KSPIN_LOCK Lock;
+    LIST_ENTRY RegisteredCallbacks;
+    ULONG AllowMultipleCallbacks;
+} CALLBACK_OBJECT , *PCALLBACK_OBJECT;
+
 typedef struct _HANDLE_TABLE_ENTRY 
 {
     union 
index 878c22e..f0f7f53 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __NAPI_I386_FLOATSAVE_H__\r
-#define __NAPI_I386_FLOATSAVE_H__\r
+#ifndef _FLOATSAVE_H_\r
+#define _FLOATSAVE_H_\r
 \r
 #define FLOAT_SAVE_CONTROL (0xFFFF037F)\r
 #define FLOAT_SAVE_STATUS  (0xFFFF0000)\r
index 0c460a8..884c528 100644 (file)
@@ -5,8 +5,10 @@
 #define KERNEL_DS            (0x10)\r
 #define USER_CS              (0x18 + 0x3)\r
 #define USER_DS              (0x20 + 0x3)\r
-#define RESERVED_FOR_TSS     (0x28)\r
+#define TSS_SELECTOR         (0x28)\r
 #define PCR_SELECTOR         (0x30)\r
 #define TEB_SELECTOR         (0x38 + 0x3)\r
+#define LDT_SELECTOR         (0x48)\r
+#define TRAP_TSS_SELECTOR    (0x50)\r
 \r
 #endif /* _ASM_SEGMENT_H */\r
index 043aad8..263a3a2 100644 (file)
@@ -11,6 +11,7 @@
 #define _IOTYPES_H
 
 /* DEPENDENCIES **************************************************************/
+#include "potypes.h"
 
 /* EXPORTED DATA *************************************************************/
 extern POBJECT_TYPE NTOSAPI IoAdapterObjectType;
@@ -20,13 +21,77 @@ extern POBJECT_TYPE NTOSAPI IoDriverObjectType;
 extern POBJECT_TYPE NTOSAPI IoFileObjectType;
 
 /* CONSTANTS *****************************************************************/
+
+/* Device Object Extension Flags */
 #define DOE_UNLOAD_PENDING    0x1
 #define DOE_DELETE_PENDING    0x2
 #define DOE_REMOVE_PENDING    0x4
 #define DOE_REMOVE_PROCESSED  0x8
 #define DOE_START_PENDING     0x10
 
+/* Device Node Flags */
+#define DNF_PROCESSED                           0x00000001
+#define DNF_STARTED                             0x00000002
+#define DNF_START_FAILED                        0x00000004
+#define DNF_ENUMERATED                          0x00000008
+#define DNF_DELETED                             0x00000010
+#define DNF_MADEUP                              0x00000020
+#define DNF_START_REQUEST_PENDING               0x00000040
+#define DNF_NO_RESOURCE_REQUIRED                0x00000080
+#define DNF_INSUFFICIENT_RESOURCES              0x00000100
+#define DNF_RESOURCE_ASSIGNED                   0x00000200
+#define DNF_RESOURCE_REPORTED                   0x00000400
+#define DNF_HAL_NODE                            0x00000800 // ???
+#define DNF_ADDED                               0x00001000
+#define DNF_ADD_FAILED                          0x00002000
+#define DNF_LEGACY_DRIVER                       0x00004000
+#define DNF_STOPPED                             0x00008000
+#define DNF_WILL_BE_REMOVED                     0x00010000
+#define DNF_NEED_TO_ENUM                        0x00020000
+#define DNF_NOT_CONFIGURED                      0x00040000
+#define DNF_REINSTALL                           0x00080000
+#define DNF_RESOURCE_REQUIREMENTS_NEED_FILTERED 0x00100000 // ???
+#define DNF_DISABLED                            0x00200000
+#define DNF_RESTART_OK                          0x00400000
+#define DNF_NEED_RESTART                        0x00800000
+#define DNF_VISITED                             0x01000000
+#define DNF_ASSIGNING_RESOURCES                 0x02000000
+#define DNF_BEEING_ENUMERATED                   0x04000000
+#define DNF_NEED_ENUMERATION_ONLY               0x08000000
+#define DNF_LOCKED                              0x10000000
+#define DNF_HAS_BOOT_CONFIG                     0x20000000
+#define DNF_BOOT_CONFIG_RESERVED                0x40000000
+#define DNF_HAS_PROBLEM                         0x80000000 // ???
+/* For UserFlags field */
+#define DNUF_DONT_SHOW_IN_UI    0x0002
+#define DNUF_NOT_DISABLEABLE    0x0008
+
 /* ENUMERATIONS **************************************************************/
+typedef enum _PNP_DEVNODE_STATE
+{
+    DeviceNodeUnspecified = 0x300,
+    DeviceNodeUninitialized = 0x301,
+    DeviceNodeInitialized = 0x302,
+    DeviceNodeDriversAdded = 0x303,
+    DeviceNodeResourcesAssigned = 0x304,
+    DeviceNodeStartPending = 0x305,
+    DeviceNodeStartCompletion = 0x306,
+    DeviceNodeStartPostWork = 0x307,
+    DeviceNodeStarted = 0x308,
+    DeviceNodeQueryStopped = 0x309,
+    DeviceNodeStopped = 0x30a,
+    DeviceNodeRestartCompletion = 0x30b,
+    DeviceNodeEnumeratePending = 0x30c,
+    DeviceNodeEnumerateCompletion = 0x30d,
+    DeviceNodeAwaitingQueuedDeletion = 0x30e,
+    DeviceNodeAwaitingQueuedRemoval = 0x30f,
+    DeviceNodeQueryRemoved = 0x310,
+    DeviceNodeRemovePendingCloses = 0x311,
+    DeviceNodeRemoved = 0x312,
+    DeviceNodeDeletePendingCloses = 0x313,
+    DeviceNodeDeleted = 0x314,
+    MaxDeviceNodeState = 0x315,
+} PNP_DEVNODE_STATE;
 
 /* TYPES *********************************************************************/
 
@@ -52,13 +117,124 @@ typedef struct _NAMED_PIPE_CREATE_PARAMETERS
 
 typedef struct _IO_TIMER 
 {
-   USHORT Type;
-   USHORT TimerEnabled;
-   LIST_ENTRY IoTimerList;
-   PIO_TIMER_ROUTINE TimerRoutine;
-   PVOID Context;
-   PDEVICE_OBJECT DeviceObject;
+    USHORT Type;
+    USHORT TimerEnabled;
+    LIST_ENTRY IoTimerList;
+    PIO_TIMER_ROUTINE TimerRoutine;
+    PVOID Context;
+    PDEVICE_OBJECT DeviceObject;
 } IO_TIMER, *PIO_TIMER;
 
+typedef struct _DEVICE_NODE
+{
+    /* A tree structure. */
+    struct _DEVICE_NODE *Parent;
+    struct _DEVICE_NODE *PrevSibling;
+    struct _DEVICE_NODE *NextSibling;
+    struct _DEVICE_NODE *Child;
+    /* The level of deepness in the tree. */
+    UINT Level;
+    PPO_DEVICE_NOTIFY Notify;
+    /* State machine. */
+    PNP_DEVNODE_STATE State;
+    PNP_DEVNODE_STATE PreviousState;
+    PNP_DEVNODE_STATE StateHistory[20];
+    UINT StateHistoryEntry;
+    /* ? */
+    INT CompletionStatus;
+    /* ? */
+    PIRP PendingIrp;
+    /* See DNF_* flags below (WinDBG documentation has WRONG values) */
+    ULONG Flags;
+    /* See DNUF_* flags below (and IRP_MN_QUERY_PNP_DEVICE_STATE) */
+    ULONG UserFlags;
+    /* See CM_PROB_* values are defined in cfg.h */
+    ULONG Problem;
+    /* Pointer to the PDO corresponding to the device node. */
+    PDEVICE_OBJECT PhysicalDeviceObject;
+    /* Resource list as assigned by the PnP arbiter. See IRP_MN_START_DEVICE
+       and ARBITER_INTERFACE (not documented in DDK, but present in headers). */
+    PCM_RESOURCE_LIST ResourceList;
+    /* Resource list as assigned by the PnP arbiter (translated version). */
+    PCM_RESOURCE_LIST ResourceListTranslated;
+    /* Instance path relative to the Enum key in registry. */
+    UNICODE_STRING InstancePath;
+    /* Name of the driver service. */
+    UNICODE_STRING ServiceName;
+    /* ? */
+    PDEVICE_OBJECT DuplicatePDO;
+    /* See IRP_MN_QUERY_RESOURCE_REQUIREMENTS. */
+    PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements;
+    /* Information about bus for bus drivers. */
+    INTERFACE_TYPE InterfaceType;
+    ULONG BusNumber;
+    /* Information about underlying bus for child devices. */
+    INTERFACE_TYPE ChildInterfaceType;
+    ULONG ChildBusNumber;
+    USHORT ChildBusTypeIndex;
+    /* ? */
+    UCHAR RemovalPolicy;
+    UCHAR HardwareRemovalPolicy;
+    LIST_ENTRY TargetDeviceNotify;
+    LIST_ENTRY DeviceArbiterList;
+    LIST_ENTRY DeviceTranslatorList;
+    USHORT NoTranslatorMask;
+    USHORT QueryTranslatorMask;
+    USHORT NoArbiterMask;
+    USHORT QueryArbiterMask;
+    union
+    {
+        struct _DEVICE_NODE *LegacyDeviceNode;
+        PDEVICE_RELATIONS PendingDeviceRelations;
+    } OverUsed1;
+    union
+    {
+        struct _DEVICE_NODE *NextResourceDeviceNode;
+    } OverUsed2;
+    /* See IRP_MN_QUERY_RESOURCES/IRP_MN_FILTER_RESOURCES. */
+    PCM_RESOURCE_LIST BootResources;
+    /* See the bitfields in DEVICE_CAPABILITIES structure. */
+    ULONG CapabilityFlags;
+    struct
+    {
+        ULONG DockStatus;
+        LIST_ENTRY ListEntry;
+        WCHAR *SerialNumber;
+    } DockInfo;
+    ULONG DisableableDepends;
+    LIST_ENTRY PendedSetInterfaceState;
+    LIST_ENTRY LegacyBusListEntry;
+    ULONG DriverUnloadRetryCount;
+    struct _DEVICE_NODE *PreviousParent;
+    ULONG DeletedChidren;
+
+    /* FIXME: Not NT's */
+    GUID BusTypeGuid;
+    ULONG Address;
+} DEVICE_NODE, *PDEVICE_NODE;
+
+typedef struct _DEVOBJ_EXTENSION
+{
+    CSHORT Type;
+    USHORT Size;
+    PDEVICE_OBJECT DeviceObject;
+    ULONG PowerFlags;
+    struct DEVICE_OBJECT_POWER_EXTENSION *Dope;
+    ULONG ExtensionFlags;
+    struct _DEVICE_NODE *DeviceNode;
+    PDEVICE_OBJECT AttachedTo;
+    LONG StartIoCount;
+    LONG StartIoKey;
+    ULONG StartIoFlags;
+    struct _VPB *Vpb;
+} DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION;
+
+typedef struct _PRIVATE_DRIVER_EXTENSIONS
+{
+    struct _PRIVATE_DRIVER_EXTENSIONS *Link;
+    PVOID ClientIdentificationAddress;
+    CHAR Extension[1];
+} PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS;
+
 #endif
 
index 680bb4c..1603e71 100644 (file)
@@ -11,6 +11,8 @@
 
 /* DEPENDENCIES **************************************************************/
 #include "haltypes.h"
+#include "potypes.h"
+#include "mmtypes.h"
 #include <arc/arc.h>
 
 /* CONSTANTS *****************************************************************/
 
 #define THREAD_WAIT_OBJECTS 4
 
-/* FIXME: Create an ASM Offset File */
-#define KTSS_ESP0      (0x4)
-#define KTSS_CR3       (0x1C)
-#define KTSS_EFLAGS    (0x24)
-#define KTSS_IOMAPBASE (0x66)
-
 /* EXPORTED DATA *************************************************************/
 extern CHAR NTOSAPI KeNumberProcessors;
 extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock;
@@ -46,13 +42,12 @@ extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
 
 typedef struct _CONFIGURATION_COMPONENT_DATA 
 {
-  struct _CONFIGURATION_COMPONENT_DATA *Parent;
-  struct _CONFIGURATION_COMPONENT_DATA *Child;
-  struct _CONFIGURATION_COMPONENT_DATA *Sibling;
-  CONFIGURATION_COMPONENT Component;
+    struct _CONFIGURATION_COMPONENT_DATA *Parent;
+    struct _CONFIGURATION_COMPONENT_DATA *Child;
+    struct _CONFIGURATION_COMPONENT_DATA *Sibling;
+    CONFIGURATION_COMPONENT Component;
 } CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
 
-
 typedef enum _KAPC_ENVIRONMENT 
 {
     OriginalApcEnvironment,
@@ -68,6 +63,48 @@ typedef struct _KDPC_DATA
     ULONG  DpcCount;
 } KDPC_DATA, *PKDPC_DATA;
 
+/* FIXME: Most of these should go to i386 directory */
+typedef struct _FNSAVE_FORMAT 
+{
+    ULONG ControlWord;
+    ULONG StatusWord;
+    ULONG TagWord;
+    ULONG ErrorOffset;
+    ULONG ErrorSelector;
+    ULONG DataOffset;
+    ULONG DataSelector;
+    UCHAR RegisterArea[80];
+} FNSAVE_FORMAT, *PFNSAVE_FORMAT;
+
+typedef struct _FXSAVE_FORMAT
+{
+    USHORT ControlWord;
+    USHORT StatusWord;
+    USHORT TagWord;
+    USHORT ErrorOpcode;
+    ULONG ErrorOffset;
+    ULONG ErrorSelector;
+    ULONG DataOffset;
+    ULONG DataSelector;
+    ULONG MXCsr;
+    ULONG MXCsrMask;
+    UCHAR RegisterArea[128];
+    UCHAR Reserved3[128];
+    UCHAR Reserved4[224];
+    UCHAR Align16Byte[8];
+} FXSAVE_FORMAT, *PFXSAVE_FORMAT;
+
+typedef struct _FX_SAVE_AREA
+{
+    union
+    {
+        FNSAVE_FORMAT FnArea;
+        FXSAVE_FORMAT FxArea;
+    } U;
+    ULONG NpxSavedCpu;
+    ULONG Cr0NpxState;
+} FX_SAVE_AREA, *PFX_SAVE_AREA;
+
 typedef struct _KTRAP_FRAME 
 {
     PVOID DebugEbp;
@@ -141,6 +178,230 @@ typedef struct _LDT_ENTRY {
   } HighWord;
 } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
 
+typedef struct _KGDTENTRY
+{
+    USHORT LimitLow;
+    USHORT BaseLow;
+    union {
+        struct {
+            UCHAR BaseMid;
+            UCHAR Flags1;
+            UCHAR Flags2;
+            UCHAR BaseHi;
+        } Bytes;
+        struct {
+            ULONG BaseMid       : 8;
+            ULONG Type          : 5;
+            ULONG Dpl           : 2;
+            ULONG Pres          : 1;
+            ULONG LimitHi       : 4;
+            ULONG Sys           : 1;
+            ULONG Reserved_0    : 1;
+            ULONG Default_Big   : 1;
+            ULONG Granularity   : 1;
+            ULONG BaseHi        : 8;
+        } Bits;
+    } HighWord;
+} KGDTENTRY, *PKGDTENTRY;
+
+typedef struct _KIDTENTRY
+{
+    USHORT Offset;
+    USHORT Selector;
+    USHORT Access;
+    USHORT ExtendedOffset;
+} KIDTENTRY, *PKIDTENTRY;
+
+typedef struct _HARDWARE_PTE_X86
+{
+    ULONG Valid             : 1;
+    ULONG Write             : 1;
+    ULONG Owner             : 1;
+    ULONG WriteThrough      : 1;
+    ULONG CacheDisable      : 1;
+    ULONG Accessed          : 1;
+    ULONG Dirty             : 1;
+    ULONG LargePage         : 1;
+    ULONG Global            : 1;
+    ULONG CopyOnWrite       : 1;
+    ULONG Prototype         : 1;
+    ULONG reserved          : 1;
+    ULONG PageFrameNumber   : 20;
+} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86;
+
+#pragma pack(push,4)
+
+/* Fixme: Use correct types? */
+typedef struct _KPROCESSOR_STATE
+{
+   PCONTEXT ContextFrame;
+   PVOID SpecialRegisters;
+} KPROCESSOR_STATE;
+
+/* Processor Control Block */
+typedef struct _KPRCB
+{
+       USHORT MinorVersion;
+    USHORT MajorVersion;
+    struct _KTHREAD *CurrentThread;
+    struct _KTHREAD *NextThread;
+    struct _KTHREAD *IdleThread;
+    UCHAR Number;
+    UCHAR Reserved;
+    USHORT BuildType;
+    ULONG SetMember;
+    UCHAR CpuType;
+    UCHAR CpuID;
+    USHORT CpuStep;
+    KPROCESSOR_STATE ProcessorState;
+    ULONG KernelReserved[16];
+    ULONG HalReserved[16];
+    UCHAR PrcbPad0[92];
+    PVOID LockQueue[33]; // Used for Queued Spinlocks
+    struct _KTHREAD *NpxThread;
+    ULONG InterruptCount;
+    ULONG KernelTime;
+    ULONG UserTime;
+    ULONG DpcTime;
+    ULONG DebugDpcTime;
+    ULONG InterruptTime;
+    ULONG AdjustDpcThreshold;
+    ULONG PageColor;
+    UCHAR SkipTick;
+    UCHAR DebuggerSavedIRQL;
+    UCHAR Spare1[6];
+    struct _KNODE *ParentNode;
+    ULONG MultiThreadProcessorSet;
+    struct _KPRCB *MultiThreadSetMaster;
+    ULONG ThreadStartCount[2];
+    ULONG CcFastReadNoWait;
+    ULONG CcFastReadWait;
+    ULONG CcFastReadNotPossible;
+    ULONG CcCopyReadNoWait;
+    ULONG CcCopyReadWait;
+    ULONG CcCopyReadNoWaitMiss;
+    ULONG KeAlignmentFixupCount;
+    ULONG KeContextSwitches;
+    ULONG KeDcacheFlushCount;
+    ULONG KeExceptionDispatchCount;
+    ULONG KeFirstLevelTbFills;
+    ULONG KeFloatingEmulationCount;
+    ULONG KeIcacheFlushCount;
+    ULONG KeSecondLevelTbFills;
+    ULONG KeSystemCalls;
+    ULONG IoReadOperationCount;
+    ULONG IoWriteOperationCount;
+    ULONG IoOtherOperationCount;
+    LARGE_INTEGER IoReadTransferCount;
+    LARGE_INTEGER IoWriteTransferCount;
+    LARGE_INTEGER IoOtherTransferCount;
+    ULONG SpareCounter1[8];
+    PP_LOOKASIDE_LIST PPLookasideList[16];
+    PP_LOOKASIDE_LIST PPNPagedLookasideList[32];
+    PP_LOOKASIDE_LIST PPPagedLookasideList[32];
+    ULONG PacketBarrier;
+    ULONG ReverseStall;
+    PVOID IpiFrame;
+    UCHAR PrcbPad2[52];
+    PVOID CurrentPacket[3];
+    ULONG TargetSet;
+    ULONG_PTR WorkerRoutine;
+    ULONG IpiFrozen;
+    UCHAR PrcbPad3[40];
+    ULONG RequestSummary;
+    struct _KPRCB *SignalDone;
+    UCHAR PrcbPad4[56];
+    struct _KDPC_DATA DpcData[2];
+    PVOID DpcStack;
+    ULONG MaximumDpcQueueDepth;
+    ULONG DpcRequestRate;
+    ULONG MinimumDpcRate;
+    UCHAR DpcInterruptRequested;
+    UCHAR DpcThreadRequested;
+    UCHAR DpcRoutineActive;
+    UCHAR DpcThreadActive;
+    ULONG PrcbLock;
+    ULONG DpcLastCount;
+    ULONG TimerHand;
+    ULONG TimerRequest;
+    PVOID DpcThread;
+    struct _KEVENT *DpcEvent;
+    UCHAR ThreadDpcEnable;
+    BOOLEAN QuantumEnd;
+    UCHAR PrcbPad50;
+    UCHAR IdleSchedule;
+    ULONG DpcSetEventRequest;
+    UCHAR PrcbPad5[18];
+    LONG TickOffset;
+    struct _KDPC* CallDpc;
+    ULONG PrcbPad7[8];
+    LIST_ENTRY WaitListHead;
+    ULONG ReadySummary;
+    ULONG SelectNextLast;
+    LIST_ENTRY DispatcherReadyListHead[32];
+    SINGLE_LIST_ENTRY DeferredReadyListHead;
+    ULONG PrcbPad72[11];
+    PVOID ChainedInterruptList;
+    LONG LookasideIrpFloat;
+    LONG MmPageFaultCount;
+    LONG MmCopyOnWriteCount;
+    LONG MmTransitionCount;
+    LONG MmCacheTransitionCount;
+    LONG MmDemandZeroCount;
+    LONG MmPageReadCount;
+    LONG MmPageReadIoCount;
+    LONG MmCacheReadCount;
+    LONG MmCacheIoCount;
+    LONG MmDirtyPagesWriteCount;
+    LONG MmDirtyWriteIoCount;
+    LONG MmMappedPagesWriteCount;
+    LONG MmMappedWriteIoCount;
+    ULONG SpareFields0[1];
+    CHAR VendorString[13];
+    UCHAR InitialApicId;
+    UCHAR LogicalProcessorsPerPhysicalProcessor;
+    ULONG MHz;
+    ULONG FeatureBits;
+    LARGE_INTEGER UpdateSignature;
+    LARGE_INTEGER IsrTime;
+    LARGE_INTEGER SpareField1;
+    FX_SAVE_AREA NpxSaveArea;
+    PROCESSOR_POWER_STATE PowerState;
+} KPRCB, *PKPRCB;
+
+/*
+ * This is the complete, internal KPCR structure
+ */
+typedef struct _KIPCR {
+  KPCR_TIB  Tib;                /* 00 */
+  struct _KPCR  *Self;          /* 1C */
+  struct _KPRCB  *Prcb;         /* 20 */
+  KIRQL  Irql;                  /* 24 */
+  ULONG  IRR;                   /* 28 */
+  ULONG  IrrActive;             /* 2C */
+  ULONG  IDR;                   /* 30 */
+  PVOID  KdVersionBlock;        /* 34 */
+  PUSHORT  IDT;                 /* 38 */
+  PUSHORT  GDT;                 /* 3C */
+  struct _KTSS  *TSS;           /* 40 */
+  USHORT  MajorVersion;         /* 44 */
+  USHORT  MinorVersion;         /* 46 */
+  KAFFINITY  SetMember;         /* 48 */
+  ULONG  StallScaleFactor;      /* 4C */
+  UCHAR  SparedUnused;          /* 50 */
+  UCHAR  Number;                /* 51 */
+  UCHAR  Reserved;              /* 52 */
+  UCHAR  L2CacheAssociativity;  /* 53 */
+  ULONG  VdmAlert;              /* 54 */
+  ULONG  KernelReserved[14];    /* 58 */
+  ULONG  L2CacheSize;           /* 90 */
+  ULONG  HalReserved[16];       /* 94 */
+  ULONG  InterruptMode;         /* D4 */
+  UCHAR  KernelReserved2[0x48]; /* D8 */
+  KPRCB  PrcbData;              /* 120 */
+} KIPCR, *PKIPCR;
+
+#pragma pack(pop)
 
 #include <pshpack1.h>
 
@@ -239,6 +500,35 @@ typedef struct _KEXCEPTION_FRAME {
 
 } KEXCEPTION_FRAME, *PKEXCEPTION_FRAME;
 
+typedef struct _KNODE
+{
+   SLIST_HEADER DeadStackList;
+   SLIST_HEADER PfnDereferenceSListHead;
+   ULONG ProcessorMask;
+   ULONG Color;
+   UCHAR Seed;
+   UCHAR NodeNumber;
+   ULONG Flags;
+   ULONG MmShiftedColor;
+   ULONG FreeCount[2];
+   struct _SINGLE_LIST_ENTRY *PfnDeferredList;
+} KNODE, *PKNODE;
+
+typedef struct _KPROFILE
+{
+    CSHORT Type;
+    CSHORT Size;
+    LIST_ENTRY ListEntry;
+    PVOID RegionStart;
+    PVOID RegionEnd;
+    ULONG BucketShift;
+    PVOID Buffer;
+    CSHORT Source;
+    ULONG Affinity;
+    BOOLEAN Active;
+    struct _KPROCESS *Process;
+} KPROFILE, *PKPROFILE;
+
 typedef struct _KINTERRUPT 
 {
     CSHORT              Type;
@@ -271,36 +561,192 @@ typedef struct _KEVENT_PAIR
     KEVENT HighEvent;
 } KEVENT_PAIR, *PKEVENT_PAIR;
 
-typedef enum _KOBJECTS {
-   EventNotificationObject = 0,
-   EventSynchronizationObject = 1,
-   MutantObject = 2,
-   ProcessObject = 3,
-   QueueObject = 4,
-   SemaphoreObject = 5,
-   ThreadObject = 6,
-   GateObject = 7,
-   TimerNotificationObject = 8,
-   TimerSynchronizationObject = 9,
-   Spare2Object = 10,
-   Spare3Object = 11,
-   Spare4Object = 12,
-   Spare5Object = 13,
-   Spare6Object = 14,
-   Spare7Object = 15,
-   Spare8Object = 16,
-   Spare9Object = 17,
-   ApcObject = 18,
-   DpcObject = 19,
-   DeviceQueueObject = 20,
-   EventPairObject = 21,
-   InterruptObject = 22,
-   ProfileObject = 23,
-   ThreadedDpcObject = 24,
-   MaximumKernelObject = 25
+typedef struct _KEXECUTE_OPTIONS
+{
+    UCHAR ExecuteDisable:1;
+    UCHAR ExecuteEnable:1;
+    UCHAR DisableThunkEmulation:1;
+    UCHAR Permanent:1;
+    UCHAR ExecuteDispatchEnable:1;
+    UCHAR ImageDispatchEnable:1;
+    UCHAR Spare:2;
+} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
+
+typedef enum _KOBJECTS
+{
+    EventNotificationObject = 0,
+    EventSynchronizationObject = 1,
+    MutantObject = 2,
+    ProcessObject = 3,
+    QueueObject = 4,
+    SemaphoreObject = 5,
+    ThreadObject = 6,
+    GateObject = 7,
+    TimerNotificationObject = 8,
+    TimerSynchronizationObject = 9,
+    Spare2Object = 10,
+    Spare3Object = 11,
+    Spare4Object = 12,
+    Spare5Object = 13,
+    Spare6Object = 14,
+    Spare7Object = 15,
+    Spare8Object = 16,
+    Spare9Object = 17,
+    ApcObject = 18,
+    DpcObject = 19,
+    DeviceQueueObject = 20,
+    EventPairObject = 21,
+    InterruptObject = 22,
+    ProfileObject = 23,
+    ThreadedDpcObject = 24,
+    MaximumKernelObject = 25
 } KOBJECTS;
 
-typedef enum _KTHREAD_STATE {
+#include <pshpack1.h>
+
+typedef struct _KTHREAD
+{
+   /* For waiting on thread exit */
+   DISPATCHER_HEADER DispatcherHeader;    /* 00 */
+
+   /* List of mutants owned by the thread */
+   LIST_ENTRY        MutantListHead;      /* 10 */
+   PVOID             InitialStack;        /* 18 */
+   ULONG_PTR         StackLimit;          /* 1C */
+
+   /* Pointer to the thread's environment block in user memory */
+   struct _TEB       *Teb;                /* 20 */
+
+   /* Pointer to the thread's TLS array */
+   PVOID             TlsArray;            /* 24 */
+   PVOID             KernelStack;         /* 28 */
+   UCHAR             DebugActive;         /* 2C */
+
+   /* Thread state (one of THREAD_STATE_xxx constants below) */
+   UCHAR             State;               /* 2D */
+   BOOLEAN           Alerted[2];          /* 2E */
+   UCHAR             Iopl;                /* 30 */
+   UCHAR             NpxState;            /* 31 */
+   CHAR              Saturation;          /* 32 */
+   CHAR              Priority;            /* 33 */
+   KAPC_STATE        ApcState;            /* 34 */
+   ULONG             ContextSwitches;     /* 4C */
+   LONG              WaitStatus;          /* 50 */
+   KIRQL             WaitIrql;            /* 54 */
+   CHAR              WaitMode;            /* 55 */
+   UCHAR             WaitNext;            /* 56 */
+   UCHAR             WaitReason;          /* 57 */
+   union {                                /* 58 */
+      PKWAIT_BLOCK   WaitBlockList;       /* 58 */
+      PKGATE         GateObject;          /* 58 */
+   };                                     /* 58 */
+   LIST_ENTRY        WaitListEntry;       /* 5C */
+   ULONG             WaitTime;            /* 64 */
+   CHAR              BasePriority;        /* 68 */
+   UCHAR             DecrementCount;      /* 69 */
+   UCHAR             PriorityDecrement;   /* 6A */
+   CHAR              Quantum;             /* 6B */
+   KWAIT_BLOCK       WaitBlock[4];        /* 6C */
+   PVOID             LegoData;            /* CC */
+   union {
+          struct {
+              USHORT KernelApcDisable;
+              USHORT SpecialApcDisable;
+          };
+          ULONG      CombinedApcDisable;  /* D0 */
+   };
+   KAFFINITY         UserAffinity;        /* D4 */
+   UCHAR             SystemAffinityActive;/* D8 */
+   UCHAR             PowerState;          /* D9 */
+   UCHAR             NpxIrql;             /* DA */
+   UCHAR             Pad[1];              /* DB */
+   PVOID             ServiceTable;        /* DC */
+   PKQUEUE           Queue;               /* E0 */
+   KSPIN_LOCK        ApcQueueLock;        /* E4 */
+   KTIMER            Timer;               /* E8 */
+   LIST_ENTRY        QueueListEntry;      /* 110 */
+   KAFFINITY         Affinity;            /* 118 */
+   UCHAR             Preempted;           /* 11C */
+   UCHAR             ProcessReadyQueue;   /* 11D */
+   UCHAR             KernelStackResident; /* 11E */
+   UCHAR             NextProcessor;       /* 11F */
+   PVOID             CallbackStack;       /* 120 */
+   struct _W32THREAD *Win32Thread;        /* 124 */
+   struct _KTRAP_FRAME *TrapFrame;        /* 128 */
+   PKAPC_STATE       ApcStatePointer[2];  /* 12C */
+   UCHAR             EnableStackSwap;     /* 134 */
+   UCHAR             LargeStack;          /* 135 */
+   UCHAR             ResourceIndex;       /* 136 */
+   UCHAR             PreviousMode;        /* 137 */
+   ULONG             KernelTime;          /* 138 */
+   ULONG             UserTime;            /* 13C */
+   KAPC_STATE        SavedApcState;       /* 140 */
+   UCHAR             Alertable;           /* 158 */
+   UCHAR             ApcStateIndex;       /* 159 */
+   UCHAR             ApcQueueable;        /* 15A */
+   UCHAR             AutoAlignment;       /* 15B */
+   PVOID             StackBase;           /* 15C */
+   KAPC              SuspendApc;          /* 160 */
+   KSEMAPHORE        SuspendSemaphore;    /* 190 */
+   LIST_ENTRY        ThreadListEntry;     /* 1A4 */
+   CHAR              FreezeCount;         /* 1AC */
+   UCHAR             SuspendCount;        /* 1AD */
+   UCHAR             IdealProcessor;      /* 1AE */
+   UCHAR             DisableBoost;        /* 1AF */
+   UCHAR             QuantumReset;        /* 1B0 */
+} KTHREAD;
+
+#include <poppack.h>
+
+/*
+ * NAME:           KPROCESS
+ * DESCRIPTION:    Internal Kernel Process Structure.
+ * PORTABILITY:    Architecture Dependent.
+ * KERNEL VERSION: 5.2
+ * DOCUMENTATION:  http://reactos.com/wiki/index.php/KPROCESS
+ */
+typedef struct _KPROCESS
+{
+    DISPATCHER_HEADER     Header;                    /* 000 */
+    LIST_ENTRY            ProfileListHead;           /* 010 */
+    PHYSICAL_ADDRESS      DirectoryTableBase;        /* 018 */
+    KGDTENTRY             LdtDescriptor;             /* 020 */
+    KIDTENTRY             Int21Descriptor;           /* 028 */
+    USHORT                IopmOffset;                /* 030 */
+    UCHAR                 Iopl;                      /* 032 */
+    UCHAR                 Unused;                    /* 033 */
+    ULONG                 ActiveProcessors;          /* 034 */
+    ULONG                 KernelTime;                /* 038 */
+    ULONG                 UserTime;                  /* 03C */
+    LIST_ENTRY            ReadyListHead;             /* 040 */
+    LIST_ENTRY            SwapListEntry;             /* 048 */
+    PVOID                 VdmTrapcHandler;           /* 04C */
+    LIST_ENTRY            ThreadListHead;            /* 050 */
+    KSPIN_LOCK            ProcessLock;               /* 058 */
+    KAFFINITY             Affinity;                  /* 05C */
+    union {
+        struct {
+            ULONG         AutoAlignment:1;           /* 060.0 */
+            ULONG         DisableBoost:1;            /* 060.1 */
+            ULONG         DisableQuantum:1;          /* 060.2 */
+            ULONG         ReservedFlags:29;          /* 060.3 */
+        };
+        ULONG             ProcessFlags;              /* 060 */
+    };
+    CHAR                  BasePriority;              /* 064 */
+    CHAR                  QuantumReset;              /* 065 */
+    UCHAR                 State;                     /* 066 */
+    UCHAR                 ThreadSeed;                /* 067 */
+    UCHAR                 PowerState;                /* 068 */
+    UCHAR                 IdealNode;                 /* 069 */
+    UCHAR                 Visited;                   /* 06A */
+    KEXECUTE_OPTIONS      Flags;                     /* 06B */
+    ULONG                 StackCount;                /* 06C */
+    LIST_ENTRY            ProcessListEntry;          /* 070 */
+} KPROCESS;
+
+typedef enum _KTHREAD_STATE
+{
     Initialized,
     Ready,
     Running,
@@ -310,4 +756,5 @@ typedef enum _KTHREAD_STATE {
     Transition,
     DeferredReady,
 } KTHREAD_STATE, *PKTHREAD_STATE;
+
 #endif
index d74d249..3b36cb7 100644 (file)
@@ -33,5 +33,14 @@ LdrFindResource_U(
     IN  ULONG Level,
     OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry
 );
+
+NTSTATUS
+STDCALL
+LdrGetProcedureAddress(
+    IN PVOID BaseAddress,
+    IN PANSI_STRING Name,
+    IN ULONG Ordinal,
+    OUT PVOID *ProcedureAddress
+);
                   
 #endif
index 9ed0c78..14475bb 100644 (file)
@@ -32,17 +32,40 @@ typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
 
 typedef struct _PP_LOOKASIDE_LIST 
 {
-   struct _GENERAL_LOOKASIDE *P;
-   struct _GENERAL_LOOKASIDE *L;
+    struct _GENERAL_LOOKASIDE *P;
+    struct _GENERAL_LOOKASIDE *L;
 } PP_LOOKASIDE_LIST, *PPP_LOOKASIDE_LIST;
 
 typedef struct _ADDRESS_RANGE
 {
-   ULONG BaseAddrLow;
-   ULONG BaseAddrHigh;
-   ULONG LengthLow;
-   ULONG LengthHigh;
-   ULONG Type;
+    ULONG BaseAddrLow;
+    ULONG BaseAddrHigh;
+    ULONG LengthLow;
+    ULONG LengthHigh;
+    ULONG Type;
 } ADDRESS_RANGE, *PADDRESS_RANGE;
 
+typedef struct _MMADDRESS_NODE
+{
+    union
+    {
+        ULONG Balance:2;
+        struct _MMADDRESS_NODE *Parent;
+    } u1;
+    struct _MMADDRESS_NODE *LeftChild;
+    struct _MMADDRESS_NODE *RightChild;
+    ULONG StartingVpn;
+    ULONG EndingVpn;
+} MMADDRESS_NODE, *PMMADDRESS_NODE;
+
+typedef struct _MM_AVL_TABLE
+{
+    MMADDRESS_NODE BalancedRoot;
+    ULONG DepthOfTree:5;
+    ULONG Unused:3;
+    ULONG NumberGenericTableElements:24;
+    PVOID NodeHint;
+    PVOID NodeFreeHint;
+} MM_AVL_TABLE, *PMM_AVL_TABLE;
+
 #endif
index e09ec0f..34f3a41 100644 (file)
@@ -14,6 +14,7 @@
     #include "kdtypes.h"    /* Kernel Debugger Types */
     #include "kdfuncs.h"    /* Kernel Debugger Functions */
     #include "cctypes.h"    /* Cache Manager Types */
+    #include "dbgktypes.h"  /* User-Mode Kernel Debugging Types */
     #include "extypes.h"    /* Executive Types */
     #include "haltypes.h"   /* Hardware Abstraction Layer Types */
     #include "halfuncs.h"   /* Hardware Abstraction Layer Functions */
index 3c8b8c5..7ada5ae 100644 (file)
 #define DOSDEVICE_DRIVE_CDROM          5
 #define DOSDEVICE_DRIVE_RAMDISK                6
 
+/* Object Flags */
+#define OB_FLAG_CREATE_INFO    0x01
+#define OB_FLAG_KERNEL_MODE    0x02
+#define OB_FLAG_CREATOR_INFO   0x04
+#define OB_FLAG_EXCLUSIVE      0x08
+#define OB_FLAG_PERMANENT      0x10
+#define OB_FLAG_SECURITY       0x20
+#define OB_FLAG_SINGLE_PROCESS 0x40
+
 /* ENUMERATIONS **************************************************************/
 
+typedef enum _OB_OPEN_REASON
+{    
+    ObCreateHandle,
+    ObOpenHandle,
+    ObDuplicateHandle,
+    ObInheritHandle,
+    ObMaxOpenReason
+} OB_OPEN_REASON;
+
+/* FUNCTION TYPES ************************************************************/
+
+/* Object Callbacks FIXME: Update these soon */
+typedef NTSTATUS
+(STDCALL *OB_OPEN_METHOD)(
+    OB_OPEN_REASON  Reason,
+    PVOID  ObjectBody,
+    PEPROCESS  Process,
+    ULONG  HandleCount,
+    ACCESS_MASK  GrantedAccess
+);
+
+typedef NTSTATUS 
+(STDCALL *OB_PARSE_METHOD)(
+    PVOID  Object,
+    PVOID  *NextObject,
+    PUNICODE_STRING  FullPath,
+    PWSTR  *Path,
+    ULONG  Attributes
+);
+                        
+typedef VOID 
+(STDCALL *OB_DELETE_METHOD)(
+    PVOID  DeletedObject
+);
+
+typedef VOID 
+(STDCALL *OB_CLOSE_METHOD)(
+    PVOID  ClosedObject,
+    ULONG  HandleCount
+);
+
+typedef VOID
+(STDCALL *OB_DUMP_METHOD)(VOID);
+
+typedef NTSTATUS 
+(STDCALL *OB_OKAYTOCLOSE_METHOD)(VOID);
+
+typedef NTSTATUS 
+(STDCALL *OB_QUERYNAME_METHOD)(
+    PVOID  ObjectBody,
+    POBJECT_NAME_INFORMATION  ObjectNameInfo,
+    ULONG  Length,
+    PULONG  ReturnLength
+);
+
+typedef PVOID 
+(STDCALL *OB_FIND_METHOD)(
+    PVOID  WinStaObject,
+    PWSTR  Name,
+    ULONG  Attributes
+);
+
+typedef NTSTATUS 
+(STDCALL *OB_SECURITY_METHOD)(
+    PVOID  ObjectBody,
+    SECURITY_OPERATION_CODE  OperationCode,
+    SECURITY_INFORMATION  SecurityInformation,
+    PSECURITY_DESCRIPTOR  SecurityDescriptor,
+    PULONG  BufferLength
+);
+
+/* FIXME: TEMPORARY HACK */
+typedef NTSTATUS
+(STDCALL *OB_CREATE_METHOD)(
+    PVOID  ObjectBody,
+    PVOID  Parent,
+    PWSTR  RemainingPath,
+    struct _OBJECT_ATTRIBUTES*  ObjectAttributes
+);
+
 /* TYPES *********************************************************************/
 
 typedef struct _OBJECT_BASIC_INFORMATION 
@@ -40,8 +129,129 @@ typedef struct _OBJECT_BASIC_INFORMATION
     ULONG SecurityDescriptorLength;
     LARGE_INTEGER CreateTime;
 } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
+    
+typedef struct _OBJECT_HEADER_NAME_INFO
+{
+    struct _DIRECTORY_OBJECT *Directory;
+    UNICODE_STRING Name;
+    ULONG QueryReferences;
+    ULONG Reserved2;
+    ULONG DbgReferenceCount;
+} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;
+
+typedef struct _OBJECT_CREATE_INFORMATION 
+{
+    ULONG Attributes;
+    HANDLE RootDirectory;
+    PVOID ParseContext;
+    KPROCESSOR_MODE ProbeMode;
+    ULONG PagedPoolCharge;
+    ULONG NonPagedPoolCharge;
+    ULONG SecurityDescriptorCharge;
+    PSECURITY_DESCRIPTOR SecurityDescriptor;
+    PSECURITY_QUALITY_OF_SERVICE SecurityQos;
+    SECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
+} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION;
+
+typedef struct _OBJECT_TYPE_INITIALIZER
+{
+    WORD Length;
+    UCHAR UseDefaultObject;
+    UCHAR CaseInsensitive;
+    ULONG InvalidAttributes;
+    GENERIC_MAPPING GenericMapping;
+    ULONG ValidAccessMask;
+    UCHAR SecurityRequired;
+    UCHAR MaintainHandleCount;
+    UCHAR MaintainTypeList;
+    POOL_TYPE PoolType;
+    ULONG DefaultPagedPoolCharge;
+    ULONG DefaultNonPagedPoolCharge;
+    OB_DUMP_METHOD DumpProcedure;
+    OB_OPEN_METHOD OpenProcedure;
+    OB_CLOSE_METHOD CloseProcedure;
+    OB_DELETE_METHOD DeleteProcedure;
+    OB_PARSE_METHOD ParseProcedure;
+    OB_SECURITY_METHOD SecurityProcedure;
+    OB_QUERYNAME_METHOD QueryNameProcedure;
+    OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure;
+} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;
+
+typedef struct _OBJECT_TYPE
+{
+    ERESOURCE Mutex;
+    LIST_ENTRY TypeList;
+    UNICODE_STRING Name;
+    PVOID DefaultObject;
+    ULONG Index;
+    ULONG TotalNumberOfObjects;
+    ULONG TotalNumberOfHandles;
+    ULONG HighWaterNumberOfObjects;
+    ULONG HighWaterNumberOfHandles;
+    OBJECT_TYPE_INITIALIZER TypeInfo;
+    ULONG Key;
+    ERESOURCE ObjectLocks[4];
+} OBJECT_TYPE;
+
+typedef struct _OBJECT_HANDLE_COUNT_ENTRY
+{
+    struct _EPROCESS *Process;
+    ULONG HandleCount;
+} OBJECT_HANDLE_COUNT_ENTRY, *POBJECT_HANDLE_COUNT_ENTRY;
+                        
+typedef struct _OBJECT_HANDLE_COUNT_DATABASE
+{
+    ULONG CountEntries;
+    POBJECT_HANDLE_COUNT_ENTRY HandleCountEntries[1];
+} OBJECT_HANDLE_COUNT_DATABASE, *POBJECT_HANDLE_COUNT_DATABASE;
+                        
+typedef struct _OBJECT_HEADER_HANDLE_INFO
+{
+    union
+    {
+        POBJECT_HANDLE_COUNT_DATABASE HandleCountDatabase;
+        OBJECT_HANDLE_COUNT_ENTRY SingleEntry;
+    };
+} OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO;
+                        
+typedef struct _OBJECT_HEADER_CREATOR_INFO
+{
+    LIST_ENTRY TypeList;
+    PVOID CreatorUniqueProcess;
+    USHORT CreatorBackTraceIndex;
+    USHORT Reserved;
+} OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO;
+
+typedef struct _QUAD
+{
+    union
+    {
+        LONGLONG UseThisFieldToCopy;
+        float DoNotUseThisField;
+    };
+} QUAD, *PQUAD;
+
+typedef struct _OBJECT_HEADER
+{
+    LIST_ENTRY Entry; /* FIXME: REMOVE THIS SOON */
+    LONG PointerCount;
+    union {
+        LONG HandleCount;
+        PVOID NextToFree;
+    };
+    POBJECT_TYPE Type;
+    UCHAR NameInfoOffset;
+    UCHAR HandleInfoOffset;
+    UCHAR QuotaInfoOffset;
+    UCHAR Flags;
+    union {
+        POBJECT_CREATE_INFORMATION ObjectCreateInfo;
+        PVOID QuotaBlockCharged;
+    };
+    PSECURITY_DESCRIPTOR SecurityDescriptor;
+    QUAD Body;
+} OBJECT_HEADER, *POBJECT_HEADER;
 
-/* FIXME: Add Object Structures Here */
 /*
  * FIXME: These will eventually become centerfold in the compliant Ob Manager
  * For now, they are only here so Device Map is properly defined before the header
index 54e7ca9..5b4448e 100644 (file)
@@ -68,4 +68,18 @@ typedef struct _PROCESSOR_POWER_STATE
     ULONG Spare1[1];
 } PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
 
+typedef struct _PO_DEVICE_NOTIFY
+{
+    LIST_ENTRY Link;
+    PDEVICE_OBJECT TargetDevice;
+    UCHAR WakeNeeded;
+    UCHAR OrderLevel;
+    PDEVICE_OBJECT DeviceObject;
+    PVOID Node;
+    PUSHORT DeviceName;
+    PUSHORT DriverName;
+    ULONG ChildCount;
+    ULONG ActiveChild;
+} PO_DEVICE_NOTIFY, *PPO_DEVICE_NOTIFY;
+
 #endif
index b47d513..bac7364 100644 (file)
@@ -256,5 +256,312 @@ typedef struct _TEB
     PVOID FlsSlots;                     /* FB4h */
     PVOID WineDebugInfo;                /* Needed for WINE DLL's  */
 } TEB, *PTEB;
-            
+
+/* KERNEL MODE ONLY **********************************************************/
+#ifndef NTOS_MODE_USER
+
+#include "mmtypes.h"
+#include <internal/mm.h> /* FIXME: Forced to do this for now */
+#include <pshpack4.h>
+/*
+ * NAME:           ETHREAD
+ * DESCRIPTION:    Internal Executive Thread Structure.
+ * PORTABILITY:    Architecture Independent.
+ * KERNEL VERSION: 5.2
+ * DOCUMENTATION:  http://reactos.com/wiki/index.php/ETHREAD
+ */
+typedef struct _ETHREAD
+{
+    KTHREAD                        Tcb;                         /* 1C0 */
+    LARGE_INTEGER                  CreateTime;                  /* 1C0 */
+    LARGE_INTEGER                  ExitTime;                    /* 1C0 */
+    union {
+        LIST_ENTRY                 LpcReplyChain;               /* 1C0 */
+        LIST_ENTRY                 KeyedWaitChain;              /* 1C0 */
+    };
+    union {
+        NTSTATUS                   ExitStatus;                  /* 1C8 */
+        PVOID                      OfsChain;                    /* 1C8 */
+    };
+    LIST_ENTRY                     PostBlockList;               /* 1CC */
+    union {
+        struct _TERMINATION_PORT   *TerminationPort;            /* 1D4 */
+        struct _ETHREAD            *ReaperLink;                 /* 1D4 */
+        PVOID                      KeyedWaitValue;              /* 1D4 */
+    };
+    KSPIN_LOCK                     ActiveTimerListLock;         /* 1D8 */
+    LIST_ENTRY                     ActiveTimerListHead;         /* 1D8 */
+    CLIENT_ID                      Cid;                         /* 1E0 */
+    union {
+        KSEMAPHORE                 LpcReplySemaphore;           /* 1E4 */
+        KSEMAPHORE                 KeyedReplySemaphore;         /* 1E4 */
+    };
+    union {
+        PVOID                      LpcReplyMessage;             /* 200 */
+        PVOID                      LpcWaitingOnPort;            /* 200 */
+    };
+    PPS_IMPERSONATION_INFORMATION  ImpersonationInfo;           /* 204 */
+    LIST_ENTRY                     IrpList;                     /* 208 */
+    ULONG                          TopLevelIrp;                 /* 210 */
+    PDEVICE_OBJECT                 DeviceToVerify;              /* 214 */
+    struct _EPROCESS               *ThreadsProcess;             /* 218 */
+    PKSTART_ROUTINE                StartAddress;                /* 21C */
+    union {
+        PTHREAD_START_ROUTINE      Win32StartAddress;           /* 220 */
+        ULONG                      LpcReceivedMessageId;        /* 220 */
+    };
+    LIST_ENTRY                     ThreadListEntry;             /* 224 */
+    EX_RUNDOWN_REF                 RundownProtect;              /* 22C */
+    EX_PUSH_LOCK                   ThreadLock;                  /* 230 */
+    ULONG                          LpcReplyMessageId;           /* 234 */
+    ULONG                          ReadClusterSize;             /* 238 */
+    ACCESS_MASK                    GrantedAccess;               /* 23C */
+    union {
+        struct {
+           ULONG                   Terminated:1;
+           ULONG                   DeadThread:1;
+           ULONG                   HideFromDebugger:1;
+           ULONG                   ActiveImpersonationInfo:1;
+           ULONG                   SystemThread:1;
+           ULONG                   HardErrorsAreDisabled:1;
+           ULONG                   BreakOnTermination:1;
+           ULONG                   SkipCreationMsg:1;
+           ULONG                   SkipTerminationMsg:1;
+        };
+        ULONG                      CrossThreadFlags;            /* 240 */
+    };
+    union {
+        struct {
+           ULONG                   ActiveExWorker:1;
+           ULONG                   ExWorkerCanWaitUser:1;
+           ULONG                   MemoryMaker:1;
+           ULONG                   KeyedEventInUse:1;
+        };
+        ULONG                      SameThreadPassiveFlags;      /* 244 */
+    };
+    union {
+        struct {
+           ULONG                   LpcReceivedMsgIdValid:1;
+           ULONG                   LpcExitThreadCalled:1;
+           ULONG                   AddressSpaceOwner:1;
+           ULONG                   OwnsProcessWorkingSetExclusive:1;
+           ULONG                   OwnsProcessWorkingSetShared:1;
+           ULONG                   OwnsSystemWorkingSetExclusive:1;
+           ULONG                   OwnsSystemWorkingSetShared:1;
+           ULONG                   OwnsSessionWorkingSetExclusive:1;
+           ULONG                   OwnsSessionWorkingSetShared:1;
+           ULONG                   ApcNeeded:1;
+        };
+        ULONG                      SameThreadApcFlags;          /* 248 */
+    };
+    UCHAR                          ForwardClusterOnly;          /* 24C */
+    UCHAR                          DisablePageFaultClustering;  /* 24D */
+    UCHAR                          ActiveFaultCount;            /* 24E */
+} ETHREAD;
+
+/*
+ * NAME:           EPROCESS
+ * DESCRIPTION:    Internal Executive Process Structure.
+ * PORTABILITY:    Architecture Independent.
+ * KERNEL VERSION: 5.2
+ * DOCUMENTATION:  http://reactos.com/wiki/index.php/EPROCESS
+ */
+typedef struct _EPROCESS
+{
+    KPROCESS              Pcb;                          /* 000 */
+    EX_PUSH_LOCK          ProcessLock;                  /* 078 */
+    LARGE_INTEGER         CreateTime;                   /* 080 */
+    LARGE_INTEGER         ExitTime;                     /* 088 */
+    EX_RUNDOWN_REF        RundownProtect;               /* 090 */
+    HANDLE                UniqueProcessId;              /* 094 */
+    LIST_ENTRY            ActiveProcessLinks;           /* 098 */
+    ULONG                 QuotaUsage[3];                /* 0A0 */
+    ULONG                 QuotaPeak[3];                 /* 0AC */
+    ULONG                 CommitCharge;                 /* 0B8 */
+    ULONG                 PeakVirtualSize;              /* 0BC */
+    ULONG                 VirtualSize;                  /* 0C0 */
+    LIST_ENTRY            SessionProcessLinks;          /* 0C4 */
+    PVOID                 DebugPort;                    /* 0CC */
+    PVOID                 ExceptionPort;                /* 0D0 */
+    PHANDLE_TABLE         ObjectTable;                  /* 0D4 */
+    EX_FAST_REF           Token;                        /* 0D8 */
+    ULONG                 WorkingSetPage;               /* 0DC */
+    KGUARDED_MUTEX        AddressCreationLock;          /* 0E0 */
+    KSPIN_LOCK            HyperSpaceLock;               /* 100 */
+    PETHREAD              ForkInProgress;               /* 104 */
+    ULONG                 HardwareTrigger;              /* 108 */
+    MM_AVL_TABLE          PhysicalVadroot;              /* 10C */
+    PVOID                 CloneRoot;                    /* 110 */
+    ULONG                 NumberOfPrivatePages;         /* 114 */
+    ULONG                 NumberOfLockedPages;          /* 118 */
+    PVOID                 *Win32Process;                /* 11C */
+    struct _EJOB          *Job;                         /* 120 */
+    PVOID                 SectionObject;                /* 124 */
+    PVOID                 SectionBaseAddress;           /* 128 */
+    PEPROCESS_QUOTA_BLOCK QuotaBlock;                   /* 12C */
+    PPAGEFAULT_HISTORY    WorkingSetWatch;              /* 130 */
+    PVOID                 Win32WindowStation;           /* 134 */
+    HANDLE                InheritedFromUniqueProcessId; /* 138 */
+    PVOID                 LdtInformation;               /* 13C */
+    PVOID                 VadFreeHint;                  /* 140 */
+    PVOID                 VdmObjects;                   /* 144 */
+    PVOID                 DeviceMap;                    /* 148 */
+    PVOID                 Spare0[3];                    /* 14C */
+    union {
+        HARDWARE_PTE_X86  PagedirectoryPte;             /* 158 */
+        ULONGLONG         Filler;                       /* 158 */
+    };
+    ULONG                 Session;                      /* 160 */
+    CHAR                  ImageFileName[16];            /* 164 */
+    LIST_ENTRY            JobLinks;                     /* 174 */
+    PVOID                 LockedPagesList;              /* 17C */
+    LIST_ENTRY            ThreadListHead;               /* 184 */
+    PVOID                 SecurityPort;                 /* 188 */
+    PVOID                 PaeTop;                       /* 18C */
+    ULONG                 ActiveThreds;                 /* 190 */
+    ACCESS_MASK           GrantedAccess;                /* 194 */
+    ULONG                 DefaultHardErrorProcessing;   /* 198 */
+    NTSTATUS              LastThreadExitStatus;         /* 19C */
+    struct _PEB*          Peb;                          /* 1A0 */
+    EX_FAST_REF           PrefetchTrace;                /* 1A4 */
+    LARGE_INTEGER         ReadOperationCount;           /* 1A8 */
+    LARGE_INTEGER         WriteOperationCount;          /* 1B0 */
+    LARGE_INTEGER         OtherOperationCount;          /* 1B8 */
+    LARGE_INTEGER         ReadTransferCount;            /* 1C0 */
+    LARGE_INTEGER         WriteTransferCount;           /* 1C8 */
+    LARGE_INTEGER         OtherTransferCount;           /* 1D0 */
+    ULONG                 CommitChargeLimit;            /* 1D8 */
+    ULONG                 CommitChargePeak;             /* 1DC */
+    PVOID                 AweInfo;                      /* 1E0 */
+    SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo; /* 1E4 */
+    MMSUPPORT             Vm;                           /* 1E8 */
+    LIST_ENTRY            MmProcessLinks;               /* 230 */
+    ULONG                 ModifiedPageCount;            /* 238 */
+    ULONG                 JobStatus;                    /* 23C */
+    union {
+        struct {
+            ULONG         CreateReported:1;
+            ULONG         NoDebugInherit:1;
+            ULONG         ProcessExiting:1;
+            ULONG         ProcessDelete:1;
+            ULONG         Wow64SplitPages:1;
+            ULONG         VmDeleted:1;
+            ULONG         OutswapEnabled:1;
+            ULONG         Outswapped:1;
+            ULONG         ForkFailed:1;
+            ULONG         Wow64VaSpace4Gb:1;
+            ULONG         AddressSpaceInitialized:2;
+            ULONG         SetTimerResolution:1;
+            ULONG         BreakOnTermination:1;
+            ULONG         SessionCreationUnderway:1;
+            ULONG         WriteWatch:1;
+            ULONG         ProcessInSession:1;
+            ULONG         OverrideAddressSpace:1;
+            ULONG         HasAddressSpace:1;
+            ULONG         LaunchPrefetched:1;
+            ULONG         InjectInpageErrors:1;
+            ULONG         VmTopDown:1;
+            ULONG         ImageNotifyDone:1;
+            ULONG         PdeUpdateNeeded:1;
+            ULONG         VdmAllowed:1;
+            ULONG         SmapAllowed:1;
+            ULONG         CreateFailed:1;
+            ULONG         DefaultIoPriority:3;
+            ULONG         Spare1:1;
+            ULONG         Spare2:1;
+        };
+        ULONG             Flags;                        /* 240 */
+    };
+
+    NTSTATUS              ExitStatus;                   /* 244 */
+    USHORT                NextPageColor;                /* 248 */
+    union {
+        struct {
+            UCHAR         SubSystemMinorVersion;        /* 24A */
+            UCHAR         SubSystemMajorVersion;        /* 24B */
+        };
+        USHORT            SubSystemVersion;             /* 24A */
+    };
+    UCHAR                 PriorityClass;                /* 24C */
+    MM_AVL_TABLE          VadRoot;                      /* 250 */
+    ULONG                 Cookie;                       /* 270 */
+
+/***************************************************************
+ *                REACTOS SPECIFIC START
+ ***************************************************************/
+    /* FIXME WILL BE DEPRECATED WITH PUSHLOCK SUPPORT IN 0.3.0 */
+    KEVENT                LockEvent;                    /* 274 */
+    ULONG                 LockCount;                    /* 284 */
+    struct _KTHREAD       *LockOwner;                   /* 288 */
+
+    /* FIXME MOVE TO AVL TREES                                 */
+    MADDRESS_SPACE        AddressSpace;                 /* 28C */
+} EPROCESS;
+#include <poppack.h>
+
+#include <pshpack1.h>
+typedef struct _PS_JOB_TOKEN_FILTER
+{
+    UINT CapturedSidCount;
+    PSID_AND_ATTRIBUTES CapturedSids;
+    UINT CapturedSidsLength;
+    UINT CapturedGroupCount;
+    PSID_AND_ATTRIBUTES CapturedGroups;
+    UINT CapturedGroupsLength;
+    UINT CapturedPrivilegeCount;
+    PLUID_AND_ATTRIBUTES CapturedPrivileges;
+    UINT CapturedPrivilegesLength;
+} PS_JOB_TOKEN_FILTER, *PPS_JOB_TOKEN_FILTER;
+
+typedef struct _EJOB
+{
+    KEVENT Event;
+    LIST_ENTRY JobLinks;
+    LIST_ENTRY ProcessListHead;
+    ERESOURCE JobLock;
+    LARGE_INTEGER TotalUserTime;
+    LARGE_INTEGER TotalKernelTime;
+    LARGE_INTEGER ThisPeriodTotalUserTime;
+    LARGE_INTEGER ThisPeriodTotalKernelTime;
+    UINT TotalPageFaultCount;
+    UINT TotalProcesses;
+    UINT ActiveProcesses;
+    UINT TotalTerminatedProcesses;
+    LARGE_INTEGER PerProcessUserTimeLimit;
+    LARGE_INTEGER PerJobUserTimeLimit;
+    UINT LimitFlags;
+    UINT MinimumWorkingSetSize;
+    UINT MaximumWorkingSetSize;
+    UINT ActiveProcessLimit;
+    UINT Affinity;
+    BYTE PriorityClass;
+    UINT UIRestrictionsClass;
+    UINT SecurityLimitFlags;
+    PVOID Token;
+    PPS_JOB_TOKEN_FILTER Filter;
+    UINT EndOfJobTimeAction;
+    PVOID CompletionPort;
+    PVOID CompletionKey;
+    UINT SessionId;
+    UINT SchedulingClass;
+    ULONGLONG ReadOperationCount;
+    ULONGLONG WriteOperationCount;
+    ULONGLONG OtherOperationCount;
+    ULONGLONG ReadTransferCount;
+    ULONGLONG WriteTransferCount;
+    ULONGLONG OtherTransferCount;
+    IO_COUNTERS IoInfo;
+    UINT ProcessMemoryLimit;
+    UINT JobMemoryLimit;
+    UINT PeakProcessMemoryUsed;
+    UINT PeakJobMemoryUsed;
+    UINT CurrentJobMemoryUsed;
+    KGUARDED_MUTEX MemoryLimitsLock;
+    ULONG MemberLevel;
+    ULONG JobFlags;
+} EJOB, *PEJOB;
+#include <poppack.h>
+
+#endif
+
 #endif
index a0c91d4..f18f339 100644 (file)
@@ -1,26 +1,61 @@
-/* $Id$
- *
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/ex/callback.c
  * PURPOSE:         Executive callbacks
- *
- * PROGRAMMERS:     David Welch (welch@mcmail.com)
- *                  Alex Ionescu (alex@relsoft.net)
- */
-
-
-/*
- * NOTE:            These funtions are not implemented in NT4, but
- *                  they are implemented in Win2k.
+ * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
  */
 
 /* INCLUDES *****************************************************************/
 
 #include <ntoskrnl.h>
-#include <internal/callbacks.h>
+#define NDEBUG
 #include <internal/debug.h>
 
+/* TYPES ********************************************************************/
+
+/* Mapping for Callback Object */
+GENERIC_MAPPING ExpCallbackMapping =
+{
+   CALLBACK_READ,
+   CALLBACK_WRITE,
+   CALLBACK_EXECUTE,
+   CALLBACK_ALL_ACCESS
+};
+
+/* Structure used to hold Callbacks */
+typedef struct _CALLBACK_REGISTRATION
+{
+   LIST_ENTRY RegisteredCallbacks;
+   PCALLBACK_OBJECT CallbackObject;
+   PCALLBACK_FUNCTION CallbackFunction;
+   PVOID CallbackContext;
+   ULONG InUse;
+   BOOLEAN PendingDeletion;
+} CALLBACK_REGISTRATION, *PCALLBACK_REGISTRATION;
+
+typedef struct
+{
+    PCALLBACK_OBJECT *CallbackObject;
+    PWSTR Name;
+} SYSTEM_CALLBACKS;
+
+/* Kernel Default Callbacks */
+PCALLBACK_OBJECT SetSystemTimeCallback;
+PCALLBACK_OBJECT SetSystemStateCallback;
+PCALLBACK_OBJECT PowerStateCallback;
+
+SYSTEM_CALLBACKS ExpInitializeCallback[] =
+{
+   {&SetSystemTimeCallback, L"\\Callback\\SetSystemTime"},
+   {&SetSystemStateCallback, L"\\Callback\\SetSystemState"},
+   {&PowerStateCallback, L"\\Callback\\PowerState"},
+   {NULL, NULL}
+};
+
+POBJECT_TYPE ExCallbackObjectType;
+KEVENT ExpCallbackEvent;
+
 /* FUNCTIONS *****************************************************************/
 
 /*
@@ -51,7 +86,7 @@ ExpInitializeCallbacks(VOID)
    RtlZeroMemory(&ObjectTypeInitializer, sizeof(ObjectTypeInitializer));
    RtlInitUnicodeString(&Name, L"Callback");
    ObjectTypeInitializer.Length = sizeof(ObjectTypeInitializer);
-   ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(_INT_CALLBACK_OBJECT);
+   ObjectTypeInitializer.DefaultNonPagedPoolCharge = sizeof(CALLBACK_OBJECT);
    ObjectTypeInitializer.GenericMapping = ExpCallbackMapping;
    ObjectTypeInitializer.PoolType = NonPagedPool;
    ObjectTypeInitializer.UseDefaultObject = TRUE;
@@ -153,7 +188,7 @@ ExCreateCallback(
    IN BOOLEAN AllowMultipleCallbacks
 )
 {
-   PINT_CALLBACK_OBJECT Callback;
+   PCALLBACK_OBJECT Callback;
    NTSTATUS    Status;
    HANDLE     Handle;
 
@@ -183,7 +218,7 @@ ExCreateCallback(
                               ObjectAttributes,
                               KernelMode,
                               NULL,
-                              sizeof(_INT_CALLBACK_OBJECT),
+                              sizeof(CALLBACK_OBJECT),
                               0,
                               0,
                               (PVOID *)&Callback );
@@ -251,7 +286,7 @@ ExNotifyCallback(
    IN PVOID Argument2
 )
 {
-   PINT_CALLBACK_OBJECT    CallbackObject = (PINT_CALLBACK_OBJECT)OpaqueCallbackObject;
+   PCALLBACK_OBJECT    CallbackObject = (PCALLBACK_OBJECT)OpaqueCallbackObject;
    PLIST_ENTRY             RegisteredCallbacks;
    PCALLBACK_REGISTRATION  CallbackRegistration;
    KIRQL                   OldIrql;
@@ -330,7 +365,7 @@ ExRegisterCallback(
    IN PVOID CallbackContext
 )
 {
-   PINT_CALLBACK_OBJECT CallbackObject = (PINT_CALLBACK_OBJECT)OpaqueCallbackObject;
+   PCALLBACK_OBJECT CallbackObject = (PCALLBACK_OBJECT)OpaqueCallbackObject;
    PCALLBACK_REGISTRATION  CallbackRegistration = NULL;
    KIRQL     OldIrql;
 
@@ -398,7 +433,7 @@ ExUnregisterCallback(
 )
 {
    PCALLBACK_REGISTRATION  CallbackRegistration;
-   PINT_CALLBACK_OBJECT    CallbackObject;
+   PCALLBACK_OBJECT    CallbackObject;
    KIRQL                   OldIrql;
 
    PAGED_CODE();
index f4b8bf6..c10edcb 100644 (file)
@@ -1,26 +1,7 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_ARCH_PS_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_ARCH_PS_H
 
 #ifdef _M_IX86
-#include <internal/i386/ps.h>
 #define KiArchContextSwitch          KiSwapContext
 #define KiArchInitThreadWithContext  Ke386InitThreadWithContext
 #else
diff --git a/reactos/ntoskrnl/include/internal/asm.h b/reactos/ntoskrnl/include/internal/asm.h
new file mode 100644 (file)
index 0000000..7a27a07
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Definitions for the offsets of members in the KV86M_REGISTERS
+ */
+#define        KV86M_REGISTERS_EBP     (0x0)
+#define        KV86M_REGISTERS_EDI     (0x4)
+#define        KV86M_REGISTERS_ESI     (0x8)
+#define KV86M_REGISTERS_EDX    (0xC)
+#define        KV86M_REGISTERS_ECX     (0x10)
+#define KV86M_REGISTERS_EBX    (0x14)
+#define KV86M_REGISTERS_EAX    (0x18)
+#define        KV86M_REGISTERS_DS      (0x1C)
+#define KV86M_REGISTERS_ES     (0x20)
+#define KV86M_REGISTERS_FS     (0x24)
+#define KV86M_REGISTERS_GS     (0x28)
+#define KV86M_REGISTERS_EIP     (0x2C)
+#define KV86M_REGISTERS_CS      (0x30)
+#define KV86M_REGISTERS_EFLAGS  (0x34)
+#define        KV86M_REGISTERS_ESP     (0x38)
+#define KV86M_REGISTERS_SS     (0x3C)
+
+#define TF_SAVED_EXCEPTION_STACK (0x8C)
+#define TF_REGS                  (0x90)
+#define TF_ORIG_EBP              (0x94)
+
+
+/* TSS Offsets */
+#define KTSS_ESP0      (0x4)
+#define KTSS_CR3       (0x1C)
+#define KTSS_EFLAGS    (0x24)
+#define KTSS_IOMAPBASE (0x66)
+
+/*
+ * Defines for accessing KPCR and KTHREAD structure members
+ */
+#define KTHREAD_INITIAL_STACK     0x18
+#define KTHREAD_STACK_LIMIT       0x1C
+#define KTHREAD_TEB               0x20
+#define KTHREAD_KERNEL_STACK      0x28
+#define KTHREAD_NPX_STATE         0x31
+#define KTHREAD_STATE             0x2D
+#define KTHREAD_APCSTATE_PROCESS  0x34 + 0x10
+#define KTHREAD_PENDING_USER_APC  0x34 + 0x16
+#define KTHREAD_PENDING_KERNEL_APC 0x34 + 0x15
+#define KTHREAD_CONTEXT_SWITCHES  0x4C
+#define KTHREAD_WAIT_IRQL         0x54
+#define KTHREAD_SERVICE_TABLE     0xDC
+#define KTHREAD_PREVIOUS_MODE     0x137
+#define KTHREAD_TRAP_FRAME        0x128
+#define KTHREAD_CALLBACK_STACK    0x120
+
+#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
+#define KPROCESS_LDT_DESCRIPTOR0      0x20
+#define KPROCESS_LDT_DESCRIPTOR1      0x24
+#define KPROCESS_IOPM_OFFSET          0x30
+
+#define KPCR_EXCEPTION_LIST       0x0
+#define KPCR_INITIAL_STACK        0x4
+#define KPCR_STACK_LIMIT          0x8
+#define KPCR_SELF                 0x1C
+#define KPCR_GDT                  0x3C
+#define KPCR_TSS                  0x40
+#define KPCR_CURRENT_THREAD       0x124
+#define KPCR_NPX_THREAD           0x2A4
+
+/* FPU Save Area Offsets */
+#define FN_CONTROL_WORD        0x0
+#define FN_STATUS_WORD         0x4
+#define FN_TAG_WORD            0x8
+#define FN_DATA_SELECTOR       0x18
+#define FN_CR0_NPX_STATE       0x20C
+#define SIZEOF_FX_SAVE_AREA    528
+
+/* Trap Frame Offsets */
+#define KTRAP_FRAME_DEBUGEBP     (0x0)
+#define KTRAP_FRAME_DEBUGEIP     (0x4)
+#define KTRAP_FRAME_DEBUGARGMARK (0x8)
+#define KTRAP_FRAME_DEBUGPOINTER (0xC)
+#define KTRAP_FRAME_TEMPSS       (0x10)
+#define KTRAP_FRAME_TEMPESP      (0x14)
+#define KTRAP_FRAME_DR0          (0x18)
+#define KTRAP_FRAME_DR1          (0x1C)
+#define KTRAP_FRAME_DR2          (0x20)
+#define KTRAP_FRAME_DR3          (0x24)
+#define KTRAP_FRAME_DR6          (0x28)
+#define KTRAP_FRAME_DR7          (0x2C)
+#define KTRAP_FRAME_GS           (0x30)
+#define KTRAP_FRAME_RESERVED1    (0x32)
+#define KTRAP_FRAME_ES           (0x34)
+#define KTRAP_FRAME_RESERVED2    (0x36)
+#define KTRAP_FRAME_DS           (0x38)
+#define KTRAP_FRAME_RESERVED3    (0x3A)
+#define KTRAP_FRAME_EDX          (0x3C)
+#define KTRAP_FRAME_ECX          (0x40)
+#define KTRAP_FRAME_EAX          (0x44)
+#define KTRAP_FRAME_PREVIOUS_MODE (0x48)
+#define KTRAP_FRAME_EXCEPTION_LIST (0x4C)
+#define KTRAP_FRAME_FS             (0x50)
+#define KTRAP_FRAME_RESERVED4      (0x52)
+#define KTRAP_FRAME_EDI            (0x54)
+#define KTRAP_FRAME_ESI            (0x58)
+#define KTRAP_FRAME_EBX            (0x5C)
+#define KTRAP_FRAME_EBP            (0x60)
+#define KTRAP_FRAME_ERROR_CODE     (0x64)
+#define KTRAP_FRAME_EIP            (0x68)
+#define KTRAP_FRAME_CS             (0x6C)
+#define KTRAP_FRAME_EFLAGS         (0x70)
+#define KTRAP_FRAME_ESP            (0x74)
+#define KTRAP_FRAME_SS             (0x78)
+#define KTRAP_FRAME_RESERVED5      (0x7A)
+#define KTRAP_FRAME_V86_ES         (0x7C)
+#define KTRAP_FRAME_RESERVED6      (0x7E)
+#define KTRAP_FRAME_V86_DS         (0x80)
+#define KTRAP_FRAME_RESERVED7      (0x82)
+#define KTRAP_FRAME_V86_FS         (0x84)
+#define KTRAP_FRAME_RESERVED8      (0x86)
+#define KTRAP_FRAME_V86_GS         (0x88)
+#define KTRAP_FRAME_RESERVED9      (0x8A)
+#define KTRAP_FRAME_SIZE           (0x8C)
diff --git a/reactos/ntoskrnl/include/internal/callbacks.h b/reactos/ntoskrnl/include/internal/callbacks.h
deleted file mode 100644 (file)
index 365fc4f..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * PROJECT:         ReactOS kernel
- * FILE:            ntoskrnl/ex/callback.h
- * PURPOSE:         Executive callbacks Header
- * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
- * PORTABILITY:     Checked.
- * UPDATE HISTORY:
- *                  Created 30/05/04
- */
-
-#ifndef __INCLUDE_INTERNAL_CALLBACKS_H
-#define __INCLUDE_INTERNAL_CALLBACKS_H
-
-/* Tag */
-#define CALLBACK_TAG   TAG('C','L','B','K')
-
-/* ROS Callback Object */
-typedef struct _INT_CALLBACK_OBJECT {
-   KSPIN_LOCK Lock;
-   LIST_ENTRY RegisteredCallbacks;
-   ULONG AllowMultipleCallbacks;
-} _INT_CALLBACK_OBJECT , *PINT_CALLBACK_OBJECT;
-
-/* Structure used to hold Callbacks */
-typedef struct _CALLBACK_REGISTRATION {
-   LIST_ENTRY RegisteredCallbacks;
-   PINT_CALLBACK_OBJECT CallbackObject;
-   PCALLBACK_FUNCTION CallbackFunction;
-   PVOID CallbackContext;
-   ULONG InUse;
-   BOOLEAN PendingDeletion;
-} CALLBACK_REGISTRATION, *PCALLBACK_REGISTRATION;
-
-/* Add 0x1 flag to differentiate */
-#define CALLBACK_ALL_ACCESS            (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x0001)
-#define CALLBACK_EXECUTE               (STANDARD_RIGHTS_EXECUTE|SYNCHRONIZE|0x0001)
-#define CALLBACK_WRITE                 (STANDARD_RIGHTS_WRITE|SYNCHRONIZE|0x0001)
-#define CALLBACK_READ                  (STANDARD_RIGHTS_READ|SYNCHRONIZE|0x0001)
-
-/* Mapping for Callback Object */
-GENERIC_MAPPING ExpCallbackMapping =
-{
-   CALLBACK_READ,
-   CALLBACK_WRITE,
-   CALLBACK_EXECUTE,
-   CALLBACK_ALL_ACCESS
-};
-
-/* Kernel Default Callbacks */
-PINT_CALLBACK_OBJECT SetSystemTimeCallback;
-PINT_CALLBACK_OBJECT SetSystemStateCallback;
-PINT_CALLBACK_OBJECT PowerStateCallback;
-
-typedef struct {
-    PINT_CALLBACK_OBJECT *CallbackObject;
-    PWSTR Name;
-} SYSTEM_CALLBACKS;
-
-SYSTEM_CALLBACKS ExpInitializeCallback[] = {
-   {&SetSystemTimeCallback, L"\\Callback\\SetSystemTime"},
-   {&SetSystemStateCallback, L"\\Callback\\SetSystemState"},
-   {&PowerStateCallback, L"\\Callback\\PowerState"},
-   {NULL, NULL}
-};
-
-/* Callback Event */
-KEVENT ExpCallbackEvent;
-
-/* Callback Object */
-POBJECT_TYPE ExCallbackObjectType;
-
-#endif /* __INCLUDE_INTERNAL_CALLBACKS_H */
-
-/* EOF */
index 072500c..df0f0f2 100644 (file)
@@ -3,87 +3,97 @@
 
 typedef struct _BCB
 {
-  LIST_ENTRY BcbSegmentListHead;
-  LIST_ENTRY BcbRemoveListEntry;
-  BOOLEAN RemoveOnClose;
-  ULONG TimeStamp;
-  PFILE_OBJECT FileObject;
-  ULONG CacheSegmentSize;
-  LARGE_INTEGER AllocationSize;
-  LARGE_INTEGER FileSize;
-  KSPIN_LOCK BcbLock;
-  ULONG RefCount;
+    LIST_ENTRY BcbSegmentListHead;
+    LIST_ENTRY BcbRemoveListEntry;
+    BOOLEAN RemoveOnClose;
+    ULONG TimeStamp;
+    PFILE_OBJECT FileObject;
+    ULONG CacheSegmentSize;
+    LARGE_INTEGER AllocationSize;
+    LARGE_INTEGER FileSize;
+    KSPIN_LOCK BcbLock;
+    ULONG RefCount;
 } BCB, *PBCB;
 
 typedef struct _CACHE_SEGMENT
 {
-  /* Base address of the region where the cache segment data is mapped. */
-  PVOID BaseAddress;
-  /*
-   * Memory area representing the region where the cache segment data is
-   * mapped.
-   */
-  struct _MEMORY_AREA* MemoryArea;
-  /* Are the contents of the cache segment data valid. */
-  BOOLEAN Valid;
-  /* Are the contents of the cache segment data newer than those on disk. */
-  BOOLEAN Dirty;
-  /* Page out in progress */
-  BOOLEAN PageOut;
-  ULONG MappedCount;
-  /* Entry in the list of segments for this BCB. */
-  LIST_ENTRY BcbSegmentListEntry;
-  /* Entry in the list of segments which are dirty. */
-  LIST_ENTRY DirtySegmentListEntry;
-  /* Entry in the list of segments. */
-  LIST_ENTRY CacheSegmentListEntry;
-  LIST_ENTRY CacheSegmentLRUListEntry;
-  /* Offset in the file which this cache segment maps. */
-  ULONG FileOffset;
-  /* Lock. */
-  FAST_MUTEX Lock;
-  /* Number of references. */
-  ULONG ReferenceCount;
-  /* Pointer to the BCB for the file which this cache segment maps data for. */
-  PBCB Bcb;
-  /* Pointer to the next cache segment in a chain. */
-  struct _CACHE_SEGMENT* NextInChain;
+    /* Base address of the region where the cache segment data is mapped. */
+    PVOID BaseAddress;
+    /*
+     * Memory area representing the region where the cache segment data is
+     * mapped.
+     */
+    struct _MEMORY_AREA* MemoryArea;
+    /* Are the contents of the cache segment data valid. */
+    BOOLEAN Valid;
+    /* Are the contents of the cache segment data newer than those on disk. */
+    BOOLEAN Dirty;
+    /* Page out in progress */
+    BOOLEAN PageOut;
+    ULONG MappedCount;
+    /* Entry in the list of segments for this BCB. */
+    LIST_ENTRY BcbSegmentListEntry;
+    /* Entry in the list of segments which are dirty. */
+    LIST_ENTRY DirtySegmentListEntry;
+    /* Entry in the list of segments. */
+    LIST_ENTRY CacheSegmentListEntry;
+    LIST_ENTRY CacheSegmentLRUListEntry;
+    /* Offset in the file which this cache segment maps. */
+    ULONG FileOffset;
+    /* Lock. */
+    FAST_MUTEX Lock;
+    /* Number of references. */
+    ULONG ReferenceCount;
+    /* Pointer to the BCB for the file which this cache segment maps data for. */
+    PBCB Bcb;
+    /* Pointer to the next cache segment in a chain. */
+    struct _CACHE_SEGMENT* NextInChain;
 } CACHE_SEGMENT, *PCACHE_SEGMENT;
 
 typedef struct _INTERNAL_BCB
 {
-  PUBLIC_BCB PFCB;
-  PCACHE_SEGMENT CacheSegment;
-  BOOLEAN Dirty;
-  CSHORT RefCount; /* (At offset 0x34 on WinNT4) */
+    PUBLIC_BCB PFCB;
+    PCACHE_SEGMENT CacheSegment;
+    BOOLEAN Dirty;
+    CSHORT RefCount; /* (At offset 0x34 on WinNT4) */
 } INTERNAL_BCB, *PINTERNAL_BCB;
 
 VOID
 STDCALL
-CcMdlReadCompleteDev(IN PMDL MdlChain,
-                     IN PFILE_OBJECT FileObject);
+CcMdlReadCompleteDev(
+    IN PMDL MdlChain,
+    IN PFILE_OBJECT FileObject
+);
 
 VOID
 STDCALL
-CcMdlWriteCompleteDev(IN PLARGE_INTEGER FileOffset,
-                      IN PMDL MdlChain,
-                      IN PFILE_OBJECT FileObject);
+CcMdlWriteCompleteDev(
+    IN PLARGE_INTEGER FileOffset,
+    IN PMDL MdlChain,
+    IN PFILE_OBJECT FileObject
+);
 
 NTSTATUS
 CcRosFlushCacheSegment(PCACHE_SEGMENT CacheSegment);
 
 NTSTATUS
-CcRosGetCacheSegment(PBCB Bcb,
-                    ULONG FileOffset,
-                    PULONG BaseOffset,
-                    PVOID* BaseAddress,
-                    PBOOLEAN UptoDate,
-                    PCACHE_SEGMENT* CacheSeg);
+CcRosGetCacheSegment(
+    PBCB Bcb,
+    ULONG FileOffset,
+    PULONG BaseOffset,
+    PVOID* BaseAddress,
+    PBOOLEAN UptoDate,
+    PCACHE_SEGMENT* CacheSeg
+);
+
 VOID
 CcInitView(VOID);
 
 NTSTATUS
-CcRosFreeCacheSegment(PBCB, PCACHE_SEGMENT);
+CcRosFreeCacheSegment(
+    PBCB, 
+    PCACHE_SEGMENT
+);
 
 NTSTATUS
 ReadCacheSegment(PCACHE_SEGMENT CacheSeg);
@@ -94,25 +104,40 @@ WriteCacheSegment(PCACHE_SEGMENT CacheSeg);
 VOID CcInit(VOID);
 
 NTSTATUS
-CcRosUnmapCacheSegment(PBCB Bcb, ULONG FileOffset, BOOLEAN NowDirty);
+CcRosUnmapCacheSegment(
+    PBCB Bcb, 
+    ULONG FileOffset, 
+    BOOLEAN NowDirty
+);
 
 PCACHE_SEGMENT
-CcRosLookupCacheSegment(PBCB Bcb, ULONG FileOffset);
+CcRosLookupCacheSegment(
+    PBCB Bcb, 
+    ULONG FileOffset
+);
 
 NTSTATUS
-CcRosGetCacheSegmentChain(PBCB Bcb,
-                         ULONG FileOffset,
-                         ULONG Length,
-                         PCACHE_SEGMENT* CacheSeg);
+CcRosGetCacheSegmentChain(
+    PBCB Bcb,
+    ULONG FileOffset,
+    ULONG Length,
+    PCACHE_SEGMENT* CacheSeg
+);
 
 VOID
 CcInitCacheZeroPage(VOID);
 
 NTSTATUS
-CcRosMarkDirtyCacheSegment(PBCB Bcb, ULONG FileOffset);
+CcRosMarkDirtyCacheSegment(
+    PBCB Bcb, 
+    ULONG FileOffset
+);
 
 NTSTATUS
-CcRosFlushDirtyPages(ULONG Target, PULONG Count);
+CcRosFlushDirtyPages(
+    ULONG Target, 
+    PULONG Count
+);
 
 VOID
 CcRosDereferenceCache(PFILE_OBJECT FileObject);
@@ -124,18 +149,23 @@ VOID
 CcRosSetRemoveOnClose(PSECTION_OBJECT_POINTERS SectionObjectPointer);
 
 NTSTATUS
-CcRosReleaseCacheSegment (BCB*             Bcb,
-                         CACHE_SEGMENT*    CacheSeg,
-                         BOOLEAN           Valid,
-                         BOOLEAN           Dirty,
-                         BOOLEAN           Mapped);
-
-NTSTATUS STDCALL
-CcRosRequestCacheSegment (BCB*             Bcb,
-                         ULONG             FileOffset,
-                         PVOID*            BaseAddress,
-                         PBOOLEAN          UptoDate,
-                         CACHE_SEGMENT**   CacheSeg);
+CcRosReleaseCacheSegment(
+    BCB*                   Bcb,
+    CACHE_SEGMENT*    CacheSeg,
+    BOOLEAN        Valid,
+    BOOLEAN        Dirty,
+    BOOLEAN        Mapped
+);
+
+NTSTATUS 
+STDCALL
+CcRosRequestCacheSegment(
+    BCB*                   Bcb,
+    ULONG                  FileOffset,
+    PVOID*         BaseAddress,
+    PBOOLEAN       UptoDate,
+    CACHE_SEGMENT**   CacheSeg
+);
 
 NTSTATUS
 CcTryToInitializeFileCache(PFILE_OBJECT FileObject);
diff --git a/reactos/ntoskrnl/include/internal/config.h b/reactos/ntoskrnl/include/internal/config.h
deleted file mode 100644 (file)
index c92a509..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef __DEPRECATED_INTERNAL_CONFIG_H
-#define __DEPRECATED__INTERNAL_CONFIG_H
-
-/* Moved to /include/roscfg.h */
-#include <roscfg.h>
-
-#endif /* __DEPRECATED_INTERNAL_CONFIG_H */
index 9c419fc..d50b48f 100644 (file)
@@ -1,139 +1,6 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_DBGK_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_DBGK_H
 
-//
-// DebugObject access rights.
-// Note that DEBUG_OBJECT_ALL_ACCESS includes the specific rights 0x0F, but there are only two
-// debug object specific access rights that are ever checked by the kernel. This appears to be a bug.
-//
-#define DEBUG_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0F)
-#define DEBUG_OBJECT_WAIT_STATE_CHANGE 0x0001 /* Required to call NtWaitForDebugEvent & NtContinueDebugEvent */
-#define DEBUG_OBJECT_ADD_REMOVE_PROCESS 0x0002 /* Required to call NtDebugActiveProcess & NtRemoveProcessDebug */
-
-typedef enum _DEBUGOBJECTINFOCLASS {
-       DebugObjectUnusedInformation,
-       DebugObjectKillProcessOnExitInformation
-} DEBUGOBJECTINFOCLASS, * PDEBUGOBJECTINFOCLASS;
-
-typedef struct _DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION {
-       ULONG KillProcessOnExit;                // Interpreted as a BOOLEAN, TRUE -> process is terminated on NtRemoveProcessDebug.
-} DEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION, *
-PDEBUG_OBJECT_KILL_PROCESS_ON_EXIT_INFORMATION;
-
-//
-// Debug Object
-//
-typedef struct _DBGK_DEBUG_OBJECT {
-    KEVENT Event;
-    FAST_MUTEX Mutex;
-    LIST_ENTRY StateEventListEntry;
-    union {
-        ULONG Flags;
-        struct {
-            UCHAR DebuggerInactive  :1;
-            UCHAR KillProcessOnExit :1;
-        };
-    };
-} DBGK_DEBUG_OBJECT, *PDBGK_DEBUG_OBJECT;
-
-//
-// DbgUi types for LPC debug port messages (KM -> UM).
-//
-// These also apply to Nt*Debug APIs with NT 5.01, 5.02, and later.
-//
-typedef enum _DBG_STATE {
-       DbgIdle,
-       DbgReplyPending,
-       DbgCreateThreadStateChange,
-       DbgCreateProcessStateChange,
-       DbgExitThreadStateChange,
-       DbgExitProcessStateChange,
-       DbgExceptionStateChange,
-       DbgBreakpointStateChange,
-       DbgSingleStepStateChange,
-       DbgLoadDllStateChange,
-       DbgUnloadDllStateChange
-} DBG_STATE, *PDBG_STATE;
-
-typedef struct _DBGKM_EXCEPTION {
-       EXCEPTION_RECORD ExceptionRecord;
-       ULONG FirstChance;
-} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION;
-
-typedef struct _DBGKM_CREATE_THREAD {
-       ULONG SubSystemKey;
-       PVOID StartAddress;
-} DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD;
-
-typedef struct _DBGKM_CREATE_PROCESS {
-       ULONG SubSystemKey;
-       HANDLE FileHandle;
-       PVOID BaseOfImage;
-       ULONG DebugInfoFileOffset;
-       ULONG DebugInfoSize;
-       DBGKM_CREATE_THREAD InitialThread;
-} DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS;
-
-typedef struct _DBGKM_EXIT_THREAD {
-       NTSTATUS ExitStatus;
-} DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD;
-
-typedef struct _DBGKM_EXIT_PROCESS {
-       NTSTATUS ExitStatus;
-} DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS;
-
-typedef struct _DBGKM_LOAD_DLL {
-       HANDLE FileHandle;
-       PVOID BaseOfDll;
-       ULONG DebugInfoFileOffset;
-       ULONG DebugInfoSize;
-} DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL;
-
-typedef struct _DBGKM_UNLOAD_DLL {
-       PVOID BaseAddress;
-} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL;
-
-typedef struct _DBGUI_WAIT_STATE_CHANGE {
-       DBG_STATE NewState;
-       CLIENT_ID AppClientId;
-       union {
-               struct {
-                       HANDLE HandleToThread;
-                       DBGKM_CREATE_THREAD NewThread;
-               } CreateThread;
-               struct {
-                       HANDLE HandleToProcess;
-                       HANDLE HandleToThread;
-                       DBGKM_CREATE_PROCESS NewProcess;
-               } CreateProcessInfo;
-               DBGKM_EXIT_THREAD ExitThread;
-               DBGKM_EXIT_PROCESS ExitProcess;
-               DBGKM_EXCEPTION Exception;
-               DBGKM_LOAD_DLL LoadDll;
-               DBGKM_UNLOAD_DLL UnloadDll;
-       } StateInfo;
-} DBGUI_WAIT_STATE_CHANGE, * PDBGUI_WAIT_STATE_CHANGE;
-
-
 VOID
 STDCALL
 DbgkCreateThread(PVOID StartAddress);
index bf51ba7..ff840d8 100644 (file)
@@ -1,87 +1,75 @@
-/*
- * internal executive prototypes
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_EXECUTIVE_H
 
 typedef enum
 {
-  wmCenter = 0,
-  wmTile,
-  wmStretch
+    wmCenter = 0,
+    wmTile,
+    wmStretch
 } WALLPAPER_MODE;
 
 typedef struct _WINSTATION_OBJECT
 {
-  PVOID SharedHeap; /* points to kmode memory! */
-
-  CSHORT Type;
-  CSHORT Size;
-  KSPIN_LOCK Lock;
-  UNICODE_STRING Name;
-  LIST_ENTRY DesktopListHead;
-  PRTL_ATOM_TABLE AtomTable;
-  PVOID HandleTable;
-  HANDLE SystemMenuTemplate;
-  PVOID SystemCursor;
-  UINT CaretBlinkRate;
-  HANDLE ShellWindow;
-  HANDLE ShellListView;
-
-  /* Wallpaper */
-  HANDLE hbmWallpaper;
-  ULONG cxWallpaper, cyWallpaper;
-  WALLPAPER_MODE WallpaperMode;
-
-  ULONG Flags;
-  struct _DESKTOP_OBJECT* ActiveDesktop;
-  /* FIXME: Clipboard */
-  LIST_ENTRY HotKeyListHead;
-  FAST_MUTEX HotKeyListLock;
+    PVOID SharedHeap; /* points to kmode memory! */
+
+    CSHORT Type;
+    CSHORT Size;
+    KSPIN_LOCK Lock;
+    UNICODE_STRING Name;
+    LIST_ENTRY DesktopListHead;
+    PRTL_ATOM_TABLE AtomTable;
+    PVOID HandleTable;
+    HANDLE SystemMenuTemplate;
+    PVOID SystemCursor;
+    UINT CaretBlinkRate;
+    HANDLE ShellWindow;
+    HANDLE ShellListView;
+
+    /* Wallpaper */
+    HANDLE hbmWallpaper;
+    ULONG cxWallpaper, cyWallpaper;
+    WALLPAPER_MODE WallpaperMode;
+
+    ULONG Flags;
+    struct _DESKTOP_OBJECT* ActiveDesktop;
+    /* FIXME: Clipboard */
+    LIST_ENTRY HotKeyListHead;
+    FAST_MUTEX HotKeyListLock;
 } WINSTATION_OBJECT, *PWINSTATION_OBJECT;
 
 typedef struct _DESKTOP_OBJECT
 {
-  PVOID DesktopHeap; /* points to kmode memory! */
-
-  CSHORT Type;
-  CSHORT Size;
-  LIST_ENTRY ListEntry;
-  KSPIN_LOCK Lock;
-  UNICODE_STRING Name;
-  /* Pointer to the associated window station. */
-  struct _WINSTATION_OBJECT *WindowStation;
-  /* Pointer to the active queue. */
-  PVOID ActiveMessageQueue;
-  /* Rectangle of the work area */
+    PVOID DesktopHeap; /* points to kmode memory! */
+
+    CSHORT Type;
+    CSHORT Size;
+    LIST_ENTRY ListEntry;
+    KSPIN_LOCK Lock;
+    UNICODE_STRING Name;
+    /* Pointer to the associated window station. */
+    struct _WINSTATION_OBJECT *WindowStation;
+    /* Pointer to the active queue. */
+    PVOID ActiveMessageQueue;
+    /* Rectangle of the work area */
 #ifdef __WIN32K__
-  RECT WorkArea;
+    RECT WorkArea;
 #else
-  LONG WorkArea[4];
+    LONG WorkArea[4];
 #endif
-  /* Handle of the desktop window. */
-  HANDLE DesktopWindow;
-  HANDLE PrevActiveWindow;
-  /* Thread blocking input */
-  PVOID BlockInputThread;
+    /* Handle of the desktop window. */
+    HANDLE DesktopWindow;
+    HANDLE PrevActiveWindow;
+    /* Thread blocking input */
+    PVOID BlockInputThread;
 
-  LIST_ENTRY ShellHookWindows;
+    LIST_ENTRY ShellHookWindows;
 } DESKTOP_OBJECT, *PDESKTOP_OBJECT;
 
-
-typedef VOID (*PLOOKASIDE_MINMAX_ROUTINE)(
-  POOL_TYPE PoolType,
-  ULONG Size,
-  PUSHORT MinimumDepth,
-  PUSHORT MaximumDepth);
-
 /* GLOBAL VARIABLES *********************************************************/
 
 extern TIME_ZONE_INFORMATION ExpTimeZoneInfo;
 extern LARGE_INTEGER ExpTimeZoneBias;
 extern ULONG ExpTimeZoneId;
-
 extern POBJECT_TYPE ExEventPairObjectType;
 
 /* INITIALIZATION FUNCTIONS *************************************************/
@@ -91,22 +79,50 @@ ExpWin32kInit(VOID);
 
 VOID
 ExInit2(VOID);
+
 VOID
 ExInit3(VOID);
+
 VOID
 ExpInitTimeZoneInfo(VOID);
+
 VOID
 ExpInitializeWorkerThreads(VOID);
+
 VOID
 ExpInitLookasideLists(VOID);
+
 VOID
 ExpInitializeCallbacks(VOID);
+
 VOID
 ExpInitUuids(VOID);
+
 VOID
 STDCALL
 ExpInitializeExecutive(VOID);
 
+VOID
+ExpInitializeEventImplementation(VOID);
+
+VOID
+ExpInitializeEventImplementation(VOID);
+
+VOID
+ExpInitializeEventPairImplementation(VOID);
+
+VOID
+ExpInitializeSemaphoreImplementation(VOID);
+
+VOID
+ExpInitializeMutantImplementation(VOID);
+
+VOID
+ExpInitializeTimerImplementation(VOID);
+
+VOID
+ExpInitializeProfileImplementation(VOID);
+
 /* HANDLE TABLE FUNCTIONS ***************************************************/
 
 #define EX_HANDLE_ENTRY_LOCKED (1 << ((sizeof(PVOID) * 8) - 1))
@@ -123,48 +139,90 @@ ExpInitializeExecutive(VOID);
                                    EX_HANDLE_ENTRY_INHERITABLE |               \
                                    EX_HANDLE_ENTRY_AUDITONCLOSE)
 
-typedef VOID (STDCALL PEX_DESTROY_HANDLE_CALLBACK)(PHANDLE_TABLE HandleTable, PVOID Object, ULONG GrantedAccess, PVOID Context);
-typedef BOOLEAN (STDCALL PEX_DUPLICATE_HANDLE_CALLBACK)(PHANDLE_TABLE HandleTable, PHANDLE_TABLE_ENTRY HandleTableEntry, PVOID Context);
-typedef BOOLEAN (STDCALL PEX_CHANGE_HANDLE_CALLBACK)(PHANDLE_TABLE HandleTable, PHANDLE_TABLE_ENTRY HandleTableEntry, PVOID Context);
+typedef VOID (STDCALL PEX_DESTROY_HANDLE_CALLBACK)(
+    PHANDLE_TABLE HandleTable, 
+    PVOID Object, 
+    ULONG GrantedAccess, 
+    PVOID Context
+);
+
+typedef BOOLEAN (STDCALL PEX_DUPLICATE_HANDLE_CALLBACK)(
+    PHANDLE_TABLE HandleTable, 
+    PHANDLE_TABLE_ENTRY HandleTableEntry, 
+    PVOID Context
+);
+
+typedef BOOLEAN (STDCALL PEX_CHANGE_HANDLE_CALLBACK)(
+    PHANDLE_TABLE HandleTable, 
+    PHANDLE_TABLE_ENTRY HandleTableEntry, 
+    PVOID Context
+);
 
 VOID
 ExpInitializeHandleTables(VOID);
+
 PHANDLE_TABLE
 ExCreateHandleTable(IN PEPROCESS QuotaProcess  OPTIONAL);
+
 VOID
-ExDestroyHandleTable(IN PHANDLE_TABLE HandleTable,
-                     IN PEX_DESTROY_HANDLE_CALLBACK DestroyHandleCallback  OPTIONAL,
-                     IN PVOID Context  OPTIONAL);
+ExDestroyHandleTable(
+    IN PHANDLE_TABLE HandleTable,
+    IN PEX_DESTROY_HANDLE_CALLBACK DestroyHandleCallback  OPTIONAL,
+    IN PVOID Context  OPTIONAL
+);
+
 PHANDLE_TABLE
-ExDupHandleTable(IN PEPROCESS QuotaProcess  OPTIONAL,
-                 IN PEX_DUPLICATE_HANDLE_CALLBACK DuplicateHandleCallback  OPTIONAL,
-                 IN PVOID Context  OPTIONAL,
-                 IN PHANDLE_TABLE SourceHandleTable);
+ExDupHandleTable(
+    IN PEPROCESS QuotaProcess  OPTIONAL,
+    IN PEX_DUPLICATE_HANDLE_CALLBACK DuplicateHandleCallback  OPTIONAL,
+    IN PVOID Context  OPTIONAL,
+    IN PHANDLE_TABLE SourceHandleTable
+);
+
 BOOLEAN
-ExLockHandleTableEntry(IN PHANDLE_TABLE HandleTable,
-                       IN PHANDLE_TABLE_ENTRY Entry);
+ExLockHandleTableEntry(
+    IN PHANDLE_TABLE HandleTable,
+    IN PHANDLE_TABLE_ENTRY Entry
+);
+
 VOID
-ExUnlockHandleTableEntry(IN PHANDLE_TABLE HandleTable,
-                         IN PHANDLE_TABLE_ENTRY Entry);
+ExUnlockHandleTableEntry(
+    IN PHANDLE_TABLE HandleTable,
+    IN PHANDLE_TABLE_ENTRY Entry
+);
+
 LONG
-ExCreateHandle(IN PHANDLE_TABLE HandleTable,
-               IN PHANDLE_TABLE_ENTRY Entry);
+ExCreateHandle(
+    IN PHANDLE_TABLE HandleTable,
+    IN PHANDLE_TABLE_ENTRY Entry
+);
+
 BOOLEAN
-ExDestroyHandle(IN PHANDLE_TABLE HandleTable,
-                IN LONG Handle);
+ExDestroyHandle(
+    IN PHANDLE_TABLE HandleTable,
+    IN LONG Handle
+);
+
 VOID
-ExDestroyHandleByEntry(IN PHANDLE_TABLE HandleTable,
-                       IN PHANDLE_TABLE_ENTRY Entry,
-                       IN LONG Handle);
+ExDestroyHandleByEntry(
+    IN PHANDLE_TABLE HandleTable,
+    IN PHANDLE_TABLE_ENTRY Entry,
+    IN LONG Handle
+);
+
 PHANDLE_TABLE_ENTRY
-ExMapHandleToPointer(IN PHANDLE_TABLE HandleTable,
-                     IN LONG Handle);
+ExMapHandleToPointer(
+    IN PHANDLE_TABLE HandleTable,
+    IN LONG Handle
+);
 
 BOOLEAN
-ExChangeHandle(IN PHANDLE_TABLE HandleTable,
-               IN LONG Handle,
-               IN PEX_CHANGE_HANDLE_CALLBACK ChangeHandleCallback,
-               IN PVOID Context);
+ExChangeHandle(
+    IN PHANDLE_TABLE HandleTable,
+    IN LONG Handle,
+    IN PEX_CHANGE_HANDLE_CALLBACK ChangeHandleCallback,
+    IN PVOID Context
+);
 
 /* PSEH EXCEPTION HANDLING **************************************************/
 
@@ -174,15 +232,17 @@ ExSystemExceptionFilter(VOID);
 
 static __inline _SEH_FILTER(_SEH_ExSystemExceptionFilter)
 {
-  return ExSystemExceptionFilter();
+    return ExSystemExceptionFilter();
 }
 
 /* OTHER FUNCTIONS **********************************************************/
 
 LONGLONG
 FASTCALL
-ExfpInterlockedExchange64(LONGLONG volatile * Destination,
-                          PLONGLONG Exchange);
+ExfpInterlockedExchange64(
+    LONGLONG volatile * Destination,
+    PLONGLONG Exchange
+);
 
 NTSTATUS
 ExpSetTimeZoneInformation(PTIME_ZONE_INFORMATION TimeZoneInformation);
similarity index 96%
rename from reactos/ntoskrnl/include/internal/ifs.h
rename to reactos/ntoskrnl/include/internal/fs.h
index 0393af3..428e9b8 100644 (file)
@@ -1,9 +1,6 @@
 #ifndef __INCLUDE_INTERNAL_IFS_H
 #define __INCLUDE_INTERNAL_IFS_H
 
-/* Look for "FSrt" in mem view */
-#define IFS_POOL_TAG 0x74725346
-
 typedef struct _FILE_LOCK_GRANTED {
        LIST_ENTRY                      ListEntry;
        FILE_LOCK_INFO                  Lock;
index 30267a8..b23db2b 100644 (file)
@@ -1,74 +1,8 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_FPU_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_I386_FPU_H
 
-#define FN_CONTROL_WORD        0x0
-#define FN_STATUS_WORD         0x4
-#define FN_TAG_WORD            0x8
-#define FN_DATA_SELECTOR       0x18
-#define FN_CR0_NPX_STATE       0x20C
-#define SIZEOF_FX_SAVE_AREA    528
-
-#ifndef __ASM__
-
 #include <internal/i386/ke.h>
 
-typedef struct _FNSAVE_FORMAT {
-       ULONG ControlWord;
-       ULONG StatusWord;
-       ULONG TagWord;
-       ULONG ErrorOffset;
-       ULONG ErrorSelector;
-       ULONG DataOffset;
-       ULONG DataSelector;
-       UCHAR RegisterArea[80];
-} FNSAVE_FORMAT, *PFNSAVE_FORMAT;
-
-typedef struct _FXSAVE_FORMAT {
-       USHORT ControlWord;
-       USHORT StatusWord;
-       USHORT TagWord;
-       USHORT ErrorOpcode;
-       ULONG ErrorOffset;
-       ULONG ErrorSelector;
-       ULONG DataOffset;
-       ULONG DataSelector;
-       ULONG MXCsr;
-       ULONG MXCsrMask;
-       UCHAR RegisterArea[128];
-       UCHAR Reserved3[128];
-       UCHAR Reserved4[224];
-       UCHAR Align16Byte[8];
-} FXSAVE_FORMAT, *PFXSAVE_FORMAT;
-
-typedef struct _FX_SAVE_AREA {
-       union {
-               FNSAVE_FORMAT FnArea;
-               FXSAVE_FORMAT FxArea;
-       } U;
-       ULONG NpxSavedCpu;
-       ULONG Cr0NpxState;
-} FX_SAVE_AREA, *PFX_SAVE_AREA;
-
-
 extern ULONG HardwareMathSupport;
 
 VOID
@@ -83,7 +17,5 @@ KiFloatingSaveAreaToFxSaveArea(PFX_SAVE_AREA FxSaveArea, CONST FLOATING_SAVE_ARE
 BOOL
 KiContextToFxSaveArea(PFX_SAVE_AREA FxSaveArea, PCONTEXT Context);
 
-#endif /* !__ASM__ */
-
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_FPU_H */
 
diff --git a/reactos/ntoskrnl/include/internal/i386/hal.h b/reactos/ntoskrnl/include/internal/i386/hal.h
deleted file mode 100644 (file)
index 7121dbc..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- */
-
-#ifndef __INTERNAL_HAL_HAL_H
-#define __INTERNAL_HAL_HAL_H
-
-/*
- * FUNCTION: Probes for a BIOS32 extension
- */
-VOID Hal_bios32_probe(VOID);
-
-/*
- * FUNCTION: Determines if a a bios32 service is present
- */
-BOOLEAN Hal_bios32_is_service_present(ULONG service);
-
-VOID HalInitializeDisplay (PLOADER_PARAMETER_BLOCK LoaderBlock);
-VOID HalResetDisplay (VOID);
-
-VOID HalpInitBusHandlers (VOID);
-
-/* irql.c */
-VOID HalpInitPICs(VOID);
-
-/* udelay.c */
-VOID HalpCalibrateStallExecution(VOID);
-
-/* pci.c */
-VOID HalpInitPciBus (VOID);
-
-struct _ADAPTER_OBJECT {
-  int Channel;
-  PVOID PagePort;
-  PVOID CountPort;
-  PVOID OffsetPort;
-  KSPIN_LOCK SpinLock;
-  PVOID Buffer;
-  BOOLEAN Inuse;
-};
-
-#endif /* __INTERNAL_HAL_HAL_H */
index 1d71f29..508a55b 100644 (file)
@@ -1,21 +1,3 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H
 
@@ -23,52 +5,6 @@
 #pragma GCC system_header
 #endif
 
-#define KTRAP_FRAME_DEBUGEBP     (0x0)
-#define KTRAP_FRAME_DEBUGEIP     (0x4)
-#define KTRAP_FRAME_DEBUGARGMARK (0x8)
-#define KTRAP_FRAME_DEBUGPOINTER (0xC)
-#define KTRAP_FRAME_TEMPSS       (0x10)
-#define KTRAP_FRAME_TEMPESP      (0x14)
-#define KTRAP_FRAME_DR0          (0x18)
-#define KTRAP_FRAME_DR1          (0x1C)
-#define KTRAP_FRAME_DR2          (0x20)
-#define KTRAP_FRAME_DR3          (0x24)
-#define KTRAP_FRAME_DR6          (0x28)
-#define KTRAP_FRAME_DR7          (0x2C)
-#define KTRAP_FRAME_GS           (0x30)
-#define KTRAP_FRAME_RESERVED1    (0x32)
-#define KTRAP_FRAME_ES           (0x34)
-#define KTRAP_FRAME_RESERVED2    (0x36)
-#define KTRAP_FRAME_DS           (0x38)
-#define KTRAP_FRAME_RESERVED3    (0x3A)
-#define KTRAP_FRAME_EDX          (0x3C)
-#define KTRAP_FRAME_ECX          (0x40)
-#define KTRAP_FRAME_EAX          (0x44)
-#define KTRAP_FRAME_PREVIOUS_MODE (0x48)
-#define KTRAP_FRAME_EXCEPTION_LIST (0x4C)
-#define KTRAP_FRAME_FS             (0x50)
-#define KTRAP_FRAME_RESERVED4      (0x52)
-#define KTRAP_FRAME_EDI            (0x54)
-#define KTRAP_FRAME_ESI            (0x58)
-#define KTRAP_FRAME_EBX            (0x5C)
-#define KTRAP_FRAME_EBP            (0x60)
-#define KTRAP_FRAME_ERROR_CODE     (0x64)
-#define KTRAP_FRAME_EIP            (0x68)
-#define KTRAP_FRAME_CS             (0x6C)
-#define KTRAP_FRAME_EFLAGS         (0x70)
-#define KTRAP_FRAME_ESP            (0x74)
-#define KTRAP_FRAME_SS             (0x78)
-#define KTRAP_FRAME_RESERVED5      (0x7A)
-#define KTRAP_FRAME_V86_ES         (0x7C)
-#define KTRAP_FRAME_RESERVED6      (0x7E)
-#define KTRAP_FRAME_V86_DS         (0x80)
-#define KTRAP_FRAME_RESERVED7      (0x82)
-#define KTRAP_FRAME_V86_FS         (0x84)
-#define KTRAP_FRAME_RESERVED8      (0x86)
-#define KTRAP_FRAME_V86_GS         (0x88)
-#define KTRAP_FRAME_RESERVED9      (0x8A)
-#define KTRAP_FRAME_SIZE           (0x8C)
-
 #define X86_EFLAGS_TF           0x00000100 /* Trap flag */
 #define X86_EFLAGS_IF           0x00000200 /* Interrupt Enable flag */
 #define X86_EFLAGS_IOPL         0x00003000 /* I/O Privilege Level bits */
@@ -131,38 +67,6 @@ typedef struct _KIRQ_TRAPFRAME
    ULONG Eflags;
 } KIRQ_TRAPFRAME, *PKIRQ_TRAPFRAME;
 
-typedef struct _KGDTENTRY {
-    USHORT LimitLow;
-    USHORT BaseLow;
-    union {
-        struct {
-            UCHAR BaseMid;
-            UCHAR Flags1;
-            UCHAR Flags2;
-            UCHAR BaseHi;
-        } Bytes;
-        struct {
-            ULONG BaseMid       : 8;
-            ULONG Type          : 5;
-            ULONG Dpl           : 2;
-            ULONG Pres          : 1;
-            ULONG LimitHi       : 4;
-            ULONG Sys           : 1;
-            ULONG Reserved_0    : 1;
-            ULONG Default_Big   : 1;
-            ULONG Granularity   : 1;
-            ULONG BaseHi        : 8;
-        } Bits;
-    } HighWord;
-} KGDTENTRY, *PKGDTENTRY;
-
-typedef struct _KIDTENTRY {
-    USHORT Offset;
-    USHORT Selector;
-    USHORT Access;
-    USHORT ExtendedOffset;
-} KIDTENTRY, *PKIDTENTRY;
-
 extern ULONG Ke386CacheAlignment;
 
 struct _KPCR;
@@ -310,8 +214,7 @@ static inline void Ki386Cpuid(ULONG Op, PULONG Eax, PULONG Ebx, PULONG Ecx, PULO
 #error Unknown compiler for inline assembler
 #endif
 
-#endif /* __ASM__ */
-
+#endif
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H */
 
 /* EOF */
index 4e1681a..bc718dc 100644 (file)
@@ -22,9 +22,6 @@
 #define PA_SYSTEM          (0)
 #endif
 
-
-#ifndef __ASM__
-
 #define KERNEL_BASE        (ULONG)MmSystemRangeStart
 
 #if defined(__GNUC__)
@@ -60,6 +57,4 @@ PULONG MmGetPageDirectory(VOID);
 #define PAGE_MASK(x)           ((x)&(~0xfff))
 #define PAE_PAGE_MASK(x)       ((x)&(~0xfffLL))
 
-#endif /* ASSEMBLER */
-
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H */
diff --git a/reactos/ntoskrnl/include/internal/i386/ps.h b/reactos/ntoskrnl/include/internal/i386/ps.h
deleted file mode 100644 (file)
index 35880c0..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 1998, 1999, 2000, 2001 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-#ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_PS_H
-#define __NTOSKRNL_INCLUDE_INTERNAL_I386_PS_H
-
-#ifdef __USE_W32API
-#ifndef __ASM__
-#include <ndk/potypes.h> /* FIXME: TEMP HACK */
-#endif
-#endif
-
-/*
- * Defines for accessing KPCR and KTHREAD structure members
- */
-#define KTHREAD_INITIAL_STACK     0x18
-#define KTHREAD_STACK_LIMIT       0x1C
-#define KTHREAD_TEB               0x20
-#define KTHREAD_KERNEL_STACK      0x28
-#define KTHREAD_NPX_STATE         0x31
-#define KTHREAD_STATE             0x2D
-#define KTHREAD_APCSTATE_PROCESS  0x34 + 0x10
-#define KTHREAD_PENDING_USER_APC  0x34 + 0x16
-#define KTHREAD_PENDING_KERNEL_APC 0x34 + 0x15
-#define KTHREAD_CONTEXT_SWITCHES  0x4C
-#define KTHREAD_WAIT_IRQL         0x54
-#define KTHREAD_SERVICE_TABLE     0xDC
-#define KTHREAD_PREVIOUS_MODE     0x137
-#define KTHREAD_TRAP_FRAME        0x128
-#define KTHREAD_CALLBACK_STACK    0x120
-
-
-#define KPROCESS_DIRECTORY_TABLE_BASE 0x18
-#define KPROCESS_LDT_DESCRIPTOR0      0x20
-#define KPROCESS_LDT_DESCRIPTOR1      0x24
-#define KPROCESS_IOPM_OFFSET          0x30
-
-#define KPCR_BASE                 0xFF000000
-
-#define KPCR_EXCEPTION_LIST       0x0
-#define KPCR_INITIAL_STACK        0x4
-#define KPCR_STACK_LIMIT          0x8
-#define KPCR_SELF                 0x1C
-#define KPCR_GDT                  0x3C
-#define KPCR_TSS                  0x40
-#define KPCR_CURRENT_THREAD       0x124
-#define KPCR_NPX_THREAD           0x2A4
-
-#ifndef __ASM__
-
-#include "fpu.h"
-
-#pragma pack(push,4)
-
-/* Fixme: Use correct types? */
-typedef struct _KPROCESSOR_STATE {
-   PCONTEXT ContextFrame;
-   PVOID SpecialRegisters;
-} KPROCESSOR_STATE;
-
-/* ProcessoR Control Block */
-typedef struct _KPRCB {
-       USHORT MinorVersion;
-       USHORT MajorVersion;
-       struct _KTHREAD *CurrentThread;
-       struct _KTHREAD *NextThread;
-       struct _KTHREAD *IdleThread;
-       UCHAR Number;
-       UCHAR Reserved;
-       USHORT BuildType;
-       ULONG SetMember;
-       UCHAR CpuType;
-       UCHAR CpuID;
-       USHORT CpuStep;
-       KPROCESSOR_STATE ProcessorState;
-       ULONG KernelReserved[16];
-       ULONG HalReserved[16];
-       UCHAR PrcbPad0[92];
-       PVOID LockQueue[33]; // Used for Queued Spinlocks
-       struct _KTHREAD *NpxThread;
-       ULONG InterruptCount;
-       ULONG KernelTime;
-       ULONG UserTime;
-       ULONG DpcTime;
-       ULONG DebugDpcTime;
-       ULONG InterruptTime;
-       ULONG AdjustDpcThreshold;
-       ULONG PageColor;
-       UCHAR SkipTick;
-       UCHAR DebuggerSavedIRQL;
-       UCHAR Spare1[6];
-       struct _KNODE *ParentNode;
-       ULONG MultiThreadProcessorSet;
-       struct _KPRCB *MultiThreadSetMaster;
-       ULONG ThreadStartCount[2];
-       ULONG CcFastReadNoWait;
-       ULONG CcFastReadWait;
-       ULONG CcFastReadNotPossible;
-       ULONG CcCopyReadNoWait;
-       ULONG CcCopyReadWait;
-       ULONG CcCopyReadNoWaitMiss;
-       ULONG KeAlignmentFixupCount;
-       ULONG KeContextSwitches;
-       ULONG KeDcacheFlushCount;
-       ULONG KeExceptionDispatchCount;
-       ULONG KeFirstLevelTbFills;
-       ULONG KeFloatingEmulationCount;
-       ULONG KeIcacheFlushCount;
-       ULONG KeSecondLevelTbFills;
-       ULONG KeSystemCalls;
-       ULONG IoReadOperationCount;
-       ULONG IoWriteOperationCount;
-       ULONG IoOtherOperationCount;
-       LARGE_INTEGER IoReadTransferCount;
-       LARGE_INTEGER IoWriteTransferCount;
-       LARGE_INTEGER IoOtherTransferCount;
-       ULONG SpareCounter1[8];
-       PP_LOOKASIDE_LIST PPLookasideList[16];
-       PP_LOOKASIDE_LIST PPNPagedLookasideList[32];
-       PP_LOOKASIDE_LIST PPPagedLookasideList[32];
-       ULONG PacketBarrier;
-       ULONG ReverseStall;
-       PVOID IpiFrame;
-       UCHAR PrcbPad2[52];
-       PVOID CurrentPacket[3];
-       ULONG TargetSet;
-       ULONG_PTR WorkerRoutine;
-       ULONG IpiFrozen;
-       UCHAR PrcbPad3[40];
-       ULONG RequestSummary;
-       struct _KPRCB *SignalDone;
-       UCHAR PrcbPad4[56];
-       struct _KDPC_DATA DpcData[2];
-       PVOID DpcStack;
-       ULONG MaximumDpcQueueDepth;
-       ULONG DpcRequestRate;
-       ULONG MinimumDpcRate;
-       UCHAR DpcInterruptRequested;
-       UCHAR DpcThreadRequested;
-       UCHAR DpcRoutineActive;
-       UCHAR DpcThreadActive;
-       ULONG PrcbLock;
-       ULONG DpcLastCount;
-       ULONG TimerHand;
-       ULONG TimerRequest;
-       PVOID DpcThread;
-       struct _KEVENT *DpcEvent;
-       UCHAR ThreadDpcEnable;
-       BOOLEAN QuantumEnd;
-       UCHAR PrcbPad50;
-       UCHAR IdleSchedule;
-       ULONG DpcSetEventRequest;
-       UCHAR PrcbPad5[18];
-       LONG TickOffset;
-       struct _KDPC* CallDpc;
-       ULONG PrcbPad7[8];
-       LIST_ENTRY WaitListHead;
-       ULONG ReadySummary;
-       ULONG SelectNextLast;
-       LIST_ENTRY DispatcherReadyListHead[32];
-       SINGLE_LIST_ENTRY DeferredReadyListHead;
-       ULONG PrcbPad72[11];
-       PVOID ChainedInterruptList;
-       LONG LookasideIrpFloat;
-       LONG MmPageFaultCount;
-       LONG MmCopyOnWriteCount;
-       LONG MmTransitionCount;
-       LONG MmCacheTransitionCount;
-       LONG MmDemandZeroCount;
-       LONG MmPageReadCount;
-       LONG MmPageReadIoCount;
-       LONG MmCacheReadCount;
-       LONG MmCacheIoCount;
-       LONG MmDirtyPagesWriteCount;
-       LONG MmDirtyWriteIoCount;
-       LONG MmMappedPagesWriteCount;
-       LONG MmMappedWriteIoCount;
-       ULONG SpareFields0[1];
-       CHAR VendorString[13];
-       UCHAR InitialApicId;
-       UCHAR LogicalProcessorsPerPhysicalProcessor;
-       ULONG MHz;
-       ULONG FeatureBits;
-       LARGE_INTEGER UpdateSignature;
-       LARGE_INTEGER IsrTime;
-       LARGE_INTEGER SpareField1;
-       FX_SAVE_AREA NpxSaveArea;
-       PROCESSOR_POWER_STATE PowerState;
-} KPRCB, *PKPRCB;
-
-#pragma pack(pop)
-
-#ifndef __USE_W32API
-
-#pragma pack(push,4)
-/*
- * Processor Control Region Thread Information Block
- */
-typedef struct _KPCR_TIB {
-  PVOID  ExceptionList;         /* 00 */
-  PVOID  StackBase;             /* 04 */
-  PVOID  StackLimit;            /* 08 */
-  PVOID  SubSystemTib;          /* 0C */
-  union {
-    PVOID  FiberData;           /* 10 */
-    DWORD  Version;             /* 10 */
-  };
-  PVOID  ArbitraryUserPointer;  /* 14 */
-  struct _KPCR_TIB* Self;       /* 18 */
-} KPCR_TIB, *PKPCR_TIB; /* 18 */
-
-/*
- * Processor Control Region
- */
-typedef struct _KPCR {
-  KPCR_TIB  Tib;                /* 00 */
-  struct _KPCR  *Self;          /* 1C */
-  struct _KPRCB  *Prcb;         /* 20 */
-  KIRQL  Irql;                  /* 24 */
-  ULONG  IRR;                   /* 28 */
-  ULONG  IrrActive;             /* 2C */
-  ULONG  IDR;                   /* 30 */
-  PVOID  KdVersionBlock;        /* 34 */
-  PUSHORT  IDT;                 /* 38 */
-  PUSHORT  GDT;                 /* 3C */
-  struct _KTSS  *TSS;           /* 40 */
-  USHORT  MajorVersion;         /* 44 */
-  USHORT  MinorVersion;         /* 46 */
-  KAFFINITY  SetMember;         /* 48 */
-  ULONG  StallScaleFactor;      /* 4C */
-  UCHAR  DebugActive;           /* 50 */
-  UCHAR  Number;                /* 51 */
-  UCHAR  Reserved;              /* 52 */
-  UCHAR  L2CacheAssociativity;  /* 53 */
-  ULONG  VdmAlert;              /* 54 */
-  ULONG  KernelReserved[14];    /* 58 */
-  ULONG  L2CacheSize;           /* 90 */
-  ULONG  HalReserved[16];       /* 94 */
-  ULONG  InterruptMode;         /* D4 */
-  UCHAR  KernelReserved2[0x48]; /* D8 */
-  KPRCB  PrcbData;              /* 120 */
-} KPCR, *PKPCR;
-
-#pragma pack(pop)
-#endif /* __USE_W32API */
-
-#pragma pack(push,4)
-
-/*
- * This is the complete, internal KPCR structure
- */
-typedef struct _KIPCR {
-  KPCR_TIB  Tib;                /* 00 */
-  struct _KPCR  *Self;          /* 1C */
-  struct _KPRCB  *Prcb;         /* 20 */
-  KIRQL  Irql;                  /* 24 */
-  ULONG  IRR;                   /* 28 */
-  ULONG  IrrActive;             /* 2C */
-  ULONG  IDR;                   /* 30 */
-  PVOID  KdVersionBlock;        /* 34 */
-  PUSHORT  IDT;                 /* 38 */
-  PUSHORT  GDT;                 /* 3C */
-  struct _KTSS  *TSS;           /* 40 */
-  USHORT  MajorVersion;         /* 44 */
-  USHORT  MinorVersion;         /* 46 */
-  KAFFINITY  SetMember;         /* 48 */
-  ULONG  StallScaleFactor;      /* 4C */
-  UCHAR  SparedUnused;          /* 50 */
-  UCHAR  Number;                /* 51 */
-  UCHAR  Reserved;              /* 52 */
-  UCHAR  L2CacheAssociativity;  /* 53 */
-  ULONG  VdmAlert;              /* 54 */
-  ULONG  KernelReserved[14];    /* 58 */
-  ULONG  L2CacheSize;           /* 90 */
-  ULONG  HalReserved[16];       /* 94 */
-  ULONG  InterruptMode;         /* D4 */
-  UCHAR  KernelReserved2[0x48]; /* D8 */
-  KPRCB  PrcbData;              /* 120 */
-} KIPCR, *PKIPCR;
-
-#pragma pack(pop)
-
-#ifndef __USE_W32API
-
-#ifdef CONFIG_SMP
-
-static inline PKPCR KeGetCurrentKPCR(VOID)
-{
-  ULONG value;
-
-#if defined(__GNUC__)
-  __asm__ __volatile__ ("movl %%fs:0x1C, %0\n\t"
-         : "=r" (value)
-    : /* no inputs */
-    );
-#elif defined(_MSC_VER)
-  __asm mov eax, fs:0x1C;
-  __asm mov value, eax;
-#else
-#error Unknown compiler for inline assembler
-#endif
-  return((PKPCR)value);
-}
-
-static inline PKPRCB KeGetCurrentPrcb(VOID)
-{
-  ULONG value;
-
-#if defined(__GNUC__)
-  __asm__ __volatile__ ("movl %%fs:0x20, %0\n\t"
-         : "=r" (value)
-    : /* no inputs */
-    );
-#elif defined(_MSC_VER)
-  __asm mov eax, fs:0x20;
-  __asm mov value, eax;
-#else
-#error Unknown compiler for inline assembler
-#endif
-  return((PKPRCB)value);
-}
-
-#else
-
-#define KeGetCurrentKPCR(X) ((PKPCR)KPCR_BASE)
-#define KeGetCurrentPrcb() (((PKPCR)KPCR_BASE)->Prcb)
-#define KeGetCurrentThread(X) (((PKPCR)KPCR_BASE)->PrcbData.CurrentThread)
-
-#endif
-
-#endif /* __USE_W32API */
-
-#endif /* __ASM__ */
-
-#endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_PS_H */
-
-/* EOF */
diff --git a/reactos/ntoskrnl/include/internal/i386/segment.h b/reactos/ntoskrnl/include/internal/i386/segment.h
deleted file mode 100644 (file)
index 3e217d5..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000  ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/*
- * FILE:            ntoskrnl/include/internal/i386/segment.h
- * PURPOSE:         Segment selector definitions
- * PROGRAMMER:      David Welch (welch@cwcom.net)
- */
-
-/* INCLUDES *****************************************************************/
-
-#ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_SEGMENT_H
-#define __NTOSKRNL_INCLUDE_INTERNAL_i386_SEGMENT_H
-
-#define NULL_SELECTOR        (0x0)
-#define KERNEL_CS            (0x8)
-#define KERNEL_DS            (0x10)
-#define USER_CS              (0x18 + 0x3)
-#define USER_DS              (0x20 + 0x3)
-/* Task State Segment */
-#define TSS_SELECTOR         (0x28)
-/* Processor Control Region */
-#define PCR_SELECTOR         (0x30)
-/* Thread Environment Block */
-#define TEB_SELECTOR         (0x38 + 0x3)
-#define RESERVED_SELECTOR    (0x40)
-/* Local Descriptor Table */
-#define LDT_SELECTOR         (0x48)
-#define TRAP_TSS_SELECTOR    (0x50)
-
-#endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_SEGMENT_H */
-
-/* EOF */
-
-
index 052178a..0bfe037 100644 (file)
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            include/internal/io.h
- * PURPOSE:         Internal io manager declarations
- * PROGRAMMER:      David Welch (welch@mcmail.com)
- * UPDATE HISTORY:
- *               28/05/97: Created
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_IO_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_IO_H
 
-#ifndef __USE_W32API
-#define DEVICE_TYPE_FROM_CTL_CODE(ctlCode) (((ULONG)(ctlCode&0xffff0000))>>16)
-#endif
-
 #define IO_METHOD_FROM_CTL_CODE(ctlCode) (ctlCode&0x00000003)
 
-struct _DEVICE_OBJECT_POWER_EXTENSION;
 extern POBJECT_TYPE IoCompletionType;
+extern PDEVICE_NODE IopRootDeviceNode;
 
 /* This is like the IRP Overlay so we can optimize its insertion */
 typedef struct _IO_COMPLETION_PACKET
 {
-   struct {
-       LIST_ENTRY ListEntry;
-       union {
-           struct _IO_STACK_LOCATION *CurrentStackLocation;
-           ULONG PacketType;
-       };
-   };
-   PVOID             Key;
-   PVOID             Context;
-   IO_STATUS_BLOCK   IoStatus;
+    struct
+    {
+        LIST_ENTRY ListEntry;
+        union
+        {
+            struct _IO_STACK_LOCATION *CurrentStackLocation;
+            ULONG PacketType;
+        };
+    };
+    PVOID Key;
+    PVOID Context;
+    IO_STATUS_BLOCK IoStatus;
 } IO_COMPLETION_PACKET, *PIO_COMPLETION_PACKET;
 
 /* Packet Types */
 #define IrpCompletionPacket     0x1
 #define IrpMiniCompletionPacket 0x2
 
-typedef struct _DEVOBJ_EXTENSION {
-   CSHORT Type;
-   USHORT Size;
-   PDEVICE_OBJECT DeviceObject;
-   ULONG PowerFlags;
-   struct DEVICE_OBJECT_POWER_EXTENSION *Dope;
-   ULONG ExtensionFlags;
-   struct _DEVICE_NODE *DeviceNode;
-   PDEVICE_OBJECT AttachedTo;
-   LONG StartIoCount;
-   LONG StartIoKey;
-   ULONG StartIoFlags;
-   struct _VPB *Vpb;
-} DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION;
-
-typedef struct _PRIVATE_DRIVER_EXTENSIONS {
-   struct _PRIVATE_DRIVER_EXTENSIONS *Link;
-   PVOID ClientIdentificationAddress;
-   CHAR Extension[1];
-} PRIVATE_DRIVER_EXTENSIONS, *PPRIVATE_DRIVER_EXTENSIONS;
-
-typedef struct _DEVICE_NODE
-{
-  /* A tree structure. */
-  struct _DEVICE_NODE *Parent;
-  struct _DEVICE_NODE *PrevSibling;
-  struct _DEVICE_NODE *NextSibling;
-  struct _DEVICE_NODE *Child;
-  /* The level of deepness in the tree. */
-  UINT Level;
-  /* */
-//  PPO_DEVICE_NOTIFY Notify;
-  /* State machine. */
-//  PNP_DEVNODE_STATE State;
-//  PNP_DEVNODE_STATE PreviousState;
-//  PNP_DEVNODE_STATE StateHistory[20];
-//  UINT StateHistoryEntry;
-  /* ? */
-  INT CompletionStatus;
-  /* ? */
-  PIRP PendingIrp;
-  /* See DNF_* flags below (WinDBG documentation has WRONG values) */
-  ULONG Flags;
-  /* See DNUF_* flags below (and IRP_MN_QUERY_PNP_DEVICE_STATE) */
-  ULONG UserFlags;
-  /* See CM_PROB_* values are defined in cfg.h */
-  ULONG Problem;
-  /* Pointer to the PDO corresponding to the device node. */
-  PDEVICE_OBJECT PhysicalDeviceObject;
-  /* Resource list as assigned by the PnP arbiter. See IRP_MN_START_DEVICE
-     and ARBITER_INTERFACE (not documented in DDK, but present in headers). */
-  PCM_RESOURCE_LIST ResourceList;
-  /* Resource list as assigned by the PnP arbiter (translated version). */
-  PCM_RESOURCE_LIST ResourceListTranslated;
-  /* Instance path relative to the Enum key in registry. */
-  UNICODE_STRING InstancePath;
-  /* Name of the driver service. */
-  UNICODE_STRING ServiceName;
-  /* ? */
-  PDEVICE_OBJECT DuplicatePDO;
-  /* See IRP_MN_QUERY_RESOURCE_REQUIREMENTS. */
-  PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements;
-  /* Information about bus for bus drivers. */
-  INTERFACE_TYPE InterfaceType;
-  ULONG BusNumber;
-  /* Information about underlying bus for child devices. */
-  INTERFACE_TYPE ChildInterfaceType;
-  ULONG ChildBusNumber;
-  USHORT ChildBusTypeIndex;
-  /* ? */
-  UCHAR RemovalPolicy;
-  UCHAR HardwareRemovalPolicy;
-  LIST_ENTRY TargetDeviceNotify;
-  LIST_ENTRY DeviceArbiterList;
-  LIST_ENTRY DeviceTranslatorList;
-  USHORT NoTranslatorMask;
-  USHORT QueryTranslatorMask;
-  USHORT NoArbiterMask;
-  USHORT QueryArbiterMask;
-  union {
-    struct _DEVICE_NODE *LegacyDeviceNode;
-    PDEVICE_RELATIONS PendingDeviceRelations;
-  } OverUsed1;
-  union {
-    struct _DEVICE_NODE *NextResourceDeviceNode;
-  } OverUsed2;
-  /* See IRP_MN_QUERY_RESOURCES/IRP_MN_FILTER_RESOURCES. */
-  PCM_RESOURCE_LIST BootResources;
-  /* See the bitfields in DEVICE_CAPABILITIES structure. */
-  ULONG CapabilityFlags;
-  struct
-  {
-    ULONG DockStatus;
-    LIST_ENTRY ListEntry;
-    WCHAR *SerialNumber;
-  } DockInfo;
-  ULONG DisableableDepends;
-  LIST_ENTRY PendedSetInterfaceState;
-  LIST_ENTRY LegacyBusListEntry;
-  ULONG DriverUnloadRetryCount;
-
-  /* Not NT's */
-  GUID BusTypeGuid;
-  ULONG Address;
-} DEVICE_NODE, *PDEVICE_NODE;
-
-/* For Flags field */
-#define DNF_PROCESSED                           0x00000001
-#define DNF_STARTED                             0x00000002
-#define DNF_START_FAILED                        0x00000004
-#define DNF_ENUMERATED                          0x00000008
-#define DNF_DELETED                             0x00000010
-#define DNF_MADEUP                              0x00000020
-#define DNF_START_REQUEST_PENDING               0x00000040
-#define DNF_NO_RESOURCE_REQUIRED                0x00000080
-#define DNF_INSUFFICIENT_RESOURCES              0x00000100
-#define DNF_RESOURCE_ASSIGNED                   0x00000200
-#define DNF_RESOURCE_REPORTED                   0x00000400
-#define DNF_HAL_NODE                            0x00000800 // ???
-#define DNF_ADDED                               0x00001000
-#define DNF_ADD_FAILED                          0x00002000
-#define DNF_LEGACY_DRIVER                       0x00004000
-#define DNF_STOPPED                             0x00008000
-#define DNF_WILL_BE_REMOVED                     0x00010000
-#define DNF_NEED_TO_ENUM                        0x00020000
-#define DNF_NOT_CONFIGURED                      0x00040000
-#define DNF_REINSTALL                           0x00080000
-#define DNF_RESOURCE_REQUIREMENTS_NEED_FILTERED 0x00100000 // ???
-#define DNF_DISABLED                            0x00200000
-#define DNF_RESTART_OK                          0x00400000
-#define DNF_NEED_RESTART                        0x00800000
-#define DNF_VISITED                             0x01000000
-#define DNF_ASSIGNING_RESOURCES                 0x02000000
-#define DNF_BEEING_ENUMERATED                   0x04000000
-#define DNF_NEED_ENUMERATION_ONLY               0x08000000
-#define DNF_LOCKED                              0x10000000
-#define DNF_HAS_BOOT_CONFIG                     0x20000000
-#define DNF_BOOT_CONFIG_RESERVED                0x40000000
-#define DNF_HAS_PROBLEM                         0x80000000 // ???
-
-/* For UserFlags field */
-#define DNUF_DONT_SHOW_IN_UI    0x0002
-#define DNUF_NOT_DISABLEABLE    0x0008
-
 /*
  * VOID
  * IopDeviceNodeSetFlag(
  *   PDEVICE_NODE DeviceNode,
  *   ULONG Flag);
  */
-#define IopDeviceNodeSetFlag(DeviceNode, Flag)((DeviceNode)->Flags |= (Flag))
+#define IopDeviceNodeSetFlag(DeviceNode, Flag) \
+    ((DeviceNode)->Flags |= (Flag))
 
 /*
  * VOID
@@ -215,7 +42,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG Flag);
  */
-#define IopDeviceNodeClearFlag(DeviceNode, Flag)((DeviceNode)->Flags &= ~(Flag))
+#define IopDeviceNodeClearFlag(DeviceNode, Flag) \
+    ((DeviceNode)->Flags &= ~(Flag))
 
 /*
  * BOOLEAN
@@ -223,7 +51,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG Flag);
  */
-#define IopDeviceNodeHasFlag(DeviceNode, Flag)(((DeviceNode)->Flags & (Flag)) > 0)
+#define IopDeviceNodeHasFlag(DeviceNode, Flag) \
+    (((DeviceNode)->Flags & (Flag)) > 0)
 
 /*
  * VOID
@@ -231,7 +60,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG UserFlag);
  */
-#define IopDeviceNodeSetUserFlag(DeviceNode, UserFlag)((DeviceNode)->UserFlags |= (UserFlag))
+#define IopDeviceNodeSetUserFlag(DeviceNode, UserFlag) \
+    ((DeviceNode)->UserFlags |= (UserFlag))
 
 /*
  * VOID
@@ -239,7 +69,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG UserFlag);
  */
-#define IopDeviceNodeClearUserFlag(DeviceNode, UserFlag)((DeviceNode)->UserFlags &= ~(UserFlag))
+#define IopDeviceNodeClearUserFlag(DeviceNode, UserFlag) \
+    ((DeviceNode)->UserFlags &= ~(UserFlag))
 
 /*
  * BOOLEAN
@@ -247,7 +78,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG UserFlag);
  */
-#define IopDeviceNodeHasUserFlag(DeviceNode, UserFlag)(((DeviceNode)->UserFlags & (UserFlag)) > 0)
+#define IopDeviceNodeHasUserFlag(DeviceNode, UserFlag) \
+    (((DeviceNode)->UserFlags & (UserFlag)) > 0)
 
  /*
  * VOID
@@ -255,7 +87,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG Problem);
  */
-#define IopDeviceNodeSetProblem(DeviceNode, Problem)((DeviceNode)->Problem |= (Problem))
+#define IopDeviceNodeSetProblem(DeviceNode, Problem) \
+    ((DeviceNode)->Problem |= (Problem))
 
 /*
  * VOID
@@ -263,7 +96,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG Problem);
  */
-#define IopDeviceNodeClearProblem(DeviceNode, Problem)((DeviceNode)->Problem &= ~(Problem))
+#define IopDeviceNodeClearProblem(DeviceNode, Problem) \
+    ((DeviceNode)->Problem &= ~(Problem))
 
 /*
  * BOOLEAN
@@ -271,7 +105,8 @@ typedef struct _DEVICE_NODE
  *   PDEVICE_NODE DeviceNode,
  *   ULONG Problem);
  */
-#define IopDeviceNodeHasProblem(DeviceNode, Problem)(((DeviceNode)->Problem & (Problem)) > 0)
+#define IopDeviceNodeHasProblem(DeviceNode, Problem) \
+    (((DeviceNode)->Problem & (Problem)) > 0)
 
 
 /*
@@ -285,20 +120,21 @@ typedef struct _DEVICE_NODE
    the caller.
  */
 typedef NTSTATUS (*DEVICETREE_TRAVERSE_ROUTINE)(
-  PDEVICE_NODE DeviceNode,
-  PVOID Context);
+    PDEVICE_NODE DeviceNode,
+    PVOID Context
+);
 
 /* Context information for traversing the device tree */
 typedef struct _DEVICETREE_TRAVERSE_CONTEXT
 {
-  /* Current device node during a traversal */
-  PDEVICE_NODE DeviceNode;
-  /* Initial device node where we start the traversal */
-  PDEVICE_NODE FirstDeviceNode;
-  /* Action routine to be called for every device node */
-  DEVICETREE_TRAVERSE_ROUTINE Action;
-  /* Context passed to the action routine */
-  PVOID Context;
+    /* Current device node during a traversal */
+    PDEVICE_NODE DeviceNode;
+    /* Initial device node where we start the traversal */
+    PDEVICE_NODE FirstDeviceNode;
+    /* Action routine to be called for every device node */
+    DEVICETREE_TRAVERSE_ROUTINE Action;
+    /* Context passed to the action routine */
+    PVOID Context;
 } DEVICETREE_TRAVERSE_CONTEXT, *PDEVICETREE_TRAVERSE_CONTEXT;
 
 /*
@@ -315,9 +151,6 @@ typedef struct _DEVICETREE_TRAVERSE_CONTEXT
   (_DeviceTreeTraverseContext)->Action = (_Action); \
   (_DeviceTreeTraverseContext)->Context = (_Context); }
 
-
-extern PDEVICE_NODE IopRootDeviceNode;
-
 VOID
 PnpInit(VOID);
 
@@ -332,70 +165,71 @@ IopInitPnpNotificationImplementation(VOID);
 
 VOID
 IopNotifyPlugPlayNotification(
-       IN PDEVICE_OBJECT DeviceObject,
-       IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
-       IN GUID* Event,
-       IN PVOID EventCategoryData1,
-       IN PVOID EventCategoryData2);
+    IN PDEVICE_OBJECT DeviceObject,
+    IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
+    IN GUID* Event,
+    IN PVOID EventCategoryData1,
+    IN PVOID EventCategoryData2
+);
 
 NTSTATUS
 IopGetSystemPowerDeviceObject(PDEVICE_OBJECT *DeviceObject);
+
 NTSTATUS
-IopCreateDeviceNode(PDEVICE_NODE ParentNode,
-                    PDEVICE_OBJECT PhysicalDeviceObject,
-                    PDEVICE_NODE *DeviceNode);
+IopCreateDeviceNode(
+    PDEVICE_NODE ParentNode,
+    PDEVICE_OBJECT PhysicalDeviceObject,
+    PDEVICE_NODE *DeviceNode
+);
+
 NTSTATUS
 IopFreeDeviceNode(PDEVICE_NODE DeviceNode);
 
 VOID
 IoInitCancelHandling(VOID);
+
 VOID
 IoInitFileSystemImplementation(VOID);
+
 VOID
 IoInitVpbImplementation(VOID);
 
 NTSTATUS
-IoMountVolume(IN PDEVICE_OBJECT DeviceObject,
-             IN BOOLEAN AllowRawMount);
-POBJECT IoOpenSymlink(POBJECT SymbolicLink);
-POBJECT IoOpenFileOnDevice(POBJECT SymbolicLink, PWCHAR Name);
-
-VOID STDCALL
-IoSecondStageCompletion(
-   PKAPC Apc,
-   PKNORMAL_ROUTINE* NormalRoutine,
-   PVOID* NormalContext,
-   PVOID* SystemArgument1,
-   PVOID* SystemArgument2);
-
-NTSTATUS STDCALL
-IopCreateDevice(PVOID ObjectBody,
-               PVOID Parent,
-               PWSTR RemainingPath,
-               POBJECT_ATTRIBUTES ObjectAttributes);
+IoMountVolume(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN BOOLEAN AllowRawMount
+);
+
+PVOID 
+IoOpenSymlink(PVOID SymbolicLink);
+
+PVOID 
+IoOpenFileOnDevice(
+    PVOID SymbolicLink, 
+    PWCHAR Name
+);
+
+NTSTATUS
+STDCALL
+IopCreateDevice(
+    PVOID ObjectBody,
+    PVOID Parent,
+    PWSTR RemainingPath,
+    POBJECT_ATTRIBUTES ObjectAttributes
+);
 
 NTSTATUS
 STDCALL
 IopAttachVpb(PDEVICE_OBJECT DeviceObject);
 
-PIRP IoBuildSynchronousFsdRequestWithMdl(ULONG MajorFunction,
-                                        PDEVICE_OBJECT DeviceObject,
-                                        PMDL Mdl,
-                                        PLARGE_INTEGER StartingOffset,
-                                        PKEVENT Event,
-                                        PIO_STATUS_BLOCK IoStatusBlock,
-                                        BOOLEAN PagingIo);
-
-VOID IoInitShutdownNotification(VOID);
-VOID IoShutdownRegisteredDevices(VOID);
-VOID IoShutdownRegisteredFileSystems(VOID);
-
-NTSTATUS STDCALL
-IoPageWrite(PFILE_OBJECT       FileObject,
-           PMDL                Mdl,
-           PLARGE_INTEGER      Offset,
-           PKEVENT             Event,
-           PIO_STATUS_BLOCK    StatusBlock);
+VOID
+IoInitShutdownNotification(VOID);
+
+VOID
+IoShutdownRegisteredDevices(VOID);
+
+VOID
+IoShutdownRegisteredFileSystems(VOID);
 
 NTSTATUS
 IoCreateArcNames(VOID);
@@ -405,17 +239,18 @@ IoCreateSystemRootLink(PCHAR ParameterLine);
 
 NTSTATUS
 IopInitiatePnpIrp(
-  PDEVICE_OBJECT DeviceObject,
-  PIO_STATUS_BLOCK IoStatusBlock,
-  ULONG MinorFunction,
-  PIO_STACK_LOCATION Stack);
+    PDEVICE_OBJECT DeviceObject,
+    PIO_STATUS_BLOCK IoStatusBlock,
+    ULONG MinorFunction,
+    PIO_STACK_LOCATION Stack
+);
 
 BOOLEAN
 IopCreateUnicodeString(
-  PUNICODE_STRING      Destination,
-  PWSTR Source,
-  POOL_TYPE PoolType);
-
+    PUNICODE_STRING    Destination,
+    PWSTR Source,
+    POOL_TYPE PoolType
+);
 
 NTSTATUS
 IoCreateDriverList(VOID);
@@ -435,14 +270,18 @@ VOID
 IopStopBootLog(VOID);
 
 VOID
-IopBootLog(PUNICODE_STRING DriverName, BOOLEAN Success);
+IopBootLog(
+    PUNICODE_STRING DriverName, 
+    BOOLEAN Success
+);
 
 VOID
 IopSaveBootLogToFile(VOID);
 
 /* cancel.c */
 
-VOID STDCALL
+VOID
+STDCALL
 IoCancelThreadIo(PETHREAD Thread);
 
 /* errlog.c */
@@ -450,15 +289,15 @@ IoCancelThreadIo(PETHREAD Thread);
 NTSTATUS
 IopInitErrorLog(VOID);
 
-
 /* rawfs.c */
 
 BOOLEAN
 RawFsIsRawFileSystemDeviceObject(IN PDEVICE_OBJECT DeviceObject);
 
-NTSTATUS STDCALL
+NTSTATUS
+STDCALL
 RawFsDriverEntry(PDRIVER_OBJECT DriverObject,
-  PUNICODE_STRING RegistryPath);
+                 PUNICODE_STRING RegistryPath);
 
 
 /* pnproot.c */
@@ -466,79 +305,96 @@ RawFsDriverEntry(PDRIVER_OBJECT DriverObject,
 NTSTATUS
 STDCALL
 PnpRootDriverEntry(
-  IN PDRIVER_OBJECT DriverObject,
-  IN PUNICODE_STRING RegistryPath);
+   IN PDRIVER_OBJECT DriverObject,
+   IN PUNICODE_STRING RegistryPath
+);
 
 NTSTATUS
-PnpRootCreateDevice(
-  PDEVICE_OBJECT *PhysicalDeviceObject);
+PnpRootCreateDevice(PDEVICE_OBJECT *PhysicalDeviceObject);
 
 /* device.c */
 
-NTSTATUS FASTCALL
+NTSTATUS 
+FASTCALL
 IopInitializeDevice(
-   PDEVICE_NODE DeviceNode,
-   PDRIVER_OBJECT DriverObject);
+    PDEVICE_NODE DeviceNode,
+    PDRIVER_OBJECT DriverObject
+);
 
 NTSTATUS
-IopStartDevice(
-   PDEVICE_NODE DeviceNode);
+IopStartDevice(PDEVICE_NODE DeviceNode);
 
 /* driver.c */
 
-VOID FASTCALL
+VOID
+FASTCALL
 IopInitializeBootDrivers(VOID);
 
-VOID FASTCALL
+VOID
+FASTCALL
 IopInitializeSystemDrivers(VOID);
 
-NTSTATUS FASTCALL
+NTSTATUS
+FASTCALL
 IopCreateDriverObject(
-   PDRIVER_OBJECT *DriverObject,
-   PUNICODE_STRING ServiceName,
-   ULONG CreateAttributes,
-   BOOLEAN FileSystemDriver,
-   PVOID DriverImageStart,
-   ULONG DriverImageSize);
-
-NTSTATUS FASTCALL
+    PDRIVER_OBJECT *DriverObject,
+    PUNICODE_STRING ServiceName,
+    ULONG CreateAttributes,
+    BOOLEAN FileSystemDriver,
+    PVOID DriverImageStart,
+    ULONG DriverImageSize
+);
+
+NTSTATUS
+FASTCALL
 IopGetDriverObject(
-   PDRIVER_OBJECT *DriverObject,
-   PUNICODE_STRING ServiceName,
-   BOOLEAN FileSystem);
+    PDRIVER_OBJECT *DriverObject,
+    PUNICODE_STRING ServiceName,
+    BOOLEAN FileSystem
+);
 
-NTSTATUS FASTCALL
+NTSTATUS
+FASTCALL
 IopLoadServiceModule(
-   IN PUNICODE_STRING ServiceName,
-   OUT PMODULE_OBJECT *ModuleObject);
+    IN PUNICODE_STRING ServiceName,
+    OUT PMODULE_OBJECT *ModuleObject
+);
 
-NTSTATUS FASTCALL
+NTSTATUS 
+FASTCALL
 IopInitializeDriverModule(
-   IN PDEVICE_NODE DeviceNode,
-   IN PMODULE_OBJECT ModuleObject,
-   IN PUNICODE_STRING ServiceName,
-   IN BOOLEAN FileSystemDriver,
-   OUT PDRIVER_OBJECT *DriverObject);
+    IN PDEVICE_NODE DeviceNode,
+    IN PMODULE_OBJECT ModuleObject,
+    IN PUNICODE_STRING ServiceName,
+    IN BOOLEAN FileSystemDriver,
+    OUT PDRIVER_OBJECT *DriverObject
+);
 
-NTSTATUS FASTCALL
+NTSTATUS
+FASTCALL
 IopAttachFilterDrivers(
-   PDEVICE_NODE DeviceNode,
-   BOOLEAN Lower);
+    PDEVICE_NODE DeviceNode,
+    BOOLEAN Lower
+);
 
-VOID FASTCALL
+VOID
+FASTCALL
 IopMarkLastReinitializeDriver(VOID);
 
-VOID FASTCALL
+VOID
+FASTCALL
 IopReinitializeDrivers(VOID);
 
 /* file.c */
 
 NTSTATUS
 STDCALL
-IopCreateFile(PVOID ObjectBody,
-              PVOID Parent,
-              PWSTR RemainingPath,
-              POBJECT_CREATE_INFORMATION ObjectAttributes);
+IopCreateFile(
+    PVOID ObjectBody,
+    PVOID Parent,
+    PWSTR RemainingPath,
+    POBJECT_CREATE_INFORMATION ObjectAttributes
+);
 
 VOID
 STDCALL
@@ -546,45 +402,55 @@ IopDeleteFile(PVOID ObjectBody);
 
 NTSTATUS
 STDCALL
-IopSecurityFile(PVOID ObjectBody,
-                SECURITY_OPERATION_CODE OperationCode,
-                SECURITY_INFORMATION SecurityInformation,
-                PSECURITY_DESCRIPTOR SecurityDescriptor,
-                PULONG BufferLength);
+IopSecurityFile(
+    PVOID ObjectBody,
+    SECURITY_OPERATION_CODE OperationCode,
+    SECURITY_INFORMATION SecurityInformation,
+    PSECURITY_DESCRIPTOR SecurityDescriptor,
+    PULONG BufferLength
+);
 
 NTSTATUS
 STDCALL
-IopQueryNameFile(PVOID ObjectBody,
-                 POBJECT_NAME_INFORMATION ObjectNameInfo,
-                 ULONG Length,
-                 PULONG ReturnLength);
+IopQueryNameFile(
+    PVOID ObjectBody,
+    POBJECT_NAME_INFORMATION ObjectNameInfo,
+    ULONG Length,
+    PULONG ReturnLength
+);
 
 VOID
 STDCALL
-IopCloseFile(PVOID ObjectBody,
-             ULONG HandleCount);
+IopCloseFile(
+    PVOID ObjectBody,
+    ULONG HandleCount
+);
 
 /* plugplay.c */
 
-NTSTATUS INIT_FUNCTION
+NTSTATUS 
+INIT_FUNCTION
 IopInitPlugPlayEvents(VOID);
 
 NTSTATUS
-IopQueueTargetDeviceEvent(const GUID *Guid,
-                          PUNICODE_STRING DeviceIds);
-
+IopQueueTargetDeviceEvent(
+    const GUID *Guid,
+    PUNICODE_STRING DeviceIds
+);
 
 /* pnpmgr.c */
 
 NTSTATUS
 IopInitializePnpServices(
-   IN PDEVICE_NODE DeviceNode,
-   IN BOOLEAN BootDrivers);
+    IN PDEVICE_NODE DeviceNode,
+    IN BOOLEAN BootDrivers)
+;
 
 NTSTATUS
 IopInvalidateDeviceRelations(
-   IN PDEVICE_NODE DeviceNode,
-   IN DEVICE_RELATION_TYPE Type);
+    IN PDEVICE_NODE DeviceNode,
+    IN DEVICE_RELATION_TYPE Type
+);
 
 /* timer.c */
 VOID
@@ -593,9 +459,7 @@ IopInitTimerImplementation(VOID);
 
 VOID
 STDCALL
-IopRemoveTimerFromTimerList(
-       IN PIO_TIMER Timer
-);
+IopRemoveTimerFromTimerList(IN PIO_TIMER Timer);
 
 /* iocomp.c */
 VOID
index e2988da..e723161 100644 (file)
@@ -1,4 +1,3 @@
-/* ReactOS System Header -- kbd.h */
 #define __KBD_H
 
 #if __GNUC__ >=3
index 561abc6..07ec194 100644 (file)
@@ -1,17 +1,8 @@
-/* $Id$
- *
- * kernel debugger prototypes
- */
-
 #ifndef __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
 #define __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
 
 struct _KD_DISPATCH_TABLE;
-
-#ifdef DBG
-#include "kdgdb.h"
-#include "kdbochs.h"
-#endif
+extern KD_PORT_INFORMATION GdbPortInfo;
 
 /* SYMBOL ROUTINES **********************************************************/
 
@@ -24,8 +15,10 @@ VOID
 KdbSymFreeProcessSymbols(IN PEPROCESS Process);
 
 VOID
-KdbSymLoadDriverSymbols(IN PUNICODE_STRING Filename,
-                        IN PMODULE_OBJECT Module);
+KdbSymLoadDriverSymbols(
+    IN PUNICODE_STRING Filename,
+    IN PMODULE_OBJECT Module
+);
 
 VOID
 KdbSymUnloadDriverSymbols(IN PMODULE_OBJECT ModuleObject);
@@ -34,8 +27,10 @@ VOID
 KdbSymProcessBootSymbols(IN PCHAR FileName);
 
 VOID
-KdbSymInit(IN PMODULE_TEXT_SECTION NtoskrnlTextSection,
-           IN PMODULE_TEXT_SECTION LdrHalTextSection);
+KdbSymInit(
+    IN PMODULE_TEXT_SECTION NtoskrnlTextSection,
+    IN PMODULE_TEXT_SECTION LdrHalTextSection
+);
 
 BOOLEAN
 KdbSymPrintAddress(IN PVOID Address);
@@ -44,11 +39,13 @@ VOID
 KdbDeleteProcessHook(IN PEPROCESS Process);
 
 NTSTATUS
-KdbSymGetAddressInformation(IN PROSSYM_INFO  RosSymInfo,
-                            IN ULONG_PTR  RelativeAddress,
-                            OUT PULONG LineNumber  OPTIONAL,
-                            OUT PCH FileName  OPTIONAL,
-                            OUT PCH FunctionName  OPTIONAL);
+KdbSymGetAddressInformation(
+    IN PROSSYM_INFO  RosSymInfo,
+    IN ULONG_PTR  RelativeAddress,
+    OUT PULONG LineNumber  OPTIONAL,
+    OUT PCH FileName  OPTIONAL,
+    OUT PCH FunctionName  OPTIONAL
+);
 
 typedef struct _KDB_MODULE_INFO
 {
@@ -103,8 +100,10 @@ typedef enum _KD_CONTINUE_TYPE
 
 typedef
 VOID
-(STDCALL*PKDP_INIT_ROUTINE)(struct _KD_DISPATCH_TABLE *DispatchTable,
-                     ULONG BootPhase);
+(STDCALL*PKDP_INIT_ROUTINE)(
+    struct _KD_DISPATCH_TABLE *DispatchTable,
+    ULONG BootPhase
+);
 
 typedef
 VOID
@@ -116,37 +115,60 @@ VOID
 
 typedef
 KD_CONTINUE_TYPE
-(STDCALL*PKDP_EXCEPTION_ROUTINE)(PEXCEPTION_RECORD ExceptionRecord,
-                          PCONTEXT Context,
-                          PKTRAP_FRAME TrapFrame);
+(STDCALL*PKDP_EXCEPTION_ROUTINE)(
+    PEXCEPTION_RECORD ExceptionRecord,
+    PCONTEXT Context,
+    PKTRAP_FRAME TrapFrame
+);
 
 /* INIT ROUTINES *************************************************************/
 
 VOID
 STDCALL
-KdpScreenInit(struct _KD_DISPATCH_TABLE *DispatchTable,
-              ULONG BootPhase);
+KdpScreenInit(
+    struct _KD_DISPATCH_TABLE *DispatchTable,
+    ULONG BootPhase
+);
+
+VOID
+STDCALL
+KdpSerialInit(
+    struct _KD_DISPATCH_TABLE *DispatchTable,
+    ULONG BootPhase
+);
 
 VOID
 STDCALL
-KdpSerialInit(struct _KD_DISPATCH_TABLE *DispatchTable,
-              ULONG BootPhase);
+KdpInitDebugLog(
+    struct _KD_DISPATCH_TABLE *DispatchTable,
+    ULONG BootPhase
+);
 
 VOID
 STDCALL
-KdpInitDebugLog(struct _KD_DISPATCH_TABLE *DispatchTable,
-                ULONG BootPhase);
+KdpBochsInit(
+    struct _KD_DISPATCH_TABLE *DispatchTable,
+    ULONG BootPhase
+);
+
+VOID
+STDCALL
+KdpGdbStubInit(
+    struct _KD_DISPATCH_TABLE *DispatchTable,
+    ULONG BootPhase);
 
 /* KD ROUTINES ***************************************************************/
 
 KD_CONTINUE_TYPE
 STDCALL
-KdpEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
-                          KPROCESSOR_MODE PreviousMode,
-                          PCONTEXT Context,
-                          PKTRAP_FRAME TrapFrame,
-                          BOOLEAN FirstChance,
-                          BOOLEAN Gdb);
+KdpEnterDebuggerException(
+    PEXCEPTION_RECORD ExceptionRecord,
+    KPROCESSOR_MODE PreviousMode,
+    PCONTEXT Context,
+    PKTRAP_FRAME TrapFrame,
+    BOOLEAN FirstChance,
+    BOOLEAN Gdb
+);
 
 ULONG
 STDCALL
@@ -156,6 +178,10 @@ BOOLEAN
 STDCALL
 KdpDetectConflicts(PCM_RESOURCE_LIST DriverList);
 
+VOID
+STDCALL
+KdpBochsDebugPrint(IN PCH Message);
+
 /* KD GLOBALS  ***************************************************************/
 
 /* serial debug connection */
@@ -173,8 +199,10 @@ KdpDetectConflicts(PCM_RESOURCE_LIST DriverList);
 /* KD Private Debug Modes */
 typedef struct _KDP_DEBUG_MODE
 {
-    union {
-        struct {
+    union
+    {
+        struct
+        {
             /* Native Modes */
             UCHAR Screen :1;
             UCHAR Serial :1;
@@ -194,17 +222,17 @@ typedef struct _KDP_DEBUG_MODE
 /* KD Internal Debug Services */
 typedef enum _KDP_DEBUG_SERVICE
 {
-    DumpNonPagedPool           = 0x1e, /* a */
-    ManualBugCheck             = 0x30, /* b */
-    DumpNonPagedPoolStats      = 0x2e, /* c */
-    DumpNewNonPagedPool                = 0x20, /* d */
-    DumpNewNonPagedPoolStats   = 0x12, /* e */
-    DumpAllThreads             = 0x21, /* f */
-    DumpUserThreads            = 0x22, /* g */
-    KdSpare1                   = 0x23, /* h */
-    KdSpare2                   = 0x17, /* i */
-    KdSpare3                   = 0x24, /* j */
-    EnterDebugger              = 0x25  /* k */
+    DumpNonPagedPool = 0x1e, /* a */
+    ManualBugCheck = 0x30, /* b */
+    DumpNonPagedPoolStats = 0x2e, /* c */
+    DumpNewNonPagedPool = 0x20, /* d */
+    DumpNewNonPagedPoolStats = 0x12, /* e */
+    DumpAllThreads = 0x21, /* f */
+    DumpUserThreads = 0x22, /* g */
+    KdSpare1 = 0x23, /* h */
+    KdSpare2 = 0x17, /* i */
+    KdSpare3 = 0x24, /* j */
+    EnterDebugger = 0x25  /* k */
 } KDP_DEBUG_SERVICE;
 
 /* Dispatch Table for Wrapper Functions */
diff --git a/reactos/ntoskrnl/include/internal/kdb.h b/reactos/ntoskrnl/include/internal/kdb.h
deleted file mode 100644 (file)
index 4248c3b..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-#ifndef NTOSKRNL_KDB_H
-#define NTOSKRNL_KDB_H
-
-/* DEFINES *******************************************************************/
-
-#define TAG_KDBG        (('K' << 24) | ('D' << 16) | ('B' << 8) | 'G')
-
-#ifndef RTL_NUMBER_OF
-# define RTL_NUMBER_OF(x) (sizeof(x) / sizeof((x)[0]))
-#endif
-
-/* TYPES *********************************************************************/
-
-/* from kdb.c */
-typedef struct _KDB_KTRAP_FRAME
-{
-   KTRAP_FRAME  Tf;
-   ULONG        Cr0;
-   ULONG        Cr1; /* reserved/unused */
-   ULONG        Cr2;
-   ULONG        Cr3;
-   ULONG        Cr4;
-} KDB_KTRAP_FRAME, *PKDB_KTRAP_FRAME;
-
-typedef enum _KDB_BREAKPOINT_TYPE
-{
-   KdbBreakPointNone = 0,
-   KdbBreakPointSoftware,
-   KdbBreakPointHardware,
-   KdbBreakPointTemporary
-} KDB_BREAKPOINT_TYPE;
-
-typedef enum _KDB_ACCESS_TYPE
-{
-   KdbAccessRead,
-   KdbAccessWrite,
-   KdbAccessReadWrite,
-   KdbAccessExec
-} KDB_ACCESS_TYPE;
-
-typedef struct _KDB_BREAKPOINT
-{
-   KDB_BREAKPOINT_TYPE    Type;         /* Type of breakpoint */
-   BOOLEAN                Enabled;      /* Whether the bp is enabled */
-   ULONG_PTR              Address;      /* Address of the breakpoint */
-   BOOLEAN                Global;       /* Whether the breakpoint is global or local to a process */
-   PEPROCESS              Process;      /* Owning process */
-   PCHAR                  ConditionExpression;
-   PVOID                  Condition;
-   union {
-      /* KdbBreakPointSoftware */
-      UCHAR               SavedInstruction;
-      /* KdbBreakPointHardware */
-      struct {
-         UCHAR            DebugReg : 2;
-         UCHAR            Size : 3;
-         KDB_ACCESS_TYPE  AccessType;
-      } Hw;
-   } Data;
-} KDB_BREAKPOINT, *PKDB_BREAKPOINT;
-
-typedef enum _KDB_ENTER_CONDITION
-{
-   KdbDoNotEnter,
-   KdbEnterAlways,
-   KdbEnterFromKmode,
-   KdbEnterFromUmode
-} KDB_ENTER_CONDITION;
-
-/* These values MUST be nonzero.  They're used as bit masks. */
-typedef enum _KDB_OUTPUT_SETTINGS
-{
-   KD_DEBUG_KDSERIAL = 1,
-   KD_DEBUG_KDNOECHO = 2
-} KDB_OUTPUT_SETTINGS;
-
-/* FUNCTIONS *****************************************************************/
-
-/* from i386/i386-dis.c */
-
-LONG
-KdbpDisassemble(
-   IN ULONG Address,
-   IN ULONG IntelSyntax);
-
-LONG
-KdbpGetInstLength(
-   IN ULONG Address);
-
-/* from i386/kdb_help.S */
-
-STDCALL VOID
-KdbpStackSwitchAndCall(
-   IN PVOID NewStack,
-   IN VOID (*Function)(VOID));
-
-/* from kdb_cli.c */
-
-extern PCHAR KdbInitFileBuffer;
-
-VOID
-KdbpCliInit();
-
-VOID
-KdbpCliMainLoop(
-   IN BOOLEAN EnteredOnSingleStep);
-
-VOID
-KdbpCliModuleLoaded(
-   IN PUNICODE_STRING Name);
-
-VOID
-KdbpCliInterpretInitFile();
-
-VOID
-KdbpPrint(
-   IN PCHAR Format,
-   IN ...  OPTIONAL);
-
-/* from kdb_expr.c */
-
-BOOLEAN
-KdbpRpnEvaluateExpression(
-   IN  PCHAR Expression,
-   IN  PKDB_KTRAP_FRAME TrapFrame,
-   OUT PULONGLONG Result,
-   OUT PLONG ErrOffset  OPTIONAL,
-   OUT PCHAR ErrMsg  OPTIONAL);
-
-PVOID
-KdbpRpnParseExpression(
-   IN  PCHAR Expression,
-   OUT PLONG ErrOffset  OPTIONAL,
-   OUT PCHAR ErrMsg  OPTIONAL);
-
-BOOLEAN
-KdbpRpnEvaluateParsedExpression(
-   IN  PVOID Expression,
-   IN  PKDB_KTRAP_FRAME TrapFrame,
-   OUT PULONGLONG Result,
-   OUT PLONG ErrOffset  OPTIONAL,
-   OUT PCHAR ErrMsg  OPTIONAL);
-
-/* from kdb_symbols.c */
-
-BOOLEAN
-KdbpSymFindModuleByAddress(IN PVOID Address,
-                           OUT PKDB_MODULE_INFO pInfo);
-
-BOOLEAN
-KdbpSymFindModuleByName(IN LPCWSTR Name,
-                        OUT PKDB_MODULE_INFO pInfo);
-
-BOOLEAN
-KdbpSymFindModuleByIndex(IN INT Index,
-                         OUT PKDB_MODULE_INFO pInfo);
-
-/* from kdb.c */
-
-extern PEPROCESS KdbCurrentProcess;
-extern PETHREAD KdbCurrentThread;
-extern LONG KdbLastBreakPointNr;
-extern ULONG KdbNumSingleSteps;
-extern BOOLEAN KdbSingleStepOver;
-extern PKDB_KTRAP_FRAME KdbCurrentTrapFrame;
-extern ULONG KdbDebugState;
-
-LONG
-KdbpGetNextBreakPointNr(
-   IN ULONG Start  OPTIONAL);
-
-BOOLEAN
-KdbpGetBreakPointInfo(
-   IN  ULONG BreakPointNr,
-   OUT ULONG_PTR *Address  OPTIONAL,
-   OUT KDB_BREAKPOINT_TYPE *Type  OPTIONAL,
-   OUT UCHAR *Size  OPTIONAL,
-   OUT KDB_ACCESS_TYPE *AccessType  OPTIONAL,
-   OUT UCHAR *DebugReg  OPTIONAL,
-   OUT BOOLEAN *Enabled  OPTIONAL,
-   OUT BOOLEAN *Global  OPTIONAL,
-   OUT PEPROCESS *Process  OPTIONAL,
-   OUT PCHAR *ConditionExpression  OPTIONAL);
-
-NTSTATUS
-KdbpInsertBreakPoint(
-   IN  ULONG_PTR Address,
-   IN  KDB_BREAKPOINT_TYPE Type,
-   IN  UCHAR Size  OPTIONAL,
-   IN  KDB_ACCESS_TYPE AccessType  OPTIONAL,
-   IN  PCHAR ConditionExpression  OPTIONAL,
-   IN  BOOLEAN Global,
-   OUT PULONG BreakPointNumber  OPTIONAL);
-
-BOOLEAN
-KdbpDeleteBreakPoint(
-   IN LONG BreakPointNr  OPTIONAL,
-   IN OUT PKDB_BREAKPOINT BreakPoint  OPTIONAL);
-
-BOOLEAN
-KdbpEnableBreakPoint(
-   IN LONG BreakPointNr  OPTIONAL,
-   IN OUT PKDB_BREAKPOINT BreakPoint  OPTIONAL);
-
-BOOLEAN
-KdbpDisableBreakPoint(
-   IN LONG BreakPointNr  OPTIONAL,
-   IN OUT PKDB_BREAKPOINT BreakPoint  OPTIONAL);
-
-BOOLEAN
-KdbpGetEnterCondition(
-   IN LONG ExceptionNr,
-   IN BOOLEAN FirstChance,
-   OUT KDB_ENTER_CONDITION *Condition);
-
-BOOLEAN
-KdbpSetEnterCondition(
-   IN LONG ExceptionNr,
-   IN BOOLEAN FirstChance,
-   IN KDB_ENTER_CONDITION Condition);
-
-BOOLEAN
-KdbpAttachToThread(
-   PVOID ThreadId);
-
-BOOLEAN
-KdbpAttachToProcess(
-   PVOID ProcessId);
-
-VOID
-STDCALL
-KdbpGetCommandLineSettings(PCHAR p1);
-
-KD_CONTINUE_TYPE
-KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
-                           KPROCESSOR_MODE PreviousMode,
-                           PCONTEXT Context,
-                           PKTRAP_FRAME TrapFrame,
-                           BOOLEAN FirstChance);
-/* other functions */
-
-#define KdbpSafeReadMemory(dst, src, size)   MmSafeCopyFromUser(dst, src, size)
-#define KdbpSafeWriteMemory(dst, src, size)  MmSafeCopyToUser(dst, src, size)
-
-#define KdbpGetCharKeyboard(ScanCode) KdbpTryGetCharKeyboard(ScanCode, 0)
-CHAR
-KdbpTryGetCharKeyboard(PULONG ScanCode, UINT Retry);
-
-#define KdbpGetCharSerial()  KdbpTryGetCharSerial(0)
-CHAR
-KdbpTryGetCharSerial(UINT Retry);
-
-VOID
-KdbEnter(VOID);
-VOID
-DbgRDebugInit(VOID);
-VOID
-DbgShowFiles(VOID);
-VOID
-DbgEnableFile(PCH Filename);
-VOID
-DbgDisableFile(PCH Filename);
-VOID
-KbdDisableMouse();
-VOID
-KbdEnableMouse();
-
-#endif /* NTOSKRNL_KDB_H */
-
diff --git a/reactos/ntoskrnl/include/internal/kdbochs.h b/reactos/ntoskrnl/include/internal/kdbochs.h
deleted file mode 100644 (file)
index d0f9a23..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* $Id: kd.h 13948 2005-03-12 01:11:06Z navaraf $
- *
- * kernel debugger prototypes
- */
-
-#ifndef __INCLUDE_INTERNAL_KD_BOCHS_H
-#define __INCLUDE_INTERNAL_KD_BOCHS_H
-
-VOID
-STDCALL
-KdpBochsInit(struct _KD_DISPATCH_TABLE *DispatchTable,
-             ULONG BootPhase);
-VOID
-STDCALL
-KdpBochsDebugPrint(IN PCH Message);
-
-#endif /* __INCLUDE_INTERNAL_KD_BOCHS_H */
diff --git a/reactos/ntoskrnl/include/internal/kdgdb.h b/reactos/ntoskrnl/include/internal/kdgdb.h
deleted file mode 100644 (file)
index b8cf7ef..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/* $Id: kd.h 13948 2005-03-12 01:11:06Z navaraf $
- *
- * kernel debugger prototypes
- */
-
-#ifndef __INCLUDE_INTERNAL_KD_GDB_H
-#define __INCLUDE_INTERNAL_KD_GDB_H
-
-VOID
-STDCALL
-KdpGdbStubInit(struct _KD_DISPATCH_TABLE *DispatchTable,
-               ULONG BootPhase);
-
-extern KD_PORT_INFORMATION GdbPortInfo;
-
-#endif /* __INCLUDE_INTERNAL_KD_BOCHS_H */
index 9be2541..b2ad1d8 100644 (file)
@@ -1,22 +1,3 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_KE_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_KE_H
 
 
 /* INTERNAL KERNEL TYPES ****************************************************/
 
-#ifndef __ASM__
-
-#ifndef __USE_W32API
-
-typedef struct _KPROCESS *PKPROCESS;
-typedef struct _DISPATCHER_HEADER *PDISPATCHER_HEADER;
-
-#endif /* __USE_W32API */
-
-typedef struct _HARDWARE_PTE_X86 {
-    ULONG Valid             : 1;
-    ULONG Write             : 1;
-    ULONG Owner             : 1;
-    ULONG WriteThrough      : 1;
-    ULONG CacheDisable      : 1;
-    ULONG Accessed          : 1;
-    ULONG Dirty             : 1;
-    ULONG LargePage         : 1;
-    ULONG Global            : 1;
-    ULONG CopyOnWrite       : 1;
-    ULONG Prototype         : 1;
-    ULONG reserved          : 1;
-    ULONG PageFrameNumber   : 20;
-} HARDWARE_PTE_X86, *PHARDWARE_PTE_X86;
-
 typedef struct _WOW64_PROCESS
 {
   PVOID Wow64;
 } WOW64_PROCESS, *PWOW64_PROCESS;
 
-#include <pshpack1.h>
-
-typedef struct _KTHREAD
-{
-   /* For waiting on thread exit */
-   DISPATCHER_HEADER DispatcherHeader;    /* 00 */
-
-   /* List of mutants owned by the thread */
-   LIST_ENTRY        MutantListHead;      /* 10 */
-   PVOID             InitialStack;        /* 18 */
-   ULONG_PTR         StackLimit;          /* 1C */
-
-   /* Pointer to the thread's environment block in user memory */
-   struct _TEB       *Teb;                /* 20 */
-
-   /* Pointer to the thread's TLS array */
-   PVOID             TlsArray;            /* 24 */
-   PVOID             KernelStack;         /* 28 */
-   UCHAR             DebugActive;         /* 2C */
-
-   /* Thread state (one of THREAD_STATE_xxx constants below) */
-   UCHAR             State;               /* 2D */
-   BOOLEAN           Alerted[2];          /* 2E */
-   UCHAR             Iopl;                /* 30 */
-   UCHAR             NpxState;            /* 31 */
-   CHAR              Saturation;          /* 32 */
-   CHAR              Priority;            /* 33 */
-   KAPC_STATE        ApcState;            /* 34 */
-   ULONG             ContextSwitches;     /* 4C */
-   LONG              WaitStatus;          /* 50 */
-   KIRQL             WaitIrql;            /* 54 */
-   CHAR              WaitMode;            /* 55 */
-   UCHAR             WaitNext;            /* 56 */
-   UCHAR             WaitReason;          /* 57 */
-   union {                                /* 58 */
-      PKWAIT_BLOCK   WaitBlockList;       /* 58 */
-      PKGATE         GateObject;          /* 58 */
-   };                                     /* 58 */
-   LIST_ENTRY        WaitListEntry;       /* 5C */
-   ULONG             WaitTime;            /* 64 */
-   CHAR              BasePriority;        /* 68 */
-   UCHAR             DecrementCount;      /* 69 */
-   UCHAR             PriorityDecrement;   /* 6A */
-   CHAR              Quantum;             /* 6B */
-   KWAIT_BLOCK       WaitBlock[4];        /* 6C */
-   PVOID             LegoData;            /* CC */
-   union {
-          struct {
-              USHORT KernelApcDisable;
-              USHORT SpecialApcDisable;
-          };
-          ULONG      CombinedApcDisable;  /* D0 */
-   };
-   KAFFINITY         UserAffinity;        /* D4 */
-   UCHAR             SystemAffinityActive;/* D8 */
-   UCHAR             PowerState;          /* D9 */
-   UCHAR             NpxIrql;             /* DA */
-   UCHAR             Pad[1];              /* DB */
-   PVOID             ServiceTable;        /* DC */
-   PKQUEUE           Queue;               /* E0 */
-   KSPIN_LOCK        ApcQueueLock;        /* E4 */
-   KTIMER            Timer;               /* E8 */
-   LIST_ENTRY        QueueListEntry;      /* 110 */
-   KAFFINITY         Affinity;            /* 118 */
-   UCHAR             Preempted;           /* 11C */
-   UCHAR             ProcessReadyQueue;   /* 11D */
-   UCHAR             KernelStackResident; /* 11E */
-   UCHAR             NextProcessor;       /* 11F */
-   PVOID             CallbackStack;       /* 120 */
-   struct _W32THREAD *Win32Thread;        /* 124 */
-   struct _KTRAP_FRAME *TrapFrame;        /* 128 */
-   PKAPC_STATE       ApcStatePointer[2];  /* 12C */
-   UCHAR             EnableStackSwap;     /* 134 */
-   UCHAR             LargeStack;          /* 135 */
-   UCHAR             ResourceIndex;       /* 136 */
-   UCHAR             PreviousMode;        /* 137 */
-   ULONG             KernelTime;          /* 138 */
-   ULONG             UserTime;            /* 13C */
-   KAPC_STATE        SavedApcState;       /* 140 */
-   UCHAR             Alertable;           /* 158 */
-   UCHAR             ApcStateIndex;       /* 159 */
-   UCHAR             ApcQueueable;        /* 15A */
-   UCHAR             AutoAlignment;       /* 15B */
-   PVOID             StackBase;           /* 15C */
-   KAPC              SuspendApc;          /* 160 */
-   KSEMAPHORE        SuspendSemaphore;    /* 190 */
-   LIST_ENTRY        ThreadListEntry;     /* 1A4 */
-   CHAR              FreezeCount;         /* 1AC */
-   UCHAR             SuspendCount;        /* 1AD */
-   UCHAR             IdealProcessor;      /* 1AE */
-   UCHAR             DisableBoost;        /* 1AF */
-   UCHAR             QuantumReset;        /* 1B0 */
-} KTHREAD;
-
-#include <poppack.h>
-
-typedef struct _KEXECUTE_OPTIONS
-{
-    UCHAR ExecuteDisable:1;
-    UCHAR ExecuteEnable:1;
-    UCHAR DisableThunkEmulation:1;
-    UCHAR Permanent:1;
-    UCHAR ExecuteDispatchEnable:1;
-    UCHAR ImageDispatchEnable:1;
-    UCHAR Spare:2;
-} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
-
-/*
- * NAME:           KPROCESS
- * DESCRIPTION:    Internal Kernel Process Structure.
- * PORTABILITY:    Architecture Dependent.
- * KERNEL VERSION: 5.2
- * DOCUMENTATION:  http://reactos.com/wiki/index.php/KPROCESS
- */
-typedef struct _KPROCESS
-{
-    DISPATCHER_HEADER     Header;                    /* 000 */
-    LIST_ENTRY            ProfileListHead;           /* 010 */
-    PHYSICAL_ADDRESS      DirectoryTableBase;        /* 018 */
-    KGDTENTRY             LdtDescriptor;             /* 020 */
-    KIDTENTRY             Int21Descriptor;           /* 028 */
-    USHORT                IopmOffset;                /* 030 */
-    UCHAR                 Iopl;                      /* 032 */
-    UCHAR                 Unused;                    /* 033 */
-    ULONG                 ActiveProcessors;          /* 034 */
-    ULONG                 KernelTime;                /* 038 */
-    ULONG                 UserTime;                  /* 03C */
-    LIST_ENTRY            ReadyListHead;             /* 040 */
-    LIST_ENTRY            SwapListEntry;             /* 048 */
-    PVOID                 VdmTrapcHandler;           /* 04C */
-    LIST_ENTRY            ThreadListHead;            /* 050 */
-    KSPIN_LOCK            ProcessLock;               /* 058 */
-    KAFFINITY             Affinity;                  /* 05C */
-    union {
-        struct {
-            ULONG         AutoAlignment:1;           /* 060.0 */
-            ULONG         DisableBoost:1;            /* 060.1 */
-            ULONG         DisableQuantum:1;          /* 060.2 */
-            ULONG         ReservedFlags:29;          /* 060.3 */
-        };
-        ULONG             ProcessFlags;              /* 060 */
-    };
-    CHAR                  BasePriority;              /* 064 */
-    CHAR                  QuantumReset;              /* 065 */
-    UCHAR                 State;                     /* 066 */
-    UCHAR                 ThreadSeed;                /* 067 */
-    UCHAR                 PowerState;                /* 068 */
-    UCHAR                 IdealNode;                 /* 069 */
-    UCHAR                 Visited;                   /* 06A */
-    KEXECUTE_OPTIONS      Flags;                     /* 06B */
-    ULONG                 StackCount;                /* 06C */
-    LIST_ENTRY            ProcessListEntry;          /* 070 */
-} KPROCESS;
-
 /* INTERNAL KERNEL FUNCTIONS ************************************************/
 
 struct _KIRQ_TRAPFRAME;
@@ -242,10 +44,6 @@ struct _KEXCEPTION_FRAME;
     } \
 }
 
-#ifndef __USE_W32API
-#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->Number)
-#endif
-
 /* threadsch.c ********************************************************************/
 
 /* Thread Scheduler Functions */
@@ -321,27 +119,15 @@ KeIpiGenericCall(VOID (STDCALL *WorkerRoutine)(PVOID),
 
 /* next file ***************************************************************/
 
-typedef struct _KPROFILE_SOURCE_OBJECT {
+typedef struct _KPROFILE_SOURCE_OBJECT
+{
     KPROFILE_SOURCE Source;
     LIST_ENTRY ListEntry;
 } KPROFILE_SOURCE_OBJECT, *PKPROFILE_SOURCE_OBJECT;
 
-typedef struct _KPROFILE {
-    CSHORT Type;
-    CSHORT Size;
-    LIST_ENTRY ListEntry;
-    PVOID RegionStart;
-    PVOID RegionEnd;
-    ULONG BucketShift;
-    PVOID Buffer;
-    CSHORT Source;
-    ULONG Affinity;
-    BOOLEAN Active;
-    struct _KPROCESS *Process;
-} KPROFILE, *PKPROFILE;
-
 /* Cached modules from the loader block */
-typedef enum _CACHED_MODULE_TYPE {
+typedef enum _CACHED_MODULE_TYPE
+{
     AnsiCodepage,
     OemCodepage,
     UnicodeCasemap,
@@ -351,7 +137,8 @@ typedef enum _CACHED_MODULE_TYPE {
 } CACHED_MODULE_TYPE, *PCACHED_MODULE_TYPE;
 extern PLOADER_MODULE CachedModules[MaximumCachedModuleType];
 
-VOID STDCALL
+VOID 
+STDCALL
 DbgBreakPointNoBugCheck(VOID);
 
 VOID
@@ -591,8 +378,6 @@ KeRosGetStackFrames(
 VOID
 KiSetSystemTime(PLARGE_INTEGER NewSystemTime);
 
-#endif /* not __ASM__ */
-
 #define MAXIMUM_PROCESSORS      32
 
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_KE_H */
index b779a4f..a71584d 100644 (file)
@@ -1,10 +1,3 @@
-/*
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            include/internal/ldr.h
- * PURPOSE:         Header for loader module
- */
-
 #ifndef __INCLUDE_INTERNAL_LDR_H
 #define __INCLUDE_INTERNAL_LDR_H
 
 #define  DRIVER_ROOT_NAME  L"\\Driver\\"
 #define  FILESYSTEM_ROOT_NAME  L"\\FileSystem\\"
 
-
 extern ULONG_PTR LdrHalBase;
 
 NTSTATUS
-LdrLoadInitialProcess(PHANDLE ProcessHandle,
-                     PHANDLE ThreadHandle);
+LdrLoadInitialProcess(
+    PHANDLE ProcessHandle,
+    PHANDLE ThreadHandle
+);
 
 VOID
-LdrLoadAutoConfigDrivers (
-       VOID
-       );
+LdrLoadAutoConfigDrivers (VOID);
+
 VOID
-LdrInitModuleManagement (
-       VOID
-       );
+LdrInitModuleManagement (VOID);
 
 NTSTATUS
 STDCALL
-LdrpMapSystemDll(PEPROCESS Process,
-                 PVOID *DllBase);
+LdrpMapSystemDll(
+    PEPROCESS Process,
+    PVOID *DllBase
+);
 
 NTSTATUS
 STDCALL
@@ -44,34 +37,34 @@ LdrpGetSystemDllEntryPoints(VOID);
 
 PVOID
 LdrpGetSystemDllEntryPoint (VOID);
+
 PVOID
 LdrpGetSystemDllApcDispatcher(VOID);
+
 PVOID
 LdrpGetSystemDllExceptionDispatcher(VOID);
+
 PVOID
 LdrpGetSystemDllCallbackDispatcher(VOID);
+
 PVOID
 LdrpGetSystemDllRaiseExceptionDispatcher(VOID);
-NTSTATUS
-LdrpMapImage (
-       HANDLE  ProcessHandle,
-       HANDLE  SectionHandle,
-       PVOID   * ImageBase
-       );
-
 
-NTSTATUS STDCALL
-LdrGetProcedureAddress (IN PVOID BaseAddress,
-                        IN PANSI_STRING Name,
-                        IN ULONG Ordinal,
-                        OUT PVOID *ProcedureAddress);
+NTSTATUS
+LdrpMapImage(
+    HANDLE     ProcessHandle,
+    HANDLE     SectionHandle,
+    PVOID      * ImageBase
+);
 
 NTSTATUS
-LdrpLoadImage(PUNICODE_STRING DriverName,
-             PVOID *ModuleBase,
-             PVOID *SectionPointer,
-             PVOID *EntryPoint,
-             PVOID *ExportDirectory);
+LdrpLoadImage(
+    PUNICODE_STRING DriverName,
+    PVOID *ModuleBase,
+    PVOID *SectionPointer,
+    PVOID *EntryPoint,
+    PVOID *ExportDirectory
+);
 
 NTSTATUS
 LdrpUnloadImage(PVOID ModuleBase);
@@ -80,30 +73,34 @@ NTSTATUS
 LdrpLoadAndCallImage(PUNICODE_STRING DriverName);
 
 NTSTATUS
-LdrpQueryModuleInformation(PVOID Buffer,
-                          ULONG Size,
-                          PULONG ReqSize);
-
-PVOID STDCALL
-RtlImageDirectoryEntryToData (
-       IN PVOID        BaseAddress,
-       IN BOOLEAN      ImageLoaded,
-       IN ULONG        Directory,
-       OUT PULONG      Size);
+LdrpQueryModuleInformation(
+    PVOID Buffer,
+    ULONG Size,
+    PULONG ReqSize
+);
+
 VOID
 LdrInit1(VOID);
-VOID
-LdrInitDebug(PLOADER_MODULE Module, PWCH Name);
 
-PVOID LdrSafePEProcessModule(
-       PVOID ModuleLoadBase,
-  PVOID DriverBase,
-       PVOID ImportModuleBase,
-       PULONG DriverSize);
+VOID
+LdrInitDebug(
+    PLOADER_MODULE Module, 
+    PWCH Name
+);
+
+PVOID 
+LdrSafePEProcessModule(
+    PVOID ModuleLoadBase,
+    PVOID DriverBase,
+    PVOID ImportModuleBase,
+    PULONG DriverSize
+);
 
 NTSTATUS
-LdrLoadModule(PUNICODE_STRING Filename,
-             PMODULE_OBJECT *ModuleObject);
+LdrLoadModule(
+    PUNICODE_STRING Filename,
+    PMODULE_OBJECT *ModuleObject
+);
 
 NTSTATUS
 LdrUnloadModule(PMODULE_OBJECT ModuleObject);
index 5c8a8f0..7452dba 100644 (file)
@@ -1,42 +1,3 @@
-/* $Id$
- *
- * Copyright (C) 1998-2005 ReactOS Team (and the authors from the programmers section)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *
- * PROJECT:         ReactOS kernel
- * FILE:            ntoskrnl/include/internal/mm.h
- * PURPOSE:         level memory managment definitions
- * 
- * PROGRAMMERS:     David Welch
- *                  Casper Hornstrup
- *                  Hartmut Birr
- *                  Ge van Geldorp
- *                  Eric Kohl
- *                  Andrew Greenwood
- *                  James Tabor
- *                  Alex Ionescu
- *                  Mike Nordell
- *                  Thomas Weidenmueller
- *                  Filip Navara
- *                  KJK::Hyperion
- *                  Gregor Anich
- *                  Steven Edwards
- */
-
 #ifndef __INCLUDE_INTERNAL_MM_H
 #define __INCLUDE_INTERNAL_MM_H
 
@@ -51,11 +12,10 @@ extern ULONG MmTotalPagedPoolQuota;
 extern ULONG MmTotalNonPagedPoolQuota;
 
 struct _EPROCESS;
-
 struct _MM_RMAP_ENTRY;
-struct _MM_PAGEOP;
+struct _MM_PAGEOP
+;
 typedef ULONG SWAPENTRY;
-
 typedef ULONG PFN_TYPE, *PPFN_TYPE;
 
 #define MEMORY_AREA_INVALID              (0)
@@ -81,14 +41,12 @@ typedef ULONG PFN_TYPE, *PPFN_TYPE;
 #define NR_SECTION_PAGE_TABLES           (1024)
 #define NR_SECTION_PAGE_ENTRIES          (1024)
 
-#ifndef __USE_W32API
-#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
-#endif
-
 #define TEB_BASE        (0x7FFDE000)
+#define KPCR_BASE                 0xFF000000
 
-#define MM_VIRTMEM_GRANULARITY (64 * 1024) /* Although Microsoft says this isn't hardcoded anymore,
-                                              they won't be able to change it. Stuff depends on it */
+/* Although Microsoft says this isn't hardcoded anymore,
+   they won't be able to change it. Stuff depends on it */
+#define MM_VIRTMEM_GRANULARITY (64 * 1024) 
 
 #define STATUS_MM_RESTART_OPERATION       ((NTSTATUS)0xD0000001)
 
@@ -189,61 +147,6 @@ typedef struct _SECTION_OBJECT
   };
 } SECTION_OBJECT;
 
-#ifndef __USE_W32API
-
-typedef struct _SECTION_OBJECT *PSECTION_OBJECT;
-
-typedef struct _EPROCESS_QUOTA_ENTRY {
-    ULONG Usage;
-    ULONG Limit;
-    ULONG Peak;
-    ULONG Return;
-} EPROCESS_QUOTA_ENTRY, *PEPROCESS_QUOTA_ENTRY;
-
-typedef struct _EPROCESS_QUOTA_BLOCK {
-    EPROCESS_QUOTA_ENTRY    QuotaEntry[3];
-    LIST_ENTRY              QuotaList;
-    ULONG                   ReferenceCount;
-    ULONG                   ProcessCount;
-} EPROCESS_QUOTA_BLOCK, *PEPROCESS_QUOTA_BLOCK;
-
-/*
- * header mess....
- */
-
-typedef struct _PAGEFAULT_HISTORY
-{
-    ULONG                                 CurrentIndex;
-    ULONG                                 MaxIndex;
-    KSPIN_LOCK                            SpinLock;
-    PVOID                                 Reserved;
-    struct _PROCESS_WS_WATCH_INFORMATION  WatchInfo[1];
-} PAGEFAULT_HISTORY, *PPAGEFAULT_HISTORY;
-
-#endif /* __USE_W32API */
-
-typedef struct _MMADDRESS_NODE
-{
-   union {
-       ULONG Balance:2;
-       struct _MMADDRESS_NODE *Parent;
-   } u1;
-   struct _MMADDRESS_NODE *LeftChild;
-   struct _MMADDRESS_NODE *RightChild;
-   ULONG StartingVpn;
-   ULONG EndingVpn;
-} MMADDRESS_NODE, *PMMADDRESS_NODE;
-
-typedef struct _MM_AVL_TABLE
-{
-    MMADDRESS_NODE BalancedRoot;
-    ULONG DepthOfTree:5;
-    ULONG Unused:3;
-    ULONG NumberGenericTableElements:24;
-    PVOID NodeHint;
-    PVOID NodeFreeHint;
-} MM_AVL_TABLE, *PMM_AVL_TABLE;
-
 typedef struct _MEMORY_AREA
 {
   PVOID StartingAddress;
@@ -283,30 +186,6 @@ typedef struct _MADDRESS_SPACE
   ULONG PageTableRefCountTableSize;
 } MADDRESS_SPACE, *PMADDRESS_SPACE;
 
-typedef struct _KNODE {
-   ULONG ProcessorMask;
-   ULONG Color;
-   ULONG MmShiftedColor;
-   ULONG FreeCount[2];
-   SLIST_HEADER DeadStackList;
-   SLIST_HEADER PfnDereferenceSListHead;
-   struct _SINGLE_LIST_ENTRY *PfnDeferredList;
-   UCHAR Seed;
-   UCHAR NodeNumber;
-   ULONG Flags;
-} KNODE, *PKNODE;
-
-#ifndef __USE_W32API
-/* VARIABLES */
-
-#ifdef __NTOSKRNL__
-extern PVOID EXPORTED MmSystemRangeStart;
-#else
-extern PVOID IMPORTED MmSystemRangeStart;
-#endif
-
-#endif /* __USE_W32API */
-
 typedef struct
 {
    ULONG NrTotalPages;
@@ -401,6 +280,53 @@ typedef VOID (*PMM_FREE_PAGE_FUNC)(PVOID Context, PMEMORY_AREA MemoryArea,
                                    PVOID Address, PFN_TYPE Page,
                                    SWAPENTRY SwapEntry, BOOLEAN Dirty);
 
+PVOID STDCALL ExAllocateNonPagedPoolWithTag (POOL_TYPE type,
+                                            ULONG              size,
+                                            ULONG              Tag,
+                                            PVOID              Caller);
+
+PVOID STDCALL ExAllocatePagedPoolWithTag (POOL_TYPE    Type,
+                                         ULONG         size,
+                                         ULONG         Tag);
+VOID STDCALL ExFreeNonPagedPool (PVOID block);
+
+VOID STDCALL
+ExFreePagedPool(IN PVOID Block);
+VOID MmInitializePagedPool(VOID);
+
+PVOID
+STDCALL
+MiAllocateSpecialPool  (IN POOL_TYPE PoolType,
+                        IN SIZE_T NumberOfBytes,
+                        IN ULONG Tag,
+                        IN ULONG Underrun
+                        );
+
+extern PVOID MmPagedPoolBase;
+extern ULONG MmPagedPoolSize;
+
+#define MM_PAGED_POOL_SIZE     (100*1024*1024)
+#define MM_NONPAGED_POOL_SIZE  (100*1024*1024)
+
+/*
+ * Paged and non-paged pools are 8-byte aligned
+ */
+#define MM_POOL_ALIGNMENT      8
+
+/*
+ * Maximum size of the kmalloc area (this is totally arbitary)
+ */
+#define MM_KERNEL_MAP_SIZE     (16*1024*1024)
+#define MM_KERNEL_MAP_BASE     (0xf0c00000)
+
+/*
+ * FIXME - different architectures have different cache line sizes...
+ */
+#define MM_CACHE_LINE_SIZE  32
+
+#define MM_ROUND_UP(x,s)    ((PVOID)(((ULONG_PTR)(x)+(s)-1) & ~((ULONG_PTR)(s)-1)))
+#define MM_ROUND_DOWN(x,s)  ((PVOID)(((ULONG_PTR)(x)) & ~((ULONG_PTR)(s)-1)))
+
 /* FUNCTIONS */
 
 /* aspace.c ******************************************************************/
@@ -422,7 +348,7 @@ NTSTATUS MmDestroyAddressSpace(PMADDRESS_SPACE AddressSpace);
 
 /* marea.c *******************************************************************/
 
-NTSTATUS INIT_FUNCTION
+NTSTATUS
 MmInitMemoryAreas(VOID);
 
 NTSTATUS STDCALL
@@ -839,6 +765,14 @@ NTSTATUS MmReleaseMmInfo(struct _EPROCESS* Process);
 
 NTSTATUS Mmi386ReleaseMmInfo(struct _EPROCESS* Process);
 
+NTSTATUS MmSafeCopyFromUser(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
+NTSTATUS MmSafeCopyToUser(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
+
+NTSTATUS STDCALL
+MmCopyFromCaller(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
+NTSTATUS STDCALL
+MmCopyToCaller(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
+
 VOID MmDeleteVirtualMapping(struct _EPROCESS* Process,
                            PVOID Address,
                            BOOL FreePage,
index e36b713..17f9346 100644 (file)
@@ -3,33 +3,33 @@
 
 typedef struct _MODULE_TEXT_SECTION
 {
-  ULONG Base;
-  ULONG Length;
-  LIST_ENTRY ListEntry;
-  PWCH Name;
-  PIMAGE_OPTIONAL_HEADER OptionalHeader;
-  PROSSYM_INFO RosSymInfo;
+    ULONG Base;
+    ULONG Length;
+    LIST_ENTRY ListEntry;
+    PWCH Name;
+    PIMAGE_OPTIONAL_HEADER OptionalHeader;
+    PROSSYM_INFO RosSymInfo;
 } MODULE_TEXT_SECTION, *PMODULE_TEXT_SECTION;
 
 typedef struct _MODULE_OBJECT
 {
-  CSHORT  ObjectType;
-  CSHORT  ObjectSize;
-  PVOID  Base;
-  ULONG Length;
-  ULONG Flags;
-  PVOID  EntryPoint;
-  LIST_ENTRY ListEntry;
-  UNICODE_STRING FullName;
-  UNICODE_STRING BaseName;
-  PMODULE_TEXT_SECTION TextSection;
-  union
+    CSHORT  ObjectType;
+    CSHORT  ObjectSize;
+    PVOID  Base;
+    ULONG Length;
+    ULONG Flags;
+    PVOID  EntryPoint;
+    LIST_ENTRY ListEntry;
+    UNICODE_STRING FullName;
+    UNICODE_STRING BaseName;
+    PMODULE_TEXT_SECTION TextSection;
+    union
     {
-      struct
+        struct
         {
-          PIMAGE_FILE_HEADER FileHeader;
-          PIMAGE_OPTIONAL_HEADER OptionalHeader;
-          PIMAGE_SECTION_HEADER SectionList;
+             PIMAGE_FILE_HEADER FileHeader;
+             PIMAGE_OPTIONAL_HEADER OptionalHeader;
+             PIMAGE_SECTION_HEADER SectionList;
         } PE;
     } Image;
 } MODULE_OBJECT, *PMODULE_OBJECT;
@@ -44,7 +44,7 @@ typedef MODULE_OBJECT MODULE, *PMODULE;
 
 typedef struct _INSTANCE
 {
-  HANDLE ModuleHandle;
+    HANDLE ModuleHandle;
 } INSTANCE, *PINSTANCE;
 
 BOOLEAN process_boot_module(unsigned int start);
index 9ce7f9a..b3e4b69 100644 (file)
@@ -1,22 +1,3 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2003 Eric Kohl <ekohl@rz-online.de>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_NLS_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_NLS_H
 
@@ -29,12 +10,33 @@ extern ULONG NlsUnicodeTableOffset;
 extern PUSHORT NlsUnicodeUpcaseTable;
 extern PUSHORT NlsUnicodeLowercaseTable;
 
-VOID STDCALL RtlpInitNls(VOID);
-VOID RtlpImportAnsiCodePage(PUSHORT TableBase, ULONG Size);
-VOID RtlpImportOemCodePage(PUSHORT TableBase, ULONG Size);
-VOID RtlpImportUnicodeCasemap(PUSHORT TableBase, ULONG Size);
-VOID RtlpCreateInitialNlsTables(VOID);
-VOID RtlpCreateNlsSection(VOID);
+VOID 
+STDCALL 
+RtlpInitNls(VOID);
+
+VOID
+RtlpImportAnsiCodePage(
+    PUSHORT TableBase, 
+    ULONG Size
+);
+
+VOID
+RtlpImportOemCodePage(
+    PUSHORT TableBase, 
+    ULONG Size
+);
+
+VOID
+RtlpImportUnicodeCasemap(
+    PUSHORT TableBase, 
+    ULONG Size
+);
+
+VOID
+RtlpCreateInitialNlsTables(VOID);
+
+VOID
+RtlpCreateNlsSection(VOID);
 
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_NLS_H */
 
index 1033e9a..ce98846 100644 (file)
@@ -1,12 +1,6 @@
-/*
- * Various useful prototypes
- */
-
 #ifndef __INCLUDE_INTERNAL_NTOSKRNL_H
 #define __INCLUDE_INTERNAL_NTOSKRNL_H
 
-#ifndef __ASM__
-
 /*
  * Use these to place a function in a specific section of the executable
  */
 
 #ifdef _NTOSKRNL_
 
+#include "asm.h"
 #include "ke.h"
-#include "i386/segment.h"
 #include "i386/mm.h"
 #include "i386/fpu.h"
 #include "module.h"
-#include "pool.h"
 #include "ob.h"
 #include "mm.h"
 #include "ps.h"
 #include "ex.h"
 #include "xhal.h"
 #include "v86m.h"
-#include "ifs.h"
+#include "fs.h"
 #include "port.h"
 #include "nls.h"
 #ifdef KDBG
 #include "kdb.h"
 #endif
 #include "dbgk.h"
-#include "trap.h"
-#include "safe.h"
 #include "tag.h"
 #include "test.h"
 #include "inbv.h"
 
-
 #include <pshpack1.h>
 /*
  * Defines a descriptor as it appears in the processor tables
@@ -64,14 +54,6 @@ typedef struct _DESCRIPTOR
 extern IDT_DESCRIPTOR KiIdt[256];
 //extern GDT_DESCRIPTOR KiGdt[256];
 
-
-VOID ExpInitializeEventImplementation(VOID);
-VOID ExpInitializeEventImplementation(VOID);
-VOID ExpInitializeEventPairImplementation(VOID);
-VOID ExpInitializeSemaphoreImplementation(VOID);
-VOID ExpInitializeMutantImplementation(VOID);
-VOID ExpInitializeTimerImplementation(VOID);
-VOID ExpInitializeProfileImplementation(VOID);
 /*
  * Initalization functions (called once by main())
  */
@@ -96,8 +78,23 @@ RtlpCreateUnicodeString(
    IN PCWSTR  Source,
    IN POOL_TYPE PoolType);
    
+NTSTATUS
+RtlCaptureUnicodeString(
+    OUT PUNICODE_STRING Dest,
+    IN KPROCESSOR_MODE CurrentMode,
+    IN POOL_TYPE PoolType,
+    IN BOOLEAN CaptureIfKernel,
+    IN PUNICODE_STRING UnsafeSrc
+);
+
+VOID
+RtlReleaseCapturedUnicodeString(
+    IN PUNICODE_STRING CapturedString,
+    IN KPROCESSOR_MODE CurrentMode,
+    IN BOOLEAN CaptureIfKernel
+);
+
 #endif
-#endif /* __ASM__ */
 
 /*
  *
index 43bb708..1fadcd3 100644 (file)
@@ -9,213 +9,8 @@
 #ifndef __INCLUDE_INTERNAL_OBJMGR_H
 #define __INCLUDE_INTERNAL_OBJMGR_H
 
-#define TAG_OBJECT_TYPE TAG('O', 'b', 'j', 'T')
-
 struct _EPROCESS;
 
-typedef enum _OB_OPEN_REASON
-{    
-    ObCreateHandle,
-    ObOpenHandle,
-    ObDuplicateHandle,
-    ObInheritHandle,
-    ObMaxOpenReason
-} OB_OPEN_REASON;
-    
-/* TEMPORARY HACK */
-typedef NTSTATUS
-(STDCALL *OB_CREATE_METHOD)(
-  PVOID  ObjectBody,
-  PVOID  Parent,
-  PWSTR  RemainingPath,
-  struct _OBJECT_ATTRIBUTES*  ObjectAttributes);
-                         
-/* Object Callbacks */
-typedef NTSTATUS
-(STDCALL *OB_OPEN_METHOD)(
-  OB_OPEN_REASON  Reason,
-  PVOID  ObjectBody,
-  PEPROCESS  Process,
-  ULONG  HandleCount,
-  ACCESS_MASK  GrantedAccess);
-
-typedef NTSTATUS 
-(STDCALL *OB_PARSE_METHOD)(
-  PVOID  Object,
-  PVOID  *NextObject,
-  PUNICODE_STRING  FullPath,
-  PWSTR  *Path,
-  ULONG  Attributes);
-                        
-typedef VOID 
-(STDCALL *OB_DELETE_METHOD)(
-  PVOID  DeletedObject);
-
-typedef VOID 
-(STDCALL *OB_CLOSE_METHOD)(
-  PVOID  ClosedObject,
-  ULONG  HandleCount);
-
-typedef VOID
-(STDCALL *OB_DUMP_METHOD)(
-  VOID);
-
-typedef NTSTATUS 
-(STDCALL *OB_OKAYTOCLOSE_METHOD)(
-  VOID);
-
-typedef NTSTATUS 
-(STDCALL *OB_QUERYNAME_METHOD)(
-  PVOID  ObjectBody,
-  POBJECT_NAME_INFORMATION  ObjectNameInfo,
-  ULONG  Length,
-  PULONG  ReturnLength);
-
-typedef PVOID 
-(STDCALL *OB_FIND_METHOD)(
-  PVOID  WinStaObject,
-  PWSTR  Name,
-  ULONG  Attributes);
-
-typedef NTSTATUS 
-(STDCALL *OB_SECURITY_METHOD)(
-  PVOID  ObjectBody,
-  SECURITY_OPERATION_CODE  OperationCode,
-  SECURITY_INFORMATION  SecurityInformation,
-  PSECURITY_DESCRIPTOR  SecurityDescriptor,
-  PULONG  BufferLength);
-
-typedef struct _OBJECT_HEADER_NAME_INFO
-{
-  struct _DIRECTORY_OBJECT  *Directory;
-  UNICODE_STRING  Name;
-  ULONG  QueryReferences;
-  ULONG  Reserved2;
-  ULONG  DbgReferenceCount;
-} OBJECT_HEADER_NAME_INFO, *POBJECT_HEADER_NAME_INFO;
-
-typedef struct _OBJECT_CREATE_INFORMATION 
-{
-  ULONG  Attributes;
-  HANDLE  RootDirectory;
-  PVOID  ParseContext;
-  KPROCESSOR_MODE  ProbeMode;
-  ULONG  PagedPoolCharge;
-  ULONG  NonPagedPoolCharge;
-  ULONG  SecurityDescriptorCharge;
-  PSECURITY_DESCRIPTOR  SecurityDescriptor;
-  PSECURITY_QUALITY_OF_SERVICE  SecurityQos;
-  SECURITY_QUALITY_OF_SERVICE  SecurityQualityOfService;
-} OBJECT_CREATE_INFORMATION, *POBJECT_CREATE_INFORMATION;
-
-typedef struct _OBJECT_TYPE_INITIALIZER
-{
-  WORD  Length;
-  UCHAR  UseDefaultObject;
-  UCHAR  CaseInsensitive;
-  ULONG  InvalidAttributes;
-  GENERIC_MAPPING  GenericMapping;
-  ULONG  ValidAccessMask;
-  UCHAR  SecurityRequired;
-  UCHAR  MaintainHandleCount;
-  UCHAR  MaintainTypeList;
-  POOL_TYPE  PoolType;
-  ULONG  DefaultPagedPoolCharge;
-  ULONG  DefaultNonPagedPoolCharge;
-  OB_DUMP_METHOD  DumpProcedure;
-  OB_OPEN_METHOD  OpenProcedure;
-  OB_CLOSE_METHOD  CloseProcedure;
-  OB_DELETE_METHOD  DeleteProcedure;
-  OB_PARSE_METHOD  ParseProcedure;
-  OB_SECURITY_METHOD  SecurityProcedure;
-  OB_QUERYNAME_METHOD  QueryNameProcedure;
-  OB_OKAYTOCLOSE_METHOD  OkayToCloseProcedure;
-} OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;
-
-typedef struct _OBJECT_TYPE
-{
-  ERESOURCE  Mutex;                    /* Used to lock the Object Type */
-  LIST_ENTRY  TypeList;                /* Links all the Types Together for Debugging */
-  UNICODE_STRING  Name;                /* Name of the Type */
-  PVOID  DefaultObject;                /* What Object to use during a Wait (ie, FileObjects wait on FileObject->Event) */
-  ULONG  Index;                        /* Index of this Type in the Object Directory */
-  ULONG  TotalNumberOfObjects;         /* Total number of objects of this type */
-  ULONG  TotalNumberOfHandles;         /* Total number of handles of this type */
-  ULONG  HighWaterNumberOfObjects;     /* Peak number of objects of this type */
-  ULONG  HighWaterNumberOfHandles;     /* Peak number of handles of this type */
-  OBJECT_TYPE_INITIALIZER  TypeInfo;   /* Information captured during type creation */
-  ULONG  Key;                          /* Key to use when allocating objects of this type */
-  ERESOURCE  ObjectLocks[4];           /* Locks for locking the Objects */
-} OBJECT_TYPE;
-
-typedef struct _OBJECT_HANDLE_COUNT_ENTRY
-{
-    struct _EPROCESS *Process;
-    ULONG HandleCount;
-} OBJECT_HANDLE_COUNT_ENTRY, *POBJECT_HANDLE_COUNT_ENTRY;
-                        
-typedef struct _OBJECT_HANDLE_COUNT_DATABASE
-{
-    ULONG CountEntries;
-    POBJECT_HANDLE_COUNT_ENTRY HandleCountEntries[1];
-} OBJECT_HANDLE_COUNT_DATABASE, *POBJECT_HANDLE_COUNT_DATABASE;
-                        
-typedef struct _OBJECT_HEADER_HANDLE_INFO
-{
-    union {
-        POBJECT_HANDLE_COUNT_DATABASE HandleCountDatabase;
-        OBJECT_HANDLE_COUNT_ENTRY SingleEntry;
-    };
-} OBJECT_HEADER_HANDLE_INFO, *POBJECT_HEADER_HANDLE_INFO;
-                        
-typedef struct _OBJECT_HEADER_CREATOR_INFO
-{
-    LIST_ENTRY TypeList;
-    PVOID CreatorUniqueProcess;
-    USHORT CreatorBackTraceIndex;
-    USHORT Reserved;
-} OBJECT_HEADER_CREATOR_INFO, *POBJECT_HEADER_CREATOR_INFO;
-
-typedef PVOID POBJECT;
-
-typedef struct _QUAD
-{
-    union {
-        LONGLONG UseThisFieldToCopy;
-        float DoNotUseThisField;
-    };
-} QUAD, *PQUAD;
-
-#define OB_FLAG_CREATE_INFO    0x01 // has OBJECT_CREATE_INFO
-#define OB_FLAG_KERNEL_MODE    0x02 // created by kernel
-#define OB_FLAG_CREATOR_INFO   0x04 // has OBJECT_CREATOR_INFO
-#define OB_FLAG_EXCLUSIVE      0x08 // OBJ_EXCLUSIVE
-#define OB_FLAG_PERMANENT      0x10 // OBJ_PERMANENT
-#define OB_FLAG_SECURITY       0x20 // has security descriptor
-#define OB_FLAG_SINGLE_PROCESS 0x40 // no HandleDBList
-
-/* Will be moved to public headers once "Entry" is gone */
-typedef struct _OBJECT_HEADER
-{
-    LIST_ENTRY Entry;
-    LONG PointerCount;
-    union {
-        LONG HandleCount;
-        PVOID NextToFree;
-    };
-    POBJECT_TYPE Type;
-    UCHAR NameInfoOffset;
-    UCHAR HandleInfoOffset;
-    UCHAR QuotaInfoOffset;
-    UCHAR Flags;
-    union {
-        POBJECT_CREATE_INFORMATION ObjectCreateInfo;
-        PVOID QuotaBlockCharged;
-    };
-    PSECURITY_DESCRIPTOR SecurityDescriptor;
-    QUAD Body;
-} OBJECT_HEADER, *POBJECT_HEADER;
-
 typedef struct _DIRECTORY_OBJECT
 {
    CSHORT Type;
index d6d5d0d..6ecd371 100644 (file)
@@ -1,24 +1,15 @@
-/* $Id$
- *
- * COPYRIGHT:       See COPYING in the top level directory
- * PROJECT:         ReactOS kernel
- * FILE:            include/internal/po.h
- * PURPOSE:         Internal power manager declarations
- * PROGRAMMER:      Casper S. Hornstrup (chorns@users.sourceforge.net)
- * UPDATE HISTORY:
- *                  01/05/2001  Created
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_PO_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_PO_H
 
 extern PDEVICE_NODE PopSystemPowerDeviceNode;
 
 VOID
-PoInit(PLOADER_PARAMETER_BLOCK LoaderBlock, BOOLEAN ForceAcpiDisable);
+PoInit(
+    PLOADER_PARAMETER_BLOCK LoaderBlock, 
+    BOOLEAN ForceAcpiDisable
+);
 
 NTSTATUS
-PopSetSystemPowerState(
-  SYSTEM_POWER_STATE PowerState);
+PopSetSystemPowerState(SYSTEM_POWER_STATE PowerState);
 
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_PO_H */
diff --git a/reactos/ntoskrnl/include/internal/pool.h b/reactos/ntoskrnl/include/internal/pool.h
deleted file mode 100644 (file)
index e688b15..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef __INTERNAL_POOL_H
-#define __INTERNAL_POOL_H
-
-PVOID STDCALL ExAllocateNonPagedPoolWithTag (POOL_TYPE type,
-                                            ULONG              size,
-                                            ULONG              Tag,
-                                            PVOID              Caller);
-
-PVOID STDCALL ExAllocatePagedPoolWithTag (POOL_TYPE    Type,
-                                         ULONG         size,
-                                         ULONG         Tag);
-VOID STDCALL ExFreeNonPagedPool (PVOID block);
-
-VOID STDCALL
-ExFreePagedPool(IN PVOID Block);
-VOID MmInitializePagedPool(VOID);
-
-PVOID
-STDCALL
-MiAllocateSpecialPool  (IN POOL_TYPE PoolType,
-                        IN SIZE_T NumberOfBytes,
-                        IN ULONG Tag,
-                        IN ULONG Underrun
-                        );
-
-extern PVOID MmPagedPoolBase;
-extern ULONG MmPagedPoolSize;
-
-#define MM_PAGED_POOL_SIZE     (100*1024*1024)
-#define MM_NONPAGED_POOL_SIZE  (100*1024*1024)
-
-/*
- * Paged and non-paged pools are 8-byte aligned
- */
-#define MM_POOL_ALIGNMENT      8
-
-/*
- * Maximum size of the kmalloc area (this is totally arbitary)
- */
-#define MM_KERNEL_MAP_SIZE     (16*1024*1024)
-#define MM_KERNEL_MAP_BASE     (0xf0c00000)
-
-/*
- * FIXME - different architectures have different cache line sizes...
- */
-#define MM_CACHE_LINE_SIZE  32
-
-#define MM_ROUND_UP(x,s)    ((PVOID)(((ULONG_PTR)(x)+(s)-1) & ~((ULONG_PTR)(s)-1)))
-#define MM_ROUND_DOWN(x,s)  ((PVOID)(((ULONG_PTR)(x)) & ~((ULONG_PTR)(s)-1)))
-
-#endif /* __INTERNAL_POOL_H */
index 606f150..66fbb9f 100644 (file)
@@ -83,10 +83,6 @@ LpcSendTerminationPort (PEPORT       Port,
 
 /* Pool Tags */
 
-#define TAG_LPC_MESSAGE   TAG('L', 'p', 'c', 'M')
-#define TAG_LPC_ZONE      TAG('L', 'p', 'c', 'Z')
-
-
 typedef struct _QUEUEDMESSAGE
 {
   PEPORT               Sender;
index 678d772..bcfcf27 100644 (file)
@@ -1,46 +1,13 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/* $Id$
- *
- * FILE:            ntoskrnl/ke/kthread.c
- * PURPOSE:         Process manager definitions
- * PROGRAMMER:      David Welch (welch@cwcom.net)
- * UPDATE HISTORY:
- *                  Created 22/05/98
- */
-
 #ifndef __INCLUDE_INTERNAL_PS_H
 #define __INCLUDE_INTERNAL_PS_H
 
-#ifndef __ASM__
-
 /* Forward declarations. */
 struct _KTHREAD;
 struct _KTRAPFRAME;
 struct _EJOB;
 
-#endif /* __ASM__ */
-
 #include <internal/arch/ps.h>
 
-#ifndef __ASM__
-
 extern LCID PsDefaultThreadLocaleId;
 extern LCID PsDefaultSystemLocaleId;
 
@@ -60,262 +27,6 @@ typedef struct _W32_OBJECT_CALLBACK {
     OB_DELETE_METHOD  DesktopDelete;
 } W32_OBJECT_CALLBACK, *PW32_OBJECT_CALLBACK;
 
-#ifndef __USE_W32API
-typedef struct
-{
-    PACCESS_TOKEN                   Token;
-    BOOLEAN                         CopyOnOpen;
-    BOOLEAN                         EffectiveOnly;
-    SECURITY_IMPERSONATION_LEVEL    ImpersonationLevel;
-} PS_IMPERSONATION_INFORMATION, *PPS_IMPERSONATION_INFORMATION;
-#endif
-
-#include <pshpack4.h>
-/*
- * NAME:           ETHREAD
- * DESCRIPTION:    Internal Executive Thread Structure.
- * PORTABILITY:    Architecture Independent.
- * KERNEL VERSION: 5.2
- * DOCUMENTATION:  http://reactos.com/wiki/index.php/ETHREAD
- */
-typedef struct _ETHREAD
-{
-    KTHREAD                        Tcb;                         /* 1C0 */
-    LARGE_INTEGER                  CreateTime;                  /* 1C0 */
-    LARGE_INTEGER                  ExitTime;                    /* 1C0 */
-    union {
-        LIST_ENTRY                 LpcReplyChain;               /* 1C0 */
-        LIST_ENTRY                 KeyedWaitChain;              /* 1C0 */
-    };
-    union {
-        NTSTATUS                   ExitStatus;                  /* 1C8 */
-        PVOID                      OfsChain;                    /* 1C8 */
-    };
-    LIST_ENTRY                     PostBlockList;               /* 1CC */
-    union {
-        struct _TERMINATION_PORT   *TerminationPort;            /* 1D4 */
-        struct _ETHREAD            *ReaperLink;                 /* 1D4 */
-        PVOID                      KeyedWaitValue;              /* 1D4 */
-    };
-    KSPIN_LOCK                     ActiveTimerListLock;         /* 1D8 */
-    LIST_ENTRY                     ActiveTimerListHead;         /* 1D8 */
-    CLIENT_ID                      Cid;                         /* 1E0 */
-    union {
-        KSEMAPHORE                 LpcReplySemaphore;           /* 1E4 */
-        KSEMAPHORE                 KeyedReplySemaphore;         /* 1E4 */
-    };
-    union {
-        PVOID                      LpcReplyMessage;             /* 200 */
-        PVOID                      LpcWaitingOnPort;            /* 200 */
-    };
-    PPS_IMPERSONATION_INFORMATION  ImpersonationInfo;           /* 204 */
-    LIST_ENTRY                     IrpList;                     /* 208 */
-    ULONG                          TopLevelIrp;                 /* 210 */
-    PDEVICE_OBJECT                 DeviceToVerify;              /* 214 */
-    struct _EPROCESS               *ThreadsProcess;             /* 218 */
-    PKSTART_ROUTINE                StartAddress;                /* 21C */
-    union {
-        PTHREAD_START_ROUTINE      Win32StartAddress;           /* 220 */
-        ULONG                      LpcReceivedMessageId;        /* 220 */
-    };
-    LIST_ENTRY                     ThreadListEntry;             /* 224 */
-    EX_RUNDOWN_REF                 RundownProtect;              /* 22C */
-    EX_PUSH_LOCK                   ThreadLock;                  /* 230 */
-    ULONG                          LpcReplyMessageId;           /* 234 */
-    ULONG                          ReadClusterSize;             /* 238 */
-    ACCESS_MASK                    GrantedAccess;               /* 23C */
-    union {
-        struct {
-           ULONG                   Terminated:1;
-           ULONG                   DeadThread:1;
-           ULONG                   HideFromDebugger:1;
-           ULONG                   ActiveImpersonationInfo:1;
-           ULONG                   SystemThread:1;
-           ULONG                   HardErrorsAreDisabled:1;
-           ULONG                   BreakOnTermination:1;
-           ULONG                   SkipCreationMsg:1;
-           ULONG                   SkipTerminationMsg:1;
-        };
-        ULONG                      CrossThreadFlags;            /* 240 */
-    };
-    union {
-        struct {
-           ULONG                   ActiveExWorker:1;
-           ULONG                   ExWorkerCanWaitUser:1;
-           ULONG                   MemoryMaker:1;
-           ULONG                   KeyedEventInUse:1;
-        };
-        ULONG                      SameThreadPassiveFlags;      /* 244 */
-    };
-    union {
-        struct {
-           ULONG                   LpcReceivedMsgIdValid:1;
-           ULONG                   LpcExitThreadCalled:1;
-           ULONG                   AddressSpaceOwner:1;
-           ULONG                   OwnsProcessWorkingSetExclusive:1;
-           ULONG                   OwnsProcessWorkingSetShared:1;
-           ULONG                   OwnsSystemWorkingSetExclusive:1;
-           ULONG                   OwnsSystemWorkingSetShared:1;
-           ULONG                   OwnsSessionWorkingSetExclusive:1;
-           ULONG                   OwnsSessionWorkingSetShared:1;
-           ULONG                   ApcNeeded:1;
-        };
-        ULONG                      SameThreadApcFlags;          /* 248 */
-    };
-    UCHAR                          ForwardClusterOnly;          /* 24C */
-    UCHAR                          DisablePageFaultClustering;  /* 24D */
-    UCHAR                          ActiveFaultCount;            /* 24E */
-} ETHREAD;
-
-#include <poppack.h>
-
-#ifndef __USE_W32API
-
-typedef struct _ETHREAD *PETHREAD;
-
-#endif /* __USE_W32API */
-
-#include <pshpack4.h>
-/*
- * NAME:           EPROCESS
- * DESCRIPTION:    Internal Executive Process Structure.
- * PORTABILITY:    Architecture Independent.
- * KERNEL VERSION: 5.2
- * DOCUMENTATION:  http://reactos.com/wiki/index.php/EPROCESS
- */
-typedef struct _EPROCESS
-{
-    KPROCESS              Pcb;                          /* 000 */
-    EX_PUSH_LOCK          ProcessLock;                  /* 078 */
-    LARGE_INTEGER         CreateTime;                   /* 080 */
-    LARGE_INTEGER         ExitTime;                     /* 088 */
-    EX_RUNDOWN_REF        RundownProtect;               /* 090 */
-    HANDLE                UniqueProcessId;              /* 094 */
-    LIST_ENTRY            ActiveProcessLinks;           /* 098 */
-    ULONG                 QuotaUsage[3];                /* 0A0 */
-    ULONG                 QuotaPeak[3];                 /* 0AC */
-    ULONG                 CommitCharge;                 /* 0B8 */
-    ULONG                 PeakVirtualSize;              /* 0BC */
-    ULONG                 VirtualSize;                  /* 0C0 */
-    LIST_ENTRY            SessionProcessLinks;          /* 0C4 */
-    PVOID                 DebugPort;                    /* 0CC */
-    PVOID                 ExceptionPort;                /* 0D0 */
-    PHANDLE_TABLE         ObjectTable;                  /* 0D4 */
-    EX_FAST_REF           Token;                        /* 0D8 */
-    ULONG                 WorkingSetPage;               /* 0DC */
-    KGUARDED_MUTEX        AddressCreationLock;          /* 0E0 */
-    KSPIN_LOCK            HyperSpaceLock;               /* 100 */
-    PETHREAD              ForkInProgress;               /* 104 */
-    ULONG                 HardwareTrigger;              /* 108 */
-    MM_AVL_TABLE          PhysicalVadroot;              /* 10C */
-    PVOID                 CloneRoot;                    /* 110 */
-    ULONG                 NumberOfPrivatePages;         /* 114 */
-    ULONG                 NumberOfLockedPages;          /* 118 */
-    PVOID                 *Win32Process;                /* 11C */
-    struct _EJOB          *Job;                         /* 120 */
-    PVOID                 SectionObject;                /* 124 */
-    PVOID                 SectionBaseAddress;           /* 128 */
-    PEPROCESS_QUOTA_BLOCK QuotaBlock;                   /* 12C */
-    PPAGEFAULT_HISTORY    WorkingSetWatch;              /* 130 */
-    PVOID                 Win32WindowStation;           /* 134 */
-    HANDLE                InheritedFromUniqueProcessId; /* 138 */
-    PVOID                 LdtInformation;               /* 13C */
-    PVOID                 VadFreeHint;                  /* 140 */
-    PVOID                 VdmObjects;                   /* 144 */
-    PVOID                 DeviceMap;                    /* 148 */
-    PVOID                 Spare0[3];                    /* 14C */
-    union {
-        HARDWARE_PTE_X86  PagedirectoryPte;             /* 158 */
-        ULONGLONG         Filler;                       /* 158 */
-    };
-    ULONG                 Session;                      /* 160 */
-    CHAR                  ImageFileName[16];            /* 164 */
-    LIST_ENTRY            JobLinks;                     /* 174 */
-    PVOID                 LockedPagesList;              /* 17C */
-    LIST_ENTRY            ThreadListHead;               /* 184 */
-    PVOID                 SecurityPort;                 /* 188 */
-    PVOID                 PaeTop;                       /* 18C */
-    ULONG                 ActiveThreds;                 /* 190 */
-    ACCESS_MASK           GrantedAccess;                /* 194 */
-    ULONG                 DefaultHardErrorProcessing;   /* 198 */
-    NTSTATUS              LastThreadExitStatus;         /* 19C */
-    struct _PEB*          Peb;                          /* 1A0 */
-    EX_FAST_REF           PrefetchTrace;                /* 1A4 */
-    LARGE_INTEGER         ReadOperationCount;           /* 1A8 */
-    LARGE_INTEGER         WriteOperationCount;          /* 1B0 */
-    LARGE_INTEGER         OtherOperationCount;          /* 1B8 */
-    LARGE_INTEGER         ReadTransferCount;            /* 1C0 */
-    LARGE_INTEGER         WriteTransferCount;           /* 1C8 */
-    LARGE_INTEGER         OtherTransferCount;           /* 1D0 */
-    ULONG                 CommitChargeLimit;            /* 1D8 */
-    ULONG                 CommitChargePeak;             /* 1DC */
-    PVOID                 AweInfo;                      /* 1E0 */
-    SE_AUDIT_PROCESS_CREATION_INFO SeAuditProcessCreationInfo; /* 1E4 */
-    MMSUPPORT             Vm;                           /* 1E8 */
-    LIST_ENTRY            MmProcessLinks;               /* 230 */
-    ULONG                 ModifiedPageCount;            /* 238 */
-    ULONG                 JobStatus;                    /* 23C */
-    union {
-        struct {
-            ULONG         CreateReported:1;
-            ULONG         NoDebugInherit:1;
-            ULONG         ProcessExiting:1;
-            ULONG         ProcessDelete:1;
-            ULONG         Wow64SplitPages:1;
-            ULONG         VmDeleted:1;
-            ULONG         OutswapEnabled:1;
-            ULONG         Outswapped:1;
-            ULONG         ForkFailed:1;
-            ULONG         Wow64VaSpace4Gb:1;
-            ULONG         AddressSpaceInitialized:2;
-            ULONG         SetTimerResolution:1;
-            ULONG         BreakOnTermination:1;
-            ULONG         SessionCreationUnderway:1;
-            ULONG         WriteWatch:1;
-            ULONG         ProcessInSession:1;
-            ULONG         OverrideAddressSpace:1;
-            ULONG         HasAddressSpace:1;
-            ULONG         LaunchPrefetched:1;
-            ULONG         InjectInpageErrors:1;
-            ULONG         VmTopDown:1;
-            ULONG         ImageNotifyDone:1;
-            ULONG         PdeUpdateNeeded:1;
-            ULONG         VdmAllowed:1;
-            ULONG         SmapAllowed:1;
-            ULONG         CreateFailed:1;
-            ULONG         DefaultIoPriority:3;
-            ULONG         Spare1:1;
-            ULONG         Spare2:1;
-        };
-        ULONG             Flags;                        /* 240 */
-    };
-
-    NTSTATUS              ExitStatus;                   /* 244 */
-    USHORT                NextPageColor;                /* 248 */
-    union {
-        struct {
-            UCHAR         SubSystemMinorVersion;        /* 24A */
-            UCHAR         SubSystemMajorVersion;        /* 24B */
-        };
-        USHORT            SubSystemVersion;             /* 24A */
-    };
-    UCHAR                 PriorityClass;                /* 24C */
-    MM_AVL_TABLE          VadRoot;                      /* 250 */
-    ULONG                 Cookie;                       /* 270 */
-
-/***************************************************************
- *                REACTOS SPECIFIC START
- ***************************************************************/
-    /* FIXME WILL BE DEPRECATED WITH PUSHLOCK SUPPORT IN 0.3.0 */
-    KEVENT                LockEvent;                    /* 274 */
-    ULONG                 LockCount;                    /* 284 */
-    struct _KTHREAD       *LockOwner;                   /* 288 */
-
-    /* FIXME MOVE TO AVL TREES                                 */
-    MADDRESS_SPACE        AddressSpace;                 /* 28C */
-} EPROCESS;
-#include <poppack.h>
-
 #define PROCESS_STATE_TERMINATED (1)
 #define PROCESS_STATE_ACTIVE     (2)
 
@@ -482,69 +193,6 @@ VOID
 STDCALL
 PspRunCreateProcessNotifyRoutines(PEPROCESS, BOOLEAN);
 
-#include <pshpack1.h>
-typedef struct _PS_JOB_TOKEN_FILTER
-{
-  UINT CapturedSidCount;
-  PSID_AND_ATTRIBUTES CapturedSids;
-  UINT CapturedSidsLength;
-  UINT CapturedGroupCount;
-  PSID_AND_ATTRIBUTES CapturedGroups;
-  UINT CapturedGroupsLength;
-  UINT CapturedPrivilegeCount;
-  PLUID_AND_ATTRIBUTES CapturedPrivileges;
-  UINT CapturedPrivilegesLength;
-} PS_JOB_TOKEN_FILTER, *PPS_JOB_TOKEN_FILTER;
-#include <poppack.h>
-
-#include <pshpack1.h>
-typedef struct _EJOB
-{
-  KEVENT Event;
-  LIST_ENTRY JobLinks;
-  LIST_ENTRY ProcessListHead;
-  ERESOURCE JobLock;
-  LARGE_INTEGER TotalUserTime;
-  LARGE_INTEGER TotalKernelTime;
-  LARGE_INTEGER ThisPeriodTotalUserTime;
-  LARGE_INTEGER ThisPeriodTotalKernelTime;
-  UINT TotalPageFaultCount;
-  UINT TotalProcesses;
-  UINT ActiveProcesses;
-  UINT TotalTerminatedProcesses;
-  LARGE_INTEGER PerProcessUserTimeLimit;
-  LARGE_INTEGER PerJobUserTimeLimit;
-  UINT LimitFlags;
-  UINT MinimumWorkingSetSize;
-  UINT MaximumWorkingSetSize;
-  UINT ActiveProcessLimit;
-  UINT Affinity;
-  BYTE PriorityClass;
-  UINT UIRestrictionsClass;
-  UINT SecurityLimitFlags;
-  PVOID Token;
-  PPS_JOB_TOKEN_FILTER Filter;
-  UINT EndOfJobTimeAction;
-  PVOID CompletionPort;
-  PVOID CompletionKey;
-  UINT SessionId;
-  UINT SchedulingClass;
-  ULONGLONG ReadOperationCount;
-  ULONGLONG WriteOperationCount;
-  ULONGLONG OtherOperationCount;
-  ULONGLONG ReadTransferCount;
-  ULONGLONG WriteTransferCount;
-  ULONGLONG OtherTransferCount;
-  IO_COUNTERS IoInfo;
-  UINT ProcessMemoryLimit;
-  UINT JobMemoryLimit;
-  UINT PeakProcessMemoryUsed;
-  UINT PeakJobMemoryUsed;
-  UINT CurrentJobMemoryUsed;
-  FAST_MUTEX MemoryLimitsLock;
-} EJOB, *PEJOB;
-#include <poppack.h>
-
 VOID INIT_FUNCTION PsInitJobManagment(VOID);
 
 /* CLIENT ID */
@@ -564,6 +212,4 @@ VOID PsUnlockProcess(PEPROCESS Process);
 #define MAX_PROCESS_NOTIFY_ROUTINE_COUNT    8
 #define MAX_LOAD_IMAGE_NOTIFY_ROUTINE_COUNT  8
 
-#endif /* ASSEMBLER */
-
 #endif /* __INCLUDE_INTERNAL_PS_H */
diff --git a/reactos/ntoskrnl/include/internal/safe.h b/reactos/ntoskrnl/include/internal/safe.h
deleted file mode 100644 (file)
index 692b428..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __NTOSKRNL_INCLUDE_INTERNAL_SAFE_H
-#define __NTOSKRNL_INCLUDE_INTERNAL_SAFE_H
-
-NTSTATUS MmSafeCopyFromUser(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
-NTSTATUS MmSafeCopyToUser(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
-
-NTSTATUS STDCALL
-MmCopyFromCaller(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
-NTSTATUS STDCALL
-MmCopyToCaller(PVOID Dest, const VOID *Src, ULONG NumberOfBytes);
-
-NTSTATUS
-RtlCaptureUnicodeString(OUT PUNICODE_STRING Dest,
-                       IN KPROCESSOR_MODE CurrentMode,
-                       IN POOL_TYPE PoolType,
-                       IN BOOLEAN CaptureIfKernel,
-                       IN PUNICODE_STRING UnsafeSrc);
-
-VOID
-RtlReleaseCapturedUnicodeString(IN PUNICODE_STRING CapturedString,
-                               IN KPROCESSOR_MODE CurrentMode,
-                               IN BOOLEAN CaptureIfKernel);
-
-#endif /* __NTOSKRNL_INCLUDE_INTERNAL_SAFE_Hb */
index 29f1a3e..99bfea3 100644 (file)
@@ -1,22 +1,3 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2002 ReactOS Team
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_SE_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_SE_H
 
index 2de8eb2..da74b6e 100644 (file)
@@ -1,11 +1,3 @@
-/*
- * NTOSKRNL Tag names.
- * License GPL
- *
- * FIXME: Replace with standard GPL Header.
- * FIXME: Add notes as needed
- */
-
 #ifndef _NTOSKRNL_TAG_H
 #define _NTOSKRNL_TAG_H
 
@@ -14,6 +6,9 @@
 #define TAG_BCB   TAG('B', 'C', 'B', ' ')
 #define TAG_IBCB  TAG('i', 'B', 'C', 'B')
 
+/* formely located in include/callback.h */
+#define CALLBACK_TAG        TAG('C','L','B','K')
+
 /* formerly located in ex/resource.c */
 #define TAG_OWNER_TABLE     TAG('R', 'O', 'W', 'N')
 #define TAG_EXCLUSIVE_LOCK  TAG('E', 'R', 'E', 'L')
@@ -39,6 +34,7 @@
 /* formerly located in io/fs.c */
 #define TAG_FILE_SYSTEM       TAG('F', 'S', 'Y', 'S')
 #define TAG_FS_CHANGE_NOTIFY  TAG('F', 'S', 'C', 'N')
+#define IFS_POOL_TAG          TAG('F', 'S', 'r', 't')
 
 /* formerly located in io/iocomp.c */
 #define IOC_TAG   TAG('I', 'O', 'C', 'T')
@@ -85,6 +81,7 @@
 
 /* formerly located in kdbg/kdb_symbols.c */
 #define TAG_KDBS TAG('K', 'D', 'B', 'S')
+#define TAG_KDBG TAG('K', 'D', 'B', 'G')
 
 /* formerly located in ldr/loader.c */
 #define TAG_DRIVER_MEM  TAG('D', 'R', 'V', 'M') /* drvm */
 #define TAG_SECTION_PAGE_TABLE   TAG('M', 'S', 'P', 'T')
 
 /* formerly located in ob/symlink.c */
+#define TAG_OBJECT_TYPE         TAG('O', 'b', 'j', 'T')
 #define TAG_SYMLINK_TTARGET     TAG('S', 'Y', 'T', 'T')
 #define TAG_SYMLINK_TARGET      TAG('S', 'Y', 'M', 'T')
 
 /* formerly located in se/sd.c */
 #define TAG_SD     TAG('S', 'e', 'S', 'd')
 
+/* LPC Tags */
+#define TAG_LPC_MESSAGE   TAG('L', 'p', 'c', 'M')
+#define TAG_LPC_ZONE      TAG('L', 'p', 'c', 'Z')
+
 #endif /* _NTOSKRNL_TAG_H */
diff --git a/reactos/ntoskrnl/include/internal/trap.h b/reactos/ntoskrnl/include/internal/trap.h
deleted file mode 100644 (file)
index 96a772e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/*
- * FILE:            ntoskrnl/include/internal/trap.h
- * PURPOSE:         Trap definitions
- * PROGRAMMER:      David Welch (welch@cwcom.net)
- * UPDATE HISTORY:
- *                  Created 10/12/00
- */
-
-#ifndef __NTOSKRNL_INCLUDE_INTERNAL_TRAP_H
-#define __NTOSKRNL_INCLUDE_INTERNAL_TRAP_H
-
-#define TF_SAVED_EXCEPTION_STACK (0x8C)
-#define TF_REGS                  (0x90)
-#define TF_ORIG_EBP              (0x94)
-
-#ifndef __ASM__
-
-typedef struct _KV86M_TRAP_FRAME
-{
-  KTRAP_FRAME Tf;
-
-  ULONG SavedExceptionStack;
-
-  /*
-   * These are put on the top of the stack by the routine that entered
-   * v86 mode so the exception handlers can find the control information
-   */
-  struct _KV86M_REGISTERS* regs;
-  ULONG orig_ebp;
-} KV86M_TRAP_FRAME, *PKV86M_TRAP_FRAME;
-
-ULONG
-KeV86Exception(ULONG ExceptionNr, PKTRAP_FRAME Tf, ULONG address);
-
-#endif /* not __ASM__ */
-
-#endif /* __NTOSKRNL_INCLUDE_INTERNAL_TRAP_H */
index e9e5acb..e8a7d58 100644 (file)
@@ -1,34 +1,15 @@
 /*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS Kernel
  * FILE:            ntoskrnl/include/internal/v86m.h
- * PURPOSE:         V86 mode support
- * PROGRAMMER:      David Welch (welch@cwcom.net)
- * UPDATE HISTORY:
- *                  Created 10/12/00
+ * PURPOSE:         V86 Headers
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
  */
 
+/* INCLUDES ******************************************************************/
 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_V86M_H
 #define __NTOSKRNL_INCLUDE_INTERNAL_V86M_H
 
-#ifndef __ASM__
-
 /* Emulate cli/sti instructions */
 #define KV86M_EMULATE_CLI_STI          (0x1)
 /* Allow the v86 mode code to access i/o ports */
 
 typedef struct _KV86M_REGISTERS
 {
-  /*
-   * General purpose registers
-   */
-
-  ULONG Ebp;
-  ULONG Edi;
-  ULONG Esi;
-  ULONG Edx;
-  ULONG Ecx;
-  ULONG Ebx;
-  ULONG Eax;
-  ULONG Ds;
-  ULONG Es;
-  ULONG Fs;
-  ULONG Gs;
+    /*
+     * General purpose registers
+     */
+    ULONG Ebp;
+    ULONG Edi;
+    ULONG Esi;
+    ULONG Edx;
+    ULONG Ecx;
+    ULONG Ebx;
+    ULONG Eax;
+    ULONG Ds;
+    ULONG Es;
+    ULONG Fs;
+    ULONG Gs;
 
-  /*
-   * Control registers
-   */
-  ULONG Eip;
-  ULONG Cs;
-  ULONG Eflags;
-  ULONG Esp;
-  ULONG Ss;
+    /*
+     * Control registers
+     */
+    ULONG Eip;
+    ULONG Cs;
+    ULONG Eflags;
+    ULONG Esp;
+    ULONG Ss;
 
-  /*
-   * Control structures
-   */
-  ULONG RecoveryAddress;
-  UCHAR RecoveryInstruction[4];
-  ULONG Vif;
-  ULONG Flags;
-  PNTSTATUS PStatus;
+    /*
+     * Control structures
+     */
+    ULONG RecoveryAddress;
+    UCHAR RecoveryInstruction[4];
+    ULONG Vif;
+    ULONG Flags;
+    PNTSTATUS PStatus;
 } KV86M_REGISTERS, *PKV86M_REGISTERS;
 
-NTSTATUS STDCALL
-Ke386CallBios(UCHAR Int, PKV86M_REGISTERS Regs);
+typedef struct _KV86M_TRAP_FRAME
+{
+    KTRAP_FRAME Tf;
 
-#else /* ASSEMBLER */
+    ULONG SavedExceptionStack;
 
-/*
- * Definitions for the offsets of members in the KV86M_REGISTERS
- */
-#define        KV86M_REGISTERS_EBP     (0x0)
-#define        KV86M_REGISTERS_EDI     (0x4)
-#define        KV86M_REGISTERS_ESI     (0x8)
-#define KV86M_REGISTERS_EDX    (0xC)
-#define        KV86M_REGISTERS_ECX     (0x10)
-#define KV86M_REGISTERS_EBX    (0x14)
-#define KV86M_REGISTERS_EAX    (0x18)
-#define        KV86M_REGISTERS_DS      (0x1C)
-#define KV86M_REGISTERS_ES     (0x20)
-#define KV86M_REGISTERS_FS     (0x24)
-#define KV86M_REGISTERS_GS     (0x28)
-#define KV86M_REGISTERS_EIP     (0x2C)
-#define KV86M_REGISTERS_CS      (0x30)
-#define KV86M_REGISTERS_EFLAGS  (0x34)
-#define        KV86M_REGISTERS_ESP     (0x38)
-#define KV86M_REGISTERS_SS     (0x3C)
+    /*
+     * These are put on the top of the stack by the routine that entered
+     * v86 mode so the exception handlers can find the control information
+     */
+    struct _KV86M_REGISTERS* regs;
+    ULONG orig_ebp;
+} KV86M_TRAP_FRAME, *PKV86M_TRAP_FRAME;
+
+NTSTATUS 
+STDCALL
+Ke386CallBios(
+    UCHAR Int, 
+    PKV86M_REGISTERS Regs
+);
 
-#endif /* ASSEMBLER */
+ULONG
+KeV86Exception(
+    ULONG ExceptionNr, 
+    PKTRAP_FRAME Tf, 
+    ULONG address
+);
 
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_V86M_H */
index 0d6c7bc..4d12f2b 100644 (file)
@@ -1,42 +1,69 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS Kernel
+ * FILE:            ntoskrnl/include/internal/xhal.h
+ * PURPOSE:         HAL Callbacks
+ * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
+ */
+
+/* INCLUDES ******************************************************************/
 #ifndef __INCLUDE_INTERNAL_XHAL_H
 #define __INCLUDE_INTERNAL_XHAL_H
 
 #include <ddk/ntdddisk.h>
 
 NTSTATUS
-xHalQueryDriveLayout(IN PUNICODE_STRING DeviceName,
-                    OUT PDRIVE_LAYOUT_INFORMATION *LayoutInfo);
+FASTCALL
+xHalQueryDriveLayout(
+    IN PUNICODE_STRING DeviceName,
+    OUT PDRIVE_LAYOUT_INFORMATION *LayoutInfo
+);
 
 #undef HalExamineMBR
-VOID FASTCALL
-HalExamineMBR(IN PDEVICE_OBJECT DeviceObject,
-             IN ULONG SectorSize,
-             IN ULONG MBRTypeIdentifier,
-             OUT PVOID *Buffer);
-
-VOID FASTCALL
-xHalIoAssignDriveLetters(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
-                        IN PSTRING NtDeviceName,
-                        OUT PUCHAR NtSystemPath,
-                        OUT PSTRING NtSystemPathString);
-
-NTSTATUS FASTCALL
-xHalIoReadPartitionTable(PDEVICE_OBJECT DeviceObject,
-                        ULONG SectorSize,
-                        BOOLEAN ReturnRecognizedPartitions,
-                        PDRIVE_LAYOUT_INFORMATION *PartitionBuffer);
-
-NTSTATUS FASTCALL
-xHalIoSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject,
-                             IN ULONG SectorSize,
-                             IN ULONG PartitionNumber,
-                             IN ULONG PartitionType);
-
-NTSTATUS FASTCALL
-xHalIoWritePartitionTable(IN PDEVICE_OBJECT DeviceObject,
-                         IN ULONG SectorSize,
-                         IN ULONG SectorsPerTrack,
-                         IN ULONG NumberOfHeads,
-                         IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer);
+VOID 
+FASTCALL
+HalExamineMBR(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN ULONG SectorSize,
+    IN ULONG MBRTypeIdentifier,
+    OUT PVOID *Buffer
+);
+
+VOID 
+FASTCALL
+xHalIoAssignDriveLetters(
+    IN PLOADER_PARAMETER_BLOCK LoaderBlock,
+    IN PSTRING NtDeviceName,
+    OUT PUCHAR NtSystemPath,
+    OUT PSTRING NtSystemPathString
+);
+
+NTSTATUS 
+FASTCALL
+xHalIoReadPartitionTable(
+    PDEVICE_OBJECT DeviceObject,
+    ULONG SectorSize,
+    BOOLEAN ReturnRecognizedPartitions,
+    PDRIVE_LAYOUT_INFORMATION *PartitionBuffer
+);
+
+NTSTATUS 
+FASTCALL
+xHalIoSetPartitionInformation(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN ULONG SectorSize,
+    IN ULONG PartitionNumber,
+    IN ULONG PartitionType
+);
+
+NTSTATUS 
+FASTCALL
+xHalIoWritePartitionTable(
+    IN PDEVICE_OBJECT DeviceObject,
+    IN ULONG SectorSize,
+    IN ULONG SectorsPerTrack,
+    IN ULONG NumberOfHeads,
+    IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer
+);
 
 #endif
index bad9aa6..2f5dd69 100644 (file)
@@ -92,6 +92,7 @@ HAL_PRIVATE_DISPATCH EXPORTED HalPrivateDispatchTable =
 /* FUNCTIONS *****************************************************************/
 
 NTSTATUS
+FASTCALL
 xHalQueryDriveLayout(IN PUNICODE_STRING DeviceName,
                     OUT PDRIVE_LAYOUT_INFORMATION *LayoutInfo)
 {
index 5849a1c..72a8fd5 100644 (file)
@@ -1,22 +1,12 @@
 #ifndef NTOSKRNL_KDB_H
 #define NTOSKRNL_KDB_H
 
-/* INCLUDES ******************************************************************/
-
-#define NTOS_MODE_KERNEL
-#include <ntos.h>
-
-#include <internal/ke.h>
-
 /* DEFINES *******************************************************************/
 
-#define TAG_KDBG        (('K' << 24) | ('D' << 16) | ('B' << 8) | 'G')
-
 #ifndef RTL_NUMBER_OF
 # define RTL_NUMBER_OF(x) (sizeof(x) / sizeof((x)[0]))
 #endif
 
-
 /* TYPES *********************************************************************/
 
 /* from kdb.c */
@@ -75,16 +65,12 @@ typedef enum _KDB_ENTER_CONDITION
    KdbEnterFromUmode
 } KDB_ENTER_CONDITION;
 
-
-/* from kdb_symbols.c */
-typedef struct _KDB_MODULE_INFO
+/* These values MUST be nonzero.  They're used as bit masks. */
+typedef enum _KDB_OUTPUT_SETTINGS
 {
-    WCHAR        Name[256];
-    ULONG_PTR    Base;
-    ULONG        Size;
-    PROSSYM_INFO RosSymInfo;
-} KDB_MODULE_INFO, *PKDB_MODULE_INFO;
-
+   KD_DEBUG_KDSERIAL = 1,
+   KD_DEBUG_KDNOECHO = 2
+} KDB_OUTPUT_SETTINGS;
 
 /* FUNCTIONS *****************************************************************/
 
@@ -167,16 +153,6 @@ BOOLEAN
 KdbpSymFindModuleByIndex(IN INT Index,
                          OUT PKDB_MODULE_INFO pInfo);
 
-BOOLEAN
-KdbSymPrintAddress(IN PVOID Address);
-
-NTSTATUS
-KdbSymGetAddressInformation(IN PROSSYM_INFO  RosSymInfo,
-                            IN ULONG_PTR  RelativeAddress,
-                            OUT PULONG LineNumber  OPTIONAL,
-                            OUT PCH FileName  OPTIONAL,
-                            OUT PCH FunctionName  OPTIONAL);
-
 /* from kdb.c */
 
 extern PEPROCESS KdbCurrentProcess;
@@ -185,13 +161,7 @@ extern LONG KdbLastBreakPointNr;
 extern ULONG KdbNumSingleSteps;
 extern BOOLEAN KdbSingleStepOver;
 extern PKDB_KTRAP_FRAME KdbCurrentTrapFrame;
-
-VOID
-KdbInit();
-
-VOID
-KdbModuleLoaded(
-   IN PUNICODE_STRING Name);
+extern ULONG KdbDebugState;
 
 LONG
 KdbpGetNextBreakPointNr(
@@ -255,6 +225,16 @@ BOOLEAN
 KdbpAttachToProcess(
    PVOID ProcessId);
 
+VOID
+STDCALL
+KdbpGetCommandLineSettings(PCHAR p1);
+
+KD_CONTINUE_TYPE
+KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
+                           KPROCESSOR_MODE PreviousMode,
+                           PCONTEXT Context,
+                           PKTRAP_FRAME TrapFrame,
+                           BOOLEAN FirstChance);
 /* other functions */
 
 #define KdbpSafeReadMemory(dst, src, size)   MmSafeCopyFromUser(dst, src, size)
@@ -278,7 +258,10 @@ VOID
 DbgEnableFile(PCH Filename);
 VOID
 DbgDisableFile(PCH Filename);
-
+VOID
+KbdDisableMouse();
+VOID
+KbdEnableMouse();
 
 #endif /* NTOSKRNL_KDB_H */
 
index b609956..06a7ac5 100644 (file)
 /* INCLUDES ******************************************************************/
 
 #include <roscfg.h>
-#include <internal/i386/segment.h>
 #include <internal/i386/ke.h>
-#include <internal/i386/fpu.h>
-#include <internal/ps.h>
-#include <ntos/tss.h>
-#include <internal/ntoskrnl.h>
+#include <internal/asm.h>
+#include <ndk/i386/segment.h>
 .intel_syntax noprefix
 
 #define Running 2 
index 12406ef..b5aa5b7 100644 (file)
@@ -1,5 +1,4 @@
-
-#include <internal/i386/segment.h>
+#include <ndk/i386/segment.h>
 #include <../hal/halx86/include/halirq.h>
 
 .global _irq_handler_0
index 121f504..d12a29e 100644 (file)
@@ -1,10 +1,6 @@
 #include <roscfg.h>
-#include <internal/ntoskrnl.h>
-#include <internal/i386/ke.h>
-#include <internal/i386/segment.h>
-#include <internal/ps.h>
-#include <internal/i386/mm.h>
-#include <internal/i386/fpu.h>
+#include <internal/asm.h>
+#include <ndk/i386/segment.h>
 
 #define AP_MAGIC (0x12481020)
 
index d37c46a..dec9cc0 100644 (file)
@@ -1,21 +1,3 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
 /*
  * FILE:            ntoskrnl/ke/i386/tskswitch.S
  * PURPOSE:         Microkernel thread support
@@ -25,11 +7,7 @@
  */
 
 /* INCLUDES ******************************************************************/
-
-#include <internal/i386/segment.h>
-#include <internal/ps.h>
-#include <ntos/tss.h>
-
+#include <internal/asm.h>
 /* FUNCTIONS ****************************************************************/
 
 /*
index 9df0c16..77caeb9 100644 (file)
  */
 
 #include <roscfg.h>
-#include <internal/i386/segment.h>
-#include <internal/ps.h>
 #include <internal/i386/ke.h>
-#include <ntos/tss.h>
+#include <internal/asm.h>
+#include <ndk/i386/segment.h>
 #include <napi/shared_data.h>
 
 #define UserMode  (1)
index 498e327..b311c68 100644 (file)
@@ -1,21 +1,3 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
 /* $Id$
  *
  * PROJECT:         ReactOS kernel
  */
 
 /* INCLUDES ******************************************************************/
-       
+
 #include <roscfg.h>
-#include <internal/i386/ke.h>
-#include <internal/i386/segment.h>
-#include <internal/ps.h>
+#include <internal/asm.h>
+#include <ndk/i386/segment.h>
 
 #define KernelMode 0
 #define UserMode 1
index ad5dd5f..f1d8910 100644 (file)
 /* INCLUDES ******************************************************************/
 
 #include <roscfg.h>
-#include <internal/i386/segment.h>
-#include <internal/i386/ke.h>
-#include <internal/i386/fpu.h>
-#include <internal/ps.h>
-#include <ntos/tss.h>
-#include <internal/ntoskrnl.h>
 .intel_syntax noprefix
 
 /* GLOBALS ****************************************************************/
index df0967b..94d0250 100644 (file)
@@ -1,21 +1,3 @@
-/*
- *  ReactOS kernel
- *  Copyright (C) 2000 David Welch <welch@cwcom.net>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
 /*
  * FILE:            ntoskrnl/ke/i386/vm86_sup.S
  * PURPOSE:         V86 mode support
@@ -24,11 +6,8 @@
  *                  Created 09/10/00
  */
 
-#include <internal/v86m.h>
-#include <ntos/tss.h>
-#include <internal/trap.h>
-#include <internal/ps.h>
-
+#include <internal/asm.h>
 .globl _Ki386RetToV86Mode
 .globl _KiV86Complete
 
index 8526fc5..ffd207a 100644 (file)
@@ -907,7 +907,7 @@ ObReferenceObjectByPointer(IN PVOID Object,
  * @implemented
  */
 NTSTATUS STDCALL
-ObOpenObjectByPointer(IN POBJECT Object,
+ObOpenObjectByPointer(IN PVOID Object,
                      IN ULONG HandleAttributes,
                      IN PACCESS_STATE PassedAccessState,
                      IN ACCESS_MASK DesiredAccess,