- Move non-DDK Ke* function prototypes from ROS DDK to NTOS headers. - Fix calling convention for KeI386* functions. Modified: trunk/reactos/include/ddk/kefuncs.h Modified: trunk/reactos/include/ddk/ketypes.h Modified: trunk/reactos/include/ntos/kefuncs.h Modified: trunk/reactos/ntoskrnl/ke/i386/gdt.c Modified: trunk/reactos/ntoskrnl/ke/i386/ldt.c Modified: trunk/reactos/ntoskrnl/ntoskrnl.def _____
Modified: trunk/reactos/include/ddk/kefuncs.h --- trunk/reactos/include/ddk/kefuncs.h 2005-06-18 14:37:43 UTC (rev 16042) +++ trunk/reactos/include/ddk/kefuncs.h 2005-06-18 15:15:25 UTC (rev 16043) @@ -22,16 +22,6 @@
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* STDCALL KeGetCurrentProcess(VOID);
/* @@ -99,8 +89,6 @@
VOID STDCALL KeClearEvent (PKEVENT Event);
-BOOLEAN STDCALL KeConnectInterrupt(PKINTERRUPT InterruptObject); - NTSTATUS STDCALL KeDelayExecutionThread (KPROCESSOR_MODE WaitMode, BOOLEAN Alertable, PLARGE_INTEGER Internal); @@ -110,17 +98,8 @@
VOID STDCALL KeDetachProcess (VOID);
-VOID STDCALL KeDisconnectInterrupt(PKINTERRUPT InterruptObject); - VOID STDCALL KeEnterCriticalRegion (VOID);
-/* - * FUNCTION: Enters the kernel debugger - * ARGUMENTS: - * None - */ -VOID STDCALL KeEnterKernelDebugger (VOID); - KIRQL STDCALL KeGetCurrentIrql (VOID);
#ifndef __USE_W32API @@ -131,16 +110,6 @@
struct _KTHREAD* STDCALL KeGetCurrentThread (VOID);
-VOID STDCALL KeInitializeApc (IN PKAPC Apc, - IN PKTHREAD Thread, - IN KAPC_ENVIRONMENT TargetEnvironment, - IN PKKERNEL_ROUTINE KernelRoutine, - IN PKRUNDOWN_ROUTINE RundownRoutine, - IN PKNORMAL_ROUTINE NormalRoutine, - IN KPROCESSOR_MODE Mode, - IN PVOID Context); - - /* * VOID * KeInitializeCallbackRecord ( @@ -162,18 +131,6 @@ EVENT_TYPE Type, BOOLEAN State);
-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,11 +175,6 @@ KeInsertQueue(IN PKQUEUE Queue, IN PLIST_ENTRY Entry);
-BOOLEAN STDCALL KeInsertQueueApc (PKAPC Apc, - PVOID SystemArgument1, - PVOID SystemArgument2, - KPRIORITY PriorityBoost); - BOOLEAN STDCALL KeInsertQueueDpc (PKDPC Dpc, PVOID SystemArgument1, PVOID SystemArgument2); @@ -377,16 +329,6 @@ LONG STDCALL KeResetEvent(IN PKEVENT Event);
-VOID STDCALL -KeRosDumpStackFrames ( PULONG Frame, ULONG FrameCount ); - -ULONG STDCALL -KeRosGetStackFrames ( PULONG Frames, ULONG FrameCount ); - -NTSTATUS STDCALL -KeSetAffinityThread(PKTHREAD Thread, - KAFFINITY Affinity); - LONG STDCALL KeSetBasePriorityThread(struct _KTHREAD* Thread, LONG Increment); @@ -447,92 +389,6 @@ );
- -/* io permission map has a 8k size - * Each bit in the IOPM corresponds to an io port byte address. The bitmap - * is initialized to allow IO at any port. [ all bits set ]. - */ -typedef struct _IOPM -{ - UCHAR Bitmap[8192]; -} IOPM, *PIOPM; - -/* - * FUNCTION: Provides the kernel with a new access map for a driver - * ARGUMENTS: - * NewMap: = If FALSE the kernel's map is set to all disabled. If TRUE - * the kernel disables access to a particular port. - * IoPortMap = Caller supplies storage for the io permission map. - * REMARKS - * Each bit in the IOPM corresponds to an io port byte address. The bitmap - * is initialized to allow IO at any port. [ all bits set ]. The IOPL determines - * the minium privilege level required to perform IO prior to checking the permission map. - */ -BOOL STDCALL -Ke386SetIoAccessMap(ULONG NewMap, PULONG IoPermissionMap); - -/* - * FUNCTION: Queries the io permission map. - * ARGUMENTS: - * NewMap: = If FALSE the kernel's map is set to all disabled. If TRUE - * the kernel disables access to a particular port. - * IoPortMap = Caller supplies storage for the io permission map. - * REMARKS - * Each bit in the IOPM corresponds to an io port byte address. The bitmap - * is initialized to allow IO at any port. [ all bits set ]. The IOPL determines - * the minium privilege level required to perform IO prior to checking the permission map. - */ -BOOL STDCALL -Ke386QueryIoAccessMap(ULONG NewMap, PULONG IoPermissionMap); - -/* - * FUNCTION: Set the process IOPL - * ARGUMENTS: - * Eprocess = Pointer to a executive process object - * EnableIo = Specify TRUE to enable IO and FALSE to disable - */ -BOOL STDCALL -Ke386IoSetAccessProcess(struct _EPROCESS* Eprocess, BOOL EnableIo); - -/* - * FUNCTION: Sets the contents of a gdt descriptor. - * ARGUMENTS: - * Entry = The selector to set. - * Value1 = The value of the low dword of the descriptor. - * Value2 = The value of the high dword of the descriptor. - */ -VOID -KeSetGdtSelector( - ULONG Entry, - ULONG Value1, - ULONG Value2 -); - -/* - * FUNCTION: Releases a set of Global Descriptor Table Selectors - * ARGUMENTS: - * SelArray = - * NumOfSelectors = - */ -NTSTATUS -KeI386ReleaseGdtSelectors( - OUT PULONG SelArray, - IN ULONG NumOfSelectors -); - -/* - * FUNCTION: Allocates a set of Global Descriptor Table Selectors - * ARGUMENTS: - * SelArray = - * NumOfSelectors = - */ -NTSTATUS -KeI386AllocateGdtSelectors( - OUT PULONG SelArray, - IN ULONG NumOfSelectors -); - - KIRQL FASTCALL KfAcquireSpinLock ( @@ -560,8 +416,6 @@ );
-VOID STDCALL KiDispatchInterrupt(VOID); - /* Stubs Start here */
VOID @@ -617,129 +471,13 @@ IN PUCHAR Component );
-VOID -STDCALL -KeTerminateThread( - IN KPRIORITY Increment -); - -BOOLEAN -STDCALL -KeIsExecutingDpc( - VOID -); - VOID STDCALL -KeSetEventBoostPriority( - IN PKEVENT Event, - IN PKTHREAD *Thread OPTIONAL -); - -PCONFIGURATION_COMPONENT_DATA -STDCALL -KeFindConfigurationNextEntry( - IN PCONFIGURATION_COMPONENT_DATA Child, - IN CONFIGURATION_CLASS Class, - IN CONFIGURATION_TYPE Type, - IN PULONG ComponentKey OPTIONAL, - IN PCONFIGURATION_COMPONENT_DATA *NextLink -); - -PCONFIGURATION_COMPONENT_DATA -STDCALL -KeFindConfigurationEntry( - IN PCONFIGURATION_COMPONENT_DATA Child, - IN CONFIGURATION_CLASS Class, - IN CONFIGURATION_TYPE Type, - IN PULONG ComponentKey OPTIONAL -); - -VOID -STDCALL -KeFlushEntireTb( - IN BOOLEAN Unknown, - IN BOOLEAN CurrentCpuOnly -); - -VOID -STDCALL -KeRevertToUserAffinityThread( - VOID -); - -VOID -STDCALL -KiCoprocessorError( - VOID -); - -VOID -STDCALL -KiUnexpectedInterrupt( - VOID -); - -VOID -STDCALL -KeSetDmaIoCoherency( - IN ULONG Coherency -); - -VOID -STDCALL -KeSetProfileIrql( - IN KIRQL ProfileIrql -); - -VOID -STDCALL -KeSetSystemAffinityThread( - IN KAFFINITY Affinity -); - -NTSTATUS -STDCALL -KeUserModeCallback( - IN ULONG FunctionID, - IN PVOID InputBuffer, - IN ULONG InputLength, - OUT PVOID *OutputBuffer, - OUT PULONG OutputLength -); - -VOID -STDCALL KeSetTimeIncrement( IN ULONG MaxIncrement, IN ULONG MinIncrement );
-VOID -STDCALL -KeCapturePersistentThreadState( - IN PVOID CurrentThread, - IN ULONG Setting1, - IN ULONG Setting2, - IN ULONG Setting3, - IN ULONG Setting4, - IN ULONG Setting5, - IN PVOID ThreadState -); - -BOOLEAN -STDCALL -KeRemoveSystemServiceTable( - IN ULONG TableIndex -); - -NTSTATUS -KeI386FlatToGdtSelector( - IN ULONG Base, - IN USHORT Length, - IN USHORT Selector -); - CCHAR STDCALL KeSetIdealProcessorThread ( @@ -804,12 +542,6 @@ IN PVOID State );
-NTSTATUS -STDCALL -KeRaiseUserException( - IN NTSTATUS ExceptionCode -); - VOID FASTCALL KeAcquireGuardedMutex( _____
Modified: trunk/reactos/include/ddk/ketypes.h --- trunk/reactos/include/ddk/ketypes.h 2005-06-18 14:37:43 UTC (rev 16042) +++ trunk/reactos/include/ddk/ketypes.h 2005-06-18 15:15:25 UTC (rev 16043) @@ -341,14 +341,6 @@
LONGLONG High; } M128, *PM128;
-typedef struct _CONFIGURATION_COMPONENT_DATA -{ - 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 struct _KEXCEPTION_FRAME { ULONG64 P1Home; ULONG64 P2Home; _____
Modified: trunk/reactos/include/ntos/kefuncs.h --- trunk/reactos/include/ntos/kefuncs.h 2005-06-18 14:37:43 UTC (rev 16042) +++ trunk/reactos/include/ntos/kefuncs.h 2005-06-18 15:15:25 UTC (rev 16043) @@ -9,6 +9,7 @@
#define KEBUGCHECK(a) DbgPrint("KeBugCheck (0x%X) at %s:%i\n", a, __FILE__,__LINE__), KeBugCheck(a) #define KEBUGCHECKEX(a,b,c,d,e) DbgPrint("KeBugCheckEx (0x%X, 0x%X, 0x%X, 0x%X, 0x%X) at %s:%i\n", a, b, c, d, e, __FILE__,__LINE__), KeBugCheckEx(a,b,c,d,e)
+#include <arc/arc.h>
#ifdef __NTOSKRNL__ extern CHAR EXPORTED KeNumberProcessors; @@ -30,7 +31,249 @@ extern ULONG IMPORTED KeMinimumIncrement; #endif
+/* io permission map has a 8k size + * Each bit in the IOPM corresponds to an io port byte address. The bitmap + * is initialized to allow IO at any port. [ all bits set ]. + */ +typedef struct _IOPM +{ + UCHAR Bitmap[8192]; +} IOPM, *PIOPM;
-VOID STDCALL KeFlushWriteBuffer (VOID); +typedef struct _CONFIGURATION_COMPONENT_DATA +{ + struct _CONFIGURATION_COMPONENT_DATA *Parent; + struct _CONFIGURATION_COMPONENT_DATA *Child; + struct _CONFIGURATION_COMPONENT_DATA *Sibling; + CONFIGURATION_COMPONENT Component; +} CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
+VOID STDCALL +KeCapturePersistentThreadState( + IN PVOID CurrentThread, + IN ULONG Setting1, + IN ULONG Setting2, + IN ULONG Setting3, + IN ULONG Setting4, + IN ULONG Setting5, + IN PVOID ThreadState); + +BOOLEAN STDCALL +KeConnectInterrupt( + PKINTERRUPT InterruptObject); + +VOID STDCALL +KeDisconnectInterrupt( + PKINTERRUPT InterruptObject); + +VOID STDCALL +KeDrainApcQueue( + VOID); + +VOID STDCALL +KeEnterKernelDebugger( + VOID); + +PCONFIGURATION_COMPONENT_DATA STDCALL +KeFindConfigurationNextEntry( + IN PCONFIGURATION_COMPONENT_DATA Child, + IN CONFIGURATION_CLASS Class, + IN CONFIGURATION_TYPE Type, + IN PULONG ComponentKey OPTIONAL, + IN PCONFIGURATION_COMPONENT_DATA *NextLink); + +PCONFIGURATION_COMPONENT_DATA STDCALL +KeFindConfigurationEntry( + IN PCONFIGURATION_COMPONENT_DATA Child, + IN CONFIGURATION_CLASS Class, + IN CONFIGURATION_TYPE Type, + IN PULONG ComponentKey OPTIONAL); + +VOID STDCALL +KeFlushEntireTb( + IN BOOLEAN Unknown, + IN BOOLEAN CurrentCpuOnly); + +VOID STDCALL +KeFlushWriteBuffer( + VOID); + +VOID STDCALL +KeInitializeApc( + IN PKAPC Apc, + IN PKTHREAD Thread, + IN KAPC_ENVIRONMENT TargetEnvironment, + IN PKKERNEL_ROUTINE KernelRoutine, + IN PKRUNDOWN_ROUTINE RundownRoutine, + IN PKNORMAL_ROUTINE NormalRoutine, + IN KPROCESSOR_MODE Mode, + IN PVOID Context); + +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); + +BOOLEAN STDCALL +KeInsertQueueApc( + PKAPC Apc, + PVOID SystemArgument1, + PVOID SystemArgument2, + KPRIORITY PriorityBoost); + +BOOLEAN STDCALL +KeIsAttachedProcess( + VOID); + +BOOLEAN STDCALL +KeIsExecutingDpc( + VOID); + +VOID STDCALL +KeRevertToUserAffinityThread( + VOID); + +BOOLEAN STDCALL +KeRemoveSystemServiceTable( + IN ULONG TableIndex); + +NTSTATUS STDCALL +KeSetAffinityThread( + PKTHREAD Thread, + KAFFINITY Affinity); + +VOID STDCALL +KeSetDmaIoCoherency( + IN ULONG Coherency); + +VOID STDCALL +KeSetEventBoostPriority( + IN PKEVENT Event, + IN PKTHREAD *Thread OPTIONAL); + +VOID STDCALL +KeSetProfileIrql( + IN KIRQL ProfileIrql); + +VOID STDCALL +KeSetSystemAffinityThread( + IN KAFFINITY Affinity); + +VOID STDCALL +KeTerminateThread( + IN KPRIORITY Increment); + +NTSTATUS STDCALL +KeUserModeCallback( + IN ULONG FunctionID, + IN PVOID InputBuffer, + IN ULONG InputLength, + OUT PVOID *OutputBuffer, + OUT PULONG OutputLength); + +NTSTATUS STDCALL +KeRaiseUserException( + IN NTSTATUS ExceptionCode); + +/* + * FUNCTION: Provides the kernel with a new access map for a driver + * ARGUMENTS: + * NewMap: = If FALSE the kernel's map is set to all disabled. If TRUE + * the kernel disables access to a particular port. + * IoPortMap = Caller supplies storage for the io permission map. + * REMARKS + * Each bit in the IOPM corresponds to an io port byte address. The bitmap + * is initialized to allow IO at any port. [ all bits set ]. The IOPL determines + * the minium privilege level required to perform IO prior to checking the permission map. + */ +BOOL STDCALL +Ke386SetIoAccessMap( + ULONG NewMap, + PULONG IoPermissionMap); + +/* + * FUNCTION: Queries the io permission map. + * ARGUMENTS: + * NewMap: = If FALSE the kernel's map is set to all disabled. If TRUE + * the kernel disables access to a particular port. + * IoPortMap = Caller supplies storage for the io permission map. + * REMARKS + * Each bit in the IOPM corresponds to an io port byte address. The bitmap + * is initialized to allow IO at any port. [ all bits set ]. The IOPL determines + * the minium privilege level required to perform IO prior to checking the permission map. + */ +BOOL STDCALL +Ke386QueryIoAccessMap( + ULONG NewMap, + PULONG IoPermissionMap); + +/* Set the process IOPL. */ +BOOL STDCALL +Ke386IoSetAccessProcess( + struct _EPROCESS *Process, + BOOL EnableIo); + +NTSTATUS STDCALL +KeI386FlatToGdtSelector( + IN ULONG Base, + IN USHORT Length, + IN USHORT Selector); + +/* Releases a set of Global Descriptor Table Selectors. */ +NTSTATUS STDCALL +KeI386ReleaseGdtSelectors( + OUT PULONG SelArray, + IN ULONG NumOfSelectors); + +/* Allocates a set of Global Descriptor Table Selectors. */ +NTSTATUS STDCALL +KeI386AllocateGdtSelectors( + OUT PULONG SelArray, + IN ULONG NumOfSelectors); + +VOID FASTCALL +KiAcquireSpinLock( + PKSPIN_LOCK SpinLock); + +VOID STDCALL +KiCoprocessorError( + VOID); + +VOID STDCALL +KiDispatchInterrupt( + VOID); + +NTSTATUS STDCALL +KeRaiseUserException( + IN NTSTATUS ExceptionCode); + +VOID FASTCALL +KiReleaseSpinLock( + PKSPIN_LOCK SpinLock); + +VOID STDCALL +KiUnexpectedInterrupt( + VOID); + +/* REACTOS SPECIFIC */ + +VOID STDCALL +KeRosDumpStackFrames( + PULONG Frame, + ULONG FrameCount); + +ULONG STDCALL +KeRosGetStackFrames( + PULONG Frames, + ULONG FrameCount); + #endif /* __INCLUDE_NTOS_KEFUNCS_H */ _____
Modified: trunk/reactos/ntoskrnl/ke/i386/gdt.c --- trunk/reactos/ntoskrnl/ke/i386/gdt.c 2005-06-18 14:37:43 UTC (rev 16042) +++ trunk/reactos/ntoskrnl/ke/i386/gdt.c 2005-06-18 15:15:25 UTC (rev 16043) @@ -148,7 +148,7 @@
/* * @unimplemented */ -NTSTATUS +NTSTATUS STDCALL KeI386FlatToGdtSelector( IN ULONG Base, IN USHORT Length, @@ -162,7 +162,7 @@ /* * @unimplemented */ -NTSTATUS +NTSTATUS STDCALL KeI386ReleaseGdtSelectors( OUT PULONG SelArray, IN ULONG NumOfSelectors @@ -175,10 +175,10 @@ /* * @unimplemented */ -NTSTATUS +NTSTATUS STDCALL KeI386AllocateGdtSelectors( OUT PULONG SelArray, - IN ULONG NumOfSelectors + IN ULONG NumOfSelectors ) { UNIMPLEMENTED; _____
Modified: trunk/reactos/ntoskrnl/ke/i386/ldt.c --- trunk/reactos/ntoskrnl/ke/i386/ldt.c 2005-06-18 14:37:43 UTC (rev 16042) +++ trunk/reactos/ntoskrnl/ke/i386/ldt.c 2005-06-18 15:15:25 UTC (rev 16043) @@ -20,6 +20,9 @@
/* FUNCTIONS *****************************************************************/
+/* gdt.c */ +extern VOID KeSetGdtSelector(ULONG Entry, ULONG Value1, ULONG Value2); + BOOL PspIsDescriptorValid(PLDT_ENTRY ldt_entry) { ULONG Base, SegLimit; _____
Modified: trunk/reactos/ntoskrnl/ntoskrnl.def --- trunk/reactos/ntoskrnl/ntoskrnl.def 2005-06-18 14:37:43 UTC (rev 16042) +++ trunk/reactos/ntoskrnl/ntoskrnl.def 2005-06-18 15:15:25 UTC (rev 16043) @@ -541,13 +541,13 @@
KeGetPreviousMode@0 KeGetRecommendedSharedDataAlignment@0 ;KeI386AbiosCall -KeI386AllocateGdtSelectors +KeI386AllocateGdtSelectors@8 ;KeI386Call16BitCStyleFunction ;KeI386Call16BitFunction -KeI386FlatToGdtSelector +KeI386FlatToGdtSelector@12 ;KeI386GetLid ;KeI386MachineType DATA -KeI386ReleaseGdtSelectors +KeI386ReleaseGdtSelectors@8 ;KeI386ReleaseLid ;KeI386SetGdtSelector KeIcacheFlushCount DATA