Update some more kernel structures
authorAlex Ionescu <aionescu@gmail.com>
Fri, 6 May 2005 00:11:25 +0000 (00:11 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Fri, 6 May 2005 00:11:25 +0000 (00:11 +0000)
svn path=/trunk/; revision=15031

reactos/include/ddk/defines.h
reactos/include/ddk/iotypes.h
reactos/include/ddk/kedef.h
reactos/include/ddk/ketypes.h
reactos/ntoskrnl/include/internal/ke.h

index a01f628..4a7c0f1 100644 (file)
@@ -99,10 +99,12 @@ enum
 #define DESKTOP_SWITCHDESKTOP  (0x100L)
 #define DESKTOP_WRITEOBJECTS   (0x80L)
 
-#endif /* __ASM__ */
+#else
 
 /* Values returned by KeGetPreviousMode() */
 #define KernelMode (0)
 #define UserMode   (1)
 
+#endif /* __ASM__ */
+
 #endif /* ndef _DDK_DEFINES_H */
index 755c305..14b5436 100644 (file)
@@ -695,13 +695,6 @@ typedef VOID STDCALL_FUNC
                        IN BOOLEAN DriverActive);
 #endif // (_WIN32_WINNT >= 0x0400)
 
-typedef struct _KDEVICE_QUEUE_ENTRY
-{
-   LIST_ENTRY DeviceListEntry;
-   ULONG SortKey;
-   BOOLEAN Inserted;
-} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY;
-
 typedef struct _WAIT_CONTEXT_BLOCK
 {
   KDEVICE_QUEUE_ENTRY WaitQueueEntry;
index 36be542..b66fae5 100644 (file)
@@ -61,7 +61,14 @@ typedef enum _KWAIT_REASON
    Spare5,
    Spare6,
    WrKernel,
-   MaximumWaitReason,
+   WrResource,
+   WrPushLock,
+   WrMutex,
+   WrQuantumEnd,
+   WrDispatchInt,
+   WrPreempted,
+   WrYieldExecution,
+   MaximumWaitReason
 } KWAIT_REASON;
 
 #endif
index 1cf8ddd..efa3b73 100644 (file)
@@ -5,12 +5,15 @@
 
 /* include ntos/ketypes.h here? */
 
+# define RESTRICTED_POINTER __restrict
+
 struct _KMUTANT;
 
 typedef LONG KPRIORITY;
 
 typedef LONG FLONG;
 
+
 typedef VOID STDCALL_FUNC
 (*PKBUGCHECK_CALLBACK_ROUTINE)(PVOID Buffer, ULONG Length);
 
@@ -34,7 +37,12 @@ typedef VOID STDCALL_FUNC
 typedef VOID STDCALL_FUNC
 (*PKRUNDOWN_ROUTINE)(struct _KAPC* Apc);
 
-struct _DISPATCHER_HEADER;
+typedef enum _MODE 
+{
+    KernelMode,
+    UserMode,
+    MaximumMode
+} MODE;
 
 typedef enum _KOBJECTS {
    EventNotificationObject = 0,
@@ -67,53 +75,111 @@ typedef enum _KOBJECTS {
 
 #include <pshpack1.h>
 
-typedef struct _DISPATCHER_HEADER
+typedef struct _DISPATCHER_HEADER 
 {
-   UCHAR      Type;
-   UCHAR      Absolute;
-   UCHAR      Size;
-   UCHAR      Inserted;
-   LONG       SignalState;
-   LIST_ENTRY WaitListHead;
-} DISPATCHER_HEADER, *PDISPATCHER_HEADER;
+    union {
+        struct {
+            UCHAR Type;
+            UCHAR Absolute;
+            UCHAR Size;
+            union {
+                UCHAR Inserted;
+                BOOLEAN DebugActive;
+            };
+        };
+        volatile LONG Lock;
+    };
+    LONG SignalState;
+    LIST_ENTRY WaitListHead;
+} DISPATCHER_HEADER;
 
 #include <poppack.h>
 
-typedef struct _KQUEUE
+typedef struct _KQUEUE 
 {
-   DISPATCHER_HEADER Header;
-   LIST_ENTRY        EntryListHead;
-   ULONG             CurrentCount;
-   ULONG             MaximumCount;
-   LIST_ENTRY        ThreadListHead;
-} KQUEUE, *PKQUEUE;
+    DISPATCHER_HEADER Header;
+    LIST_ENTRY EntryListHead;
+    ULONG CurrentCount;
+    ULONG MaximumCount;
+    LIST_ENTRY ThreadListHead;
+} KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
 
 typedef struct _KGATE
 {
     DISPATCHER_HEADER Header;
-} KGATE, *PKGATE;
+} KGATE, *PKGATE, *RESTRICTED_POINTER PRKGATE;
 
 struct _KDPC;
 
-typedef struct _KTIMER
- {
+typedef struct _KTIMER 
+{
     DISPATCHER_HEADER Header;
     ULARGE_INTEGER DueTime;
     LIST_ENTRY TimerListEntry;
-    struct _KDPCDpc;
+    struct _KDPC *Dpc;
     LONG Period;
-} KTIMER, *PKTIMER;
+} KTIMER, *PKTIMER, *RESTRICTED_POINTER PRKTIMER;
+
+typedef struct _KMUTANT 
+{
+    DISPATCHER_HEADER Header;
+    LIST_ENTRY MutantListEntry;
+    struct _KTHREAD *RESTRICTED_POINTER OwnerThread;
+    BOOLEAN Abandoned;
+    UCHAR ApcDisable;
+} KMUTANT, *PKMUTANT, *RESTRICTED_POINTER PRKMUTANT, KMUTEX, *PKMUTEX, *RESTRICTED_POINTER PRKMUTEX;
+
+typedef struct _KGUARDED_MUTEX
+{
+    LONG Count;
+    struct _KTHREAD* Owner;
+    ULONG Contention;
+    KGATE Gate;
+    union {
+        struct {
+            SHORT KernelApcDisable;
+            SHORT SpecialApcDisable;
+        };
+        ULONG CombinedApcDisable;
+    };
+} KGUARDED_MUTEX, *PKGUARDED_MUTEX;
+
+typedef struct _KSEMAPHORE
+{
+    DISPATCHER_HEADER Header;
+    LONG Limit;
+} KSEMAPHORE, *PKSEMAPHORE, *RESTRICTED_POINTER PRKSEMAPHORE;
+
+typedef struct _KEVENT
+{
+    DISPATCHER_HEADER Header;
+} KEVENT, *PKEVENT, *RESTRICTED_POINTER PRKEVENT;
+
+typedef struct _KEVENT_PAIR
+{
+   CSHORT Type;
+   CSHORT Size;
+   KEVENT LowEvent;
+   KEVENT HighEvent;
+} KEVENT_PAIR, *PKEVENT_PAIR;
 
 typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;
 
-typedef struct _KDEVICE_QUEUE
+typedef struct _KDEVICE_QUEUE 
+{
+    CSHORT Type;
+    CSHORT Size;
+    LIST_ENTRY DeviceListHead;
+    KSPIN_LOCK Lock;
+    BOOLEAN Busy;
+} KDEVICE_QUEUE, *PKDEVICE_QUEUE, *RESTRICTED_POINTER PRKDEVICE_QUEUE;
+
+typedef struct _KDEVICE_QUEUE_ENTRY 
 {
-  CSHORT Type;
-  CSHORT Size;
-  LIST_ENTRY DeviceListHead;
-  KSPIN_LOCK Lock;
-  BOOLEAN Busy;
-} KDEVICE_QUEUE, *PKDEVICE_QUEUE;
+    LIST_ENTRY DeviceListEntry;
+    ULONG SortKey;
+    BOOLEAN Inserted;
+} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY, *RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY;
 
 /*
  * Size of the profile hash table.
@@ -138,25 +204,19 @@ typedef struct _KAPC
    CCHAR ApcStateIndex;
    KPROCESSOR_MODE ApcMode;
    BOOLEAN Inserted;
-} KAPC, *PKAPC;
-
+} KAPC, *PKAPC, *RESTRICTED_POINTER PRKAPC;
 #include <poppack.h>
 
 #ifndef __USE_W32API
 
-#include <pshpack1.h>
-
-typedef struct _KAPC_STATE
+typedef struct _KAPC_STATE 
 {
-   LIST_ENTRY ApcListHead[2];
-   struct _KPROCESS* Process;
-   UCHAR KernelApcInProgress;
-   UCHAR KernelApcPending;
-   UCHAR UserApcPending;
-   UCHAR Reserved;
-} KAPC_STATE, *PKAPC_STATE, *__restrict PRKAPC_STATE;
-
-#include <poppack.h>
+    LIST_ENTRY ApcListHead[MaximumMode];
+    struct _KPROCESS *Process;
+    BOOLEAN KernelApcInProgress;
+    BOOLEAN KernelApcPending;
+    BOOLEAN UserApcPending;
+} KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;
 
 #endif /* __USE_W32API */
 
@@ -171,54 +231,6 @@ typedef struct _KBUGCHECK_CALLBACK_RECORD
    UCHAR State;
 } KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
 
-typedef struct _KMUTEX
-{
-   DISPATCHER_HEADER Header;
-   LIST_ENTRY MutantListEntry;
-   struct _KTHREAD* OwnerThread;
-   BOOLEAN Abandoned;
-   UCHAR ApcDisable;
-} KMUTEX, *PKMUTEX, KMUTANT, *PKMUTANT;
-
-typedef struct _KGUARDED_MUTEX
-{
-    LONG Count;
-    struct _KTHREAD* Owner;
-    ULONG Contention;
-    KGATE Gate;
-    union {
-        struct {
-            SHORT KernelApcDisable;
-            SHORT SpecialApcDisable;
-        };
-        ULONG CombinedApcDisable;
-    };
-} KGUARDED_MUTEX, *PKGUARDED_MUTEX;
-
-#include <pshpack1.h>
-
-typedef struct _KSEMAPHORE
-{
-   DISPATCHER_HEADER Header;
-   LONG Limit;
-} KSEMAPHORE, *PKSEMAPHORE;
-
-#include <poppack.h>
-
-typedef struct _KEVENT
-{
-   DISPATCHER_HEADER Header;
-} KEVENT, *PKEVENT;
-
-typedef struct _KEVENT_PAIR
-{
-   CSHORT Type;
-   CSHORT Size;
-   KEVENT LowEvent;
-   KEVENT HighEvent;
-} KEVENT_PAIR, *PKEVENT_PAIR;
-
-
 struct _KDPC;
 
 typedef struct _KSPIN_LOCK_QUEUE {
@@ -231,18 +243,15 @@ typedef struct _KLOCK_QUEUE_HANDLE {
     KIRQL OldIrql;
 } KLOCK_QUEUE_HANDLE, *PKLOCK_QUEUE_HANDLE;
 
-typedef struct _KWAIT_BLOCK
-/*
- * PURPOSE: Object describing the wait a thread is currently performing
- */
+typedef struct _KWAIT_BLOCK 
 {
-   LIST_ENTRY WaitListEntry;
-   struct _KTHREAD* Thread;
-   struct _DISPATCHER_HEADER *Object;
-   struct _KWAIT_BLOCK* NextWaitBlock;
-   USHORT WaitKey;
-   USHORT WaitType;
-} KWAIT_BLOCK, *PKWAIT_BLOCK;
+    LIST_ENTRY WaitListEntry;
+    struct _KTHREAD *RESTRICTED_POINTER Thread;
+    PVOID Object;
+    struct _KWAIT_BLOCK *RESTRICTED_POINTER NextWaitBlock;
+    USHORT WaitKey;
+    USHORT WaitType;
+} KWAIT_BLOCK, *PKWAIT_BLOCK, *RESTRICTED_POINTER PRKWAIT_BLOCK;
 
 /*
  * PURPOSE: Defines a delayed procedure call routine
@@ -258,26 +267,24 @@ typedef VOID STDCALL_FUNC
                      PVOID SystemArgument1,
                      PVOID SystemArgument2);
 
+#define DPC_NORMAL 0
+#define DPC_THREADED 1
 /*
  * PURPOSE: Defines a delayed procedure call object
  */
-#include <pshpack1.h>
-
 typedef struct _KDPC
 {
-   SHORT Type;
-   UCHAR Number;
-   UCHAR Importance;
-   LIST_ENTRY DpcListEntry;
-   PKDEFERRED_ROUTINE DeferredRoutine;
-   PVOID DeferredContext;
-   PVOID SystemArgument1;
-   PVOID SystemArgument2;
-   PVOID DpcData;
+    CSHORT Type;
+    UCHAR Number;
+    UCHAR Importance;
+    LIST_ENTRY DpcListEntry;
+    PKDEFERRED_ROUTINE DeferredRoutine;
+    PVOID DeferredContext;
+    PVOID SystemArgument1;
+    PVOID SystemArgument2;
+    PVOID DpcData;
 } KDPC, *PKDPC;
 
-#include <poppack.h>
-
 typedef struct _KDPC_DATA {
   LIST_ENTRY  DpcListHead;
   ULONG  DpcLock;
index b8659aa..0e6d899 100644 (file)
@@ -39,6 +39,8 @@ typedef struct _KPROCESS *PKPROCESS;
 
 #endif /* __USE_W32API */
 
+typedef struct _DISPATCHER_HEADER *PDISPATCHER_HEADER;
+
 typedef struct _HARDWARE_PTE_X86 {
     ULONG Valid             : 1;
     ULONG Write             : 1;