Move pushlock definition. It is gone from MS headers now.
[reactos.git] / reactos / include / ndk / extypes.h
index ff8a150..92203e9 100644 (file)
@@ -22,14 +22,15 @@ Author:
 //
 // Dependencies
 //
+#include <umtypes.h>
 #include <cfg.h>
 #if defined(_MSC_VER) && !defined(NTOS_MODE_USER)
 #include <ntimage.h>
 #endif
-#include "cmtypes.h"
-#include "ketypes.h"
-#include "pstypes.h"
-#include "potypes.h"
+#include <cmtypes.h>
+#include <ketypes.h>
+#include <potypes.h>
+#include <lpctypes.h>
 
 //
 // Atom and Language IDs
@@ -46,52 +47,75 @@ extern POBJECT_TYPE NTSYSAPI ExIoCompletionType;
 extern POBJECT_TYPE NTSYSAPI ExMutantObjectType;
 extern POBJECT_TYPE NTSYSAPI ExTimerType;
 
+//
+// Exported NT Build Number
+//
+extern ULONG NTSYSAPI NtBuildNumber;
+
 //
 // Invalid Handle Value Constant
 //
-#define INVALID_HANDLE_VALUE            (HANDLE)-1
+#define INVALID_HANDLE_VALUE                (HANDLE)-1
 
 #endif
 
 //
 // Increments
 //
-#define MUTANT_INCREMENT                1
+#define MUTANT_INCREMENT                    1
 
 //
 // Callback Object Access Mask
 //
-#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)
+#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)
 
 //
 // Event Object Access Masks
 //
 #ifdef NTOS_MODE_USER
-#define EVENT_QUERY_STATE               0x0001
+#define EVENT_QUERY_STATE                   0x0001
 
 //
 // Semaphore Object Acess Masks
 //
-#define SEMAPHORE_QUERY_STATE           0x0001
+#define SEMAPHORE_QUERY_STATE               0x0001
 #endif
 
 //
-// Port Object Access Masks (FIXME: lpctypes.h?)
+// Event Pair Access Masks
 //
-#define PORT_ALL_ACCESS                 0x1
+#define EVENT_PAIR_ALL_ACCESS               0x1F0000L
 
 //
-// Event Pair Access Masks
+// Profile Object Access Masks
 //
-#define EVENT_PAIR_ALL_ACCESS           0x1F0000L
+#define PROFILE_CONTROL                     0x0001
+#define PROFILE_ALL_ACCESS                  (STANDARD_RIGHTS_REQUIRED | PROFILE_CONTROL)
 
 //
 // Maximum Parameters for NtRaiseHardError
 //
-#define MAXIMUM_HARDERROR_PARAMETERS    4
+#define MAXIMUM_HARDERROR_PARAMETERS        4
+
+//
+// Pushlock bits
+//
+#define EX_PUSH_LOCK_LOCK_V                 ((ULONG_PTR)0x0)
+#define EX_PUSH_LOCK_LOCK                   ((ULONG_PTR)0x1)
+#define EX_PUSH_LOCK_WAITING                ((ULONG_PTR)0x2)
+#define EX_PUSH_LOCK_WAKING                 ((ULONG_PTR)0x4)
+#define EX_PUSH_LOCK_MULTIPLE_SHARED        ((ULONG_PTR)0x8)
+#define EX_PUSH_LOCK_SHARE_INC              ((ULONG_PTR)0x10)
+#define EX_PUSH_LOCK_PTR_BITS               ((ULONG_PTR)0xf)
+
+//
+// Pushlock Wait Block Flags
+//
+#define EX_PUSH_LOCK_FLAGS_EXCLUSIVE        1
+#define EX_PUSH_LOCK_FLAGS_WAIT             2
 
 //
 // Shutdown types for NtShutdownSystem
@@ -177,7 +201,7 @@ typedef enum _SYSTEM_INFORMATION_CLASS
     SystemPrioritySeperation,
     SystemPlugPlayBusInformation,
     SystemDockInformation,
-    _SystemPowerInformation, // FIXME 
+    SystemPowerInformationNative,
     SystemProcessorSpeedInformation,
     SystemCurrentTimeZoneInformation,
     SystemLookasideInformation,
@@ -270,13 +294,72 @@ typedef struct _EX_FAST_REF
 } EX_FAST_REF, *PEX_FAST_REF;
 
 //
-// FIXME
+// Executive Cache-Aware Rundown Reference Descriptor
 //
-typedef struct _RUNDOWN_DESCRIPTOR
+typedef struct _EX_RUNDOWN_REF_CACHE_AWARE
 {
-    ULONG_PTR References;
+    union
+    {
+        ULONG_PTR Count;
+        PVOID Ptr;
+    };
+    PVOID PoolToFree;
+} EX_RUNDOWN_REF_CACHE_AWARE, *PEX_RUNDOWN_REF_CACHE_AWARE;
+
+//
+// Executive Rundown Wait Block
+//
+typedef struct _EX_RUNDOWN_WAIT_BLOCK
+{
+    ULONG_PTR Count;
     KEVENT RundownEvent;
-} RUNDOWN_DESCRIPTOR, *PRUNDOWN_DESCRIPTOR;
+} EX_RUNDOWN_WAIT_BLOCK, *PEX_RUNDOWN_WAIT_BLOCK;
+
+//
+// Executive Pushlock
+//
+typedef struct _EX_PUSH_LOCK
+{
+    union
+    {
+        struct
+        {
+            ULONG_PTR Locked:1;
+            ULONG_PTR Waiting:1;
+            ULONG_PTR Waking:1;
+            ULONG_PTR MultipleShared:1;
+            ULONG_PTR Shared:sizeof (ULONG_PTR) * 8 - 4;
+        };
+        ULONG_PTR Value;
+        PVOID Ptr;
+    };
+} EX_PUSH_LOCK, *PEX_PUSH_LOCK;
+
+//
+// Executive Pushlock Wait Block
+//
+#ifndef __GNUC__ // WARNING! PUSHLOCKS WILL NOT WORK IN GCC FOR NOW!!!
+__declspec(align(16))
+#endif
+typedef struct _EX_PUSH_LOCK_WAIT_BLOCK
+{
+    union
+    {
+        KGATE WakeGate;
+        KEVENT WakeEvent;
+    };
+    struct _EX_PUSH_LOCK_WAIT_BLOCK *Next;
+    struct _EX_PUSH_LOCK_WAIT_BLOCK *Last;
+    struct _EX_PUSH_LOCK_WAIT_BLOCK *Previous;
+    LONG ShareCount;
+    LONG Flags;
+#if DBG
+    BOOL Signaled;
+    EX_PUSH_LOCK NewValue;
+    EX_PUSH_LOCK OldValue;
+    PEX_PUSH_LOCK PushLock;
+#endif
+} EX_PUSH_LOCK_WAIT_BLOCK, *PEX_PUSH_LOCK_WAIT_BLOCK;
 
 //
 // Callback Object
@@ -289,6 +372,25 @@ typedef struct _CALLBACK_OBJECT
     ULONG AllowMultipleCallbacks;
 } CALLBACK_OBJECT , *PCALLBACK_OBJECT;
 
+//
+// Profile OBject
+//
+typedef struct _EPROFILE
+{
+    PEPROCESS Process;
+    PVOID ImageBase;
+    SIZE_T ImageSize;
+    PVOID Buffer;
+    ULONG BufferSize;
+    ULONG BucketSize;
+    PKPROFILE KeProfile;
+    PVOID LockedBuffer;
+    PMDL Mdl;
+    ULONG Segment;
+    KPROFILE_SOURCE ProfileSource;
+    KAFFINITY Affinity;
+} EPROFILE, *PEPROFILE;
+
 //
 // Handle Table Structures
 //
@@ -330,6 +432,21 @@ typedef struct _HANDLE_TABLE
 
 #endif
 
+//
+// Hard Error LPC Message
+//
+typedef struct _HARDERROR_MSG
+{
+    PORT_MESSAGE h;
+    NTSTATUS Status;
+    LARGE_INTEGER ErrorTime;
+    ULONG ValidResponseOptions;
+    ULONG Response;
+    ULONG NumberOfParameters;
+    ULONG UnicodeStringParameterMask;
+    ULONG Parameters[MAXIMUM_HARDERROR_PARAMETERS];
+} HARDERROR_MSG, *PHARDERROR_MSG;
+
 //
 // Information Structures for NtQueryMutant
 //
@@ -972,8 +1089,7 @@ typedef struct _SYSTEM_DOCK_INFORMATION
 } SYSTEM_DOCK_INFORMATION, *PSYSTEM_DOCK_INFORMATION;
 
 // Class 42
-// FIXME: Conflict with WINNT.H 
-typedef struct __SYSTEM_POWER_INFORMATION
+typedef struct _SYSTEM_POWER_INFORMATION_NATIVE
 {
     BOOLEAN SystemSuspendSupported;
     BOOLEAN SystemHibernateSupported;
@@ -985,7 +1101,7 @@ typedef struct __SYSTEM_POWER_INFORMATION
     BOOLEAN SystemAcOrDc;
     BOOLEAN PowerDownDisabled;
     LARGE_INTEGER SpindownDrives;
-} _SYSTEM_POWER_INFORMATION, *P_SYSTEM_POWER_INFORMATION;
+} SYSTEM_POWER_INFORMATION_NATIVE, *PSYSTEM_POWER_INFORMATION_NATIVE;
 
 // Class 43
 typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION