Add an ARC Header for future purposes (PPC, ARM, etc, ARCLoader) and implement KeFind...
[reactos.git] / reactos / include / ddk / kefuncs.h
index 08f63e6..1ba1f8e 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef __INCLUDE_DDK_KEFUNCS_H
 #define __INCLUDE_DDK_KEFUNCS_H
 
-#define KEBUGCHECK(a) DbgPrint("KeBugCheck at %s:%i\n",__FILE__,__LINE__), KeBugCheck(a)
+#define KEBUGCHECK(a) DbgPrint("KeBugCheck (0x%X) at %s:%i\n", a, __FILE__,__LINE__), KeBugCheck(a)
 
 /* KERNEL FUNCTIONS ********************************************************/
 
@@ -22,13 +22,17 @@ KeSaveFloatingPointState(
 
 VOID STDCALL KeAttachProcess(struct _KPROCESS *Process);
 
+BOOLEAN
+STDCALL
+KeIsAttachedProcess(VOID);
+
 VOID FASTCALL KiAcquireSpinLock(PKSPIN_LOCK SpinLock);
 
 VOID FASTCALL KiReleaseSpinLock(PKSPIN_LOCK SpinLock);
 
 VOID KeDrainApcQueue(VOID);
 
-struct _KPROCESS* KeGetCurrentProcess(VOID);
+struct _KPROCESS* STDCALL KeGetCurrentProcess(VOID);
 
 /*
  * FUNCTION: Acquires a spinlock so the caller can synchronize access to 
@@ -42,6 +46,15 @@ VOID STDCALL KeAcquireSpinLock (PKSPIN_LOCK  SpinLock,
 
 #ifndef __USE_W32API
 
+static __inline
+VOID
+KeMemoryBarrier(
+  VOID)
+{
+  volatile LONG Barrier;
+  __asm__ __volatile__ ("xchg %%eax, %0" : : "m" (Barrier) : "%eax");
+}
+
 VOID STDCALL KeAcquireSpinLockAtDpcLevel (IN PKSPIN_LOCK       SpinLock);
 
 #define KefAcquireSpinLockAtDpcLevel KeAcquireSpinLockAtDpcLevel
@@ -111,9 +124,9 @@ VOID STDCALL KeEnterKernelDebugger (VOID);
 KIRQL STDCALL KeGetCurrentIrql (VOID);
 
 #ifndef __USE_W32API
-#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->ProcessorNumber)
+#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->Number)
 ULONG KeGetDcacheFillSize(VOID);
-ULONG STDCALL KeGetPreviousMode (VOID);
+KPROCESSOR_MODE STDCALL KeGetPreviousMode (VOID);
 #endif
 
 struct _KTHREAD* STDCALL KeGetCurrentThread (VOID);
@@ -149,17 +162,17 @@ VOID STDCALL KeInitializeEvent (PKEVENT           Event,
                                EVENT_TYPE      Type,
                                BOOLEAN         State);
 
-NTSTATUS STDCALL KeInitializeInterrupt(PKINTERRUPT InterruptObject,
-                                      PKSERVICE_ROUTINE ServiceRoutine,
-                                      PVOID ServiceContext,
-                                      PKSPIN_LOCK SpinLock,
-                                      ULONG Vector,
-                                      KIRQL Irql,
-                                      KIRQL SynchronizeIrql,
-                                      KINTERRUPT_MODE InterruptMode,
-                                      BOOLEAN ShareVector,
-                                      KAFFINITY ProcessorEnableMask,
-                                      BOOLEAN FloatingSave);
+VOID STDCALL KeInitializeInterrupt(PKINTERRUPT InterruptObject,
+                                  PKSERVICE_ROUTINE ServiceRoutine,
+                                  PVOID ServiceContext,
+                                  PKSPIN_LOCK SpinLock,
+                                  ULONG Vector,
+                                  KIRQL Irql,
+                                  KIRQL SynchronizeIrql,
+                                  KINTERRUPT_MODE InterruptMode,
+                                  BOOLEAN ShareVector,
+                                  CHAR ProcessorNumber,
+                                  BOOLEAN FloatingSave);
 
 VOID STDCALL KeInitializeMutant(IN PKMUTANT Mutant,
                                IN BOOLEAN InitialOwner);
@@ -218,9 +231,9 @@ VOID STDCALL KeLeaveCriticalRegion (VOID);
 
 VOID STDCALL KeLowerIrql (KIRQL        NewIrql);
 
-NTSTATUS STDCALL KePulseEvent (PKEVENT         Event,
-                              KPRIORITY        Increment,
-                              BOOLEAN          Wait);
+LONG STDCALL KePulseEvent (PKEVENT             Event,
+                          KPRIORITY    Increment,
+                          BOOLEAN              Wait);
 
 LARGE_INTEGER
 STDCALL
@@ -246,6 +259,12 @@ KeQueryTimeIncrement (
        VOID
        );
 
+ULONGLONG 
+STDCALL
+KeQueryInterruptTime(
+    VOID
+    );
+            
 VOID
 STDCALL
 KeRaiseIrql (
@@ -361,8 +380,12 @@ KeResetEvent(IN PKEVENT Event);
 VOID STDCALL
 KeRosDumpStackFrames ( PULONG Frame, ULONG FrameCount );
 
-BOOLEAN STDCALL
-KeRosPrintAddress(PVOID address);
+ULONG STDCALL
+KeRosGetStackFrames ( PULONG Frames, ULONG FrameCount );
+
+NTSTATUS STDCALL
+KeSetAffinityThread(PKTHREAD   Thread,
+                   KAFFINITY   Affinity);
 
 LONG STDCALL
 KeSetBasePriorityThread(struct _KTHREAD* Thread,
@@ -613,25 +636,25 @@ KeSetEventBoostPriority(
        IN PKTHREAD *Thread OPTIONAL
 );
 
-PVOID
+PCONFIGURATION_COMPONENT_DATA
 STDCALL
-KeFindConfigurationEntry(
-    IN PVOID Unknown,
-    IN ULONG Class,
+KeFindConfigurationNextEntry(
+    IN PCONFIGURATION_COMPONENT_DATA Child,
+    IN CONFIGURATION_CLASS Class,
     IN CONFIGURATION_TYPE Type,
-    IN PULONG RegKey
+    IN PULONG ComponentKey OPTIONAL,
+    IN PCONFIGURATION_COMPONENT_DATA *NextLink
 );
-
-PVOID
+                             
+PCONFIGURATION_COMPONENT_DATA
 STDCALL
-KeFindConfigurationNextEntry(
-    IN PVOID Unknown,
-    IN ULONG Class,
+KeFindConfigurationEntry(
+    IN PCONFIGURATION_COMPONENT_DATA Child,
+    IN CONFIGURATION_CLASS Class,
     IN CONFIGURATION_TYPE Type,
-    IN PULONG RegKey,
-    IN PVOID *NextLink
+    IN PULONG ComponentKey OPTIONAL
 );
-
+                         
 VOID
 STDCALL
 KeFlushEntireTb(
@@ -707,7 +730,7 @@ KeCapturePersistentThreadState(
 BOOLEAN
 STDCALL
 KeRemoveSystemServiceTable(
-    IN PUCHAR Number
+    IN ULONG TableIndex
 );
 
 NTSTATUS
@@ -787,4 +810,48 @@ KeRaiseUserException(
        IN NTSTATUS     ExceptionCode
 );
 
+VOID 
+FASTCALL
+KeAcquireGuardedMutex(
+    PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID
+FASTCALL
+KeAcquireGuardedMutexUnsafe(
+    PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID 
+STDCALL
+KeEnterGuardedRegion(VOID);
+
+VOID
+STDCALL
+KeLeaveGuardedRegion(VOID);
+
+VOID 
+FASTCALL
+KeInitializeGuardedMutex(
+    PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID 
+FASTCALL
+KeReleaseGuardedMutexUnsafe(
+    PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID 
+FASTCALL
+KeReleaseGuardedMutex(
+    PKGUARDED_MUTEX GuardedMutex
+);
+
+BOOL 
+FASTCALL
+KeTryToAcquireGuardedMutex(
+    PKGUARDED_MUTEX GuardedMutex
+);
+
 #endif /* __INCLUDE_DDK_KEFUNCS_H */