mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 18:01:07 +00:00
Fixed STDCALL issues in Ke functions
Renamed KiTimerInterrupt() to KeUpdateSystemTime() Added KeNumberProcessors variable svn path=/trunk/; revision=1175
This commit is contained in:
parent
077ac93718
commit
64c33bb910
|
@ -1,23 +1,15 @@
|
|||
#ifndef __INCLUDE_DDK_KEFUNCS_H
|
||||
#define __INCLUDE_DDK_KEFUNCS_H
|
||||
|
||||
|
||||
/* KERNEL FUNCTIONS ********************************************************/
|
||||
|
||||
VOID KeInitializeApc(PKAPC Apc,
|
||||
PKTHREAD Thread,
|
||||
UCHAR StateIndex,
|
||||
PKKERNEL_ROUTINE KernelRoutine,
|
||||
PKRUNDOWN_ROUTINE RundownRoutine,
|
||||
PKNORMAL_ROUTINE NormalRoutine,
|
||||
UCHAR Mode,
|
||||
PVOID Context);
|
||||
VOID
|
||||
STDCALL
|
||||
KeAttachProcess (
|
||||
struct _EPROCESS* Process
|
||||
);
|
||||
|
||||
VOID KeInsertQueueApc(PKAPC Apc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2,
|
||||
UCHAR Mode);
|
||||
VOID KeAttachProcess(struct _EPROCESS* Process);
|
||||
VOID KeDetachProcess(VOID);
|
||||
VOID KeDrainApcQueue(VOID);
|
||||
PKPROCESS KeGetCurrentProcess(VOID);
|
||||
|
||||
|
@ -28,127 +20,31 @@ PKPROCESS KeGetCurrentProcess(VOID);
|
|||
* SpinLock = Initialized spinlock
|
||||
* OldIrql (OUT) = Set the previous irql on return
|
||||
*/
|
||||
VOID KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql);
|
||||
|
||||
VOID KeAcquireSpinLockAtDpcLevel(PKSPIN_LOCK SpinLock);
|
||||
BOOLEAN KeCancelTimer(PKTIMER Timer);
|
||||
VOID KeClearEvent(PKEVENT Event);
|
||||
NTSTATUS STDCALL KeDelayExecutionThread (KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Internal);
|
||||
BOOLEAN KeDeregisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD
|
||||
CallbackRecord);
|
||||
VOID KeEnterCriticalRegion(VOID);
|
||||
VOID KeFlushIoBuffers(PMDL Mdl, BOOLEAN ReadOperation, BOOLEAN DmaOperation);
|
||||
KIRQL
|
||||
STDCALL
|
||||
KeGetCurrentIrql (
|
||||
VOID
|
||||
);
|
||||
ULONG KeGetCurrentProcessorNumber(VOID);
|
||||
ULONG KeGetDcacheFillSize(VOID);
|
||||
PKTHREAD KeGetCurrentThread(VOID);
|
||||
ULONG KeGetPreviousMode(VOID);
|
||||
VOID KeInitializeCallbackRecord(PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
|
||||
VOID KeInitializeDeviceQueue(PKDEVICE_QUEUE DeviceQueue);
|
||||
VOID KeInitializeDpc(PKDPC Dpc, PKDEFERRED_ROUTINE DeferredRoutine,
|
||||
PVOID DeferredContext);
|
||||
VOID KeInitializeEvent(PKEVENT Event, EVENT_TYPE Type, BOOLEAN State);
|
||||
VOID KeInitializeMutex(PKMUTEX Mutex, ULONG Level);
|
||||
VOID KeInitializeSemaphore(PKSEMAPHORE Semaphore, LONG Count, LONG Limit);
|
||||
VOID KeInitializeTimer(PKTIMER Timer);
|
||||
VOID KeInitializeTimerEx(PKTIMER Timer, TIMER_TYPE Type);
|
||||
BOOLEAN KeInsertByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
|
||||
ULONG SortKey);
|
||||
BOOLEAN KeInsertDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
|
||||
BOOLEAN KeInsertQueueDpc(PKDPC Dpc, PVOID SystemArgument1,
|
||||
PVOID SystemArgument2);
|
||||
VOID KeLeaveCriticalRegion(VOID);
|
||||
VOID
|
||||
STDCALL
|
||||
KeLowerIrql (
|
||||
KIRQL NewIrql
|
||||
KeAcquireSpinLock (
|
||||
PKSPIN_LOCK SpinLock,
|
||||
PKIRQL OldIrql
|
||||
);
|
||||
LARGE_INTEGER KeQueryPerformanceCounter(PLARGE_INTEGER PerformanceFrequency);
|
||||
VOID KeQuerySystemTime(PLARGE_INTEGER CurrentTime);
|
||||
VOID KeQueryTickCount(PLARGE_INTEGER TickCount);
|
||||
ULONG KeQueryTimeIncrement(VOID);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeRaiseIrql (
|
||||
KIRQL NewIrql,
|
||||
PKIRQL OldIrql
|
||||
KeAcquireSpinLockAtDpcLevel (
|
||||
PKSPIN_LOCK SpinLock
|
||||
);
|
||||
LONG KeReadStateEvent(PKEVENT Event);
|
||||
LONG KeReadStateMutex(PKMUTEX Mutex);
|
||||
LONG KeReadStateSemaphore(PKSEMAPHORE Semaphore);
|
||||
BOOLEAN KeReadStateTimer(PKTIMER Timer);
|
||||
BOOLEAN KeRegisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
|
||||
PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
|
||||
PVOID Buffer,
|
||||
ULONG Length,
|
||||
PUCHAR Component);
|
||||
LONG KeReleaseMutex(PKMUTEX Mutex, BOOLEAN Wait);
|
||||
LONG KeReleaseSemaphore(PKSEMAPHORE Semaphore, KPRIORITY Increment,
|
||||
LONG Adjustment, BOOLEAN Wait);
|
||||
VOID KeReleaseSpinLock(PKSPIN_LOCK Spinlock, KIRQL NewIrql);
|
||||
VOID KeReleaseSpinLockFromDpcLevel(PKSPIN_LOCK Spinlock);
|
||||
PKDEVICE_QUEUE_ENTRY KeRemoveByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
ULONG SortKey);
|
||||
PKDEVICE_QUEUE_ENTRY KeRemoveDeviceQueue(PKDEVICE_QUEUE DeviceQueue);
|
||||
BOOLEAN KeRemoveEntryDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
|
||||
BOOLEAN KeRemoveQueueDpc(PKDPC Dpc);
|
||||
LONG KeResetEvent(PKEVENT Event);
|
||||
LONG KeSetBasePriorityThread(PKTHREAD Thread, LONG Increment);
|
||||
LONG KeSetEvent(PKEVENT Event, KPRIORITY Increment, BOOLEAN Wait);
|
||||
KPRIORITY KeSetPriorityThread(PKTHREAD Thread, KPRIORITY Priority);
|
||||
BOOLEAN KeSetTimer(PKTIMER Timer, LARGE_INTEGER DueTime, PKDPC Dpc);
|
||||
BOOLEAN KeSetTimerEx(PKTIMER Timer,
|
||||
LARGE_INTEGER DueTime,
|
||||
LONG Period,
|
||||
PKDPC Dpc);
|
||||
VOID STDCALL KeStallExecutionProcessor(ULONG MicroSeconds);
|
||||
BOOLEAN KeSynchronizeExecution(PKINTERRUPT Interrupt,
|
||||
PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
PVOID SynchronizeContext);
|
||||
NTSTATUS KeWaitForMultipleObjects(ULONG Count,
|
||||
PVOID Object[],
|
||||
WAIT_TYPE WaitType,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout,
|
||||
PKWAIT_BLOCK WaitBlockArray);
|
||||
NTSTATUS KeWaitForMutexObject(PKMUTEX Mutex,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout);
|
||||
NTSTATUS KeWaitForSingleObject(PVOID Object,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout);
|
||||
|
||||
/*
|
||||
* FUNCTION: Initializes a spinlock
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Spinlock to initialize
|
||||
*/
|
||||
VOID KeInitializeSpinLock(PKSPIN_LOCK SpinLock);
|
||||
|
||||
/*
|
||||
* FUNCTION: Sets the current irql without altering the current processor
|
||||
* state
|
||||
* ARGUMENTS:
|
||||
* newlvl = IRQ level to set
|
||||
* NOTE: This is for internal use only
|
||||
*/
|
||||
VOID KeSetCurrentIrql(KIRQL newlvl);
|
||||
|
||||
/*
|
||||
* FUNCTION: Brings the system down in a controlled manner when an
|
||||
* inconsistency that might otherwise cause corruption has been detected
|
||||
* ARGUMENTS:
|
||||
* BugCheckCode = Specifies the reason for the bug check
|
||||
* RETURNS: Doesn't
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
KeBugCheck (
|
||||
ULONG BugCheckCode
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Brings the system down in a controlled manner when an
|
||||
|
@ -158,20 +54,422 @@ VOID KeSetCurrentIrql(KIRQL newlvl);
|
|||
* BugCheckParameter[1-4] = Additional information about bug
|
||||
* RETURNS: Doesn't
|
||||
*/
|
||||
VOID KeBugCheckEx(ULONG BugCheckCode,
|
||||
ULONG BugCheckParameter1,
|
||||
ULONG BugCheckParameter2,
|
||||
ULONG BugCheckParameter3,
|
||||
ULONG BugCheckParameter4);
|
||||
VOID
|
||||
STDCALL
|
||||
KeBugCheckEx (
|
||||
ULONG BugCheckCode,
|
||||
ULONG BugCheckParameter1,
|
||||
ULONG BugCheckParameter2,
|
||||
ULONG BugCheckParameter3,
|
||||
ULONG BugCheckParameter4
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeCancelTimer (
|
||||
PKTIMER Timer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeClearEvent (
|
||||
PKEVENT Event
|
||||
);
|
||||
|
||||
NTSTATUS STDCALL KeDelayExecutionThread (KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Internal);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeDeregisterBugCheckCallback (
|
||||
PKBUGCHECK_CALLBACK_RECORD CallbackRecord
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeDetachProcess (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeEnterCriticalRegion (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID KeFlushIoBuffers(PMDL Mdl, BOOLEAN ReadOperation, BOOLEAN DmaOperation);
|
||||
|
||||
KIRQL
|
||||
STDCALL
|
||||
KeGetCurrentIrql (
|
||||
VOID
|
||||
);
|
||||
|
||||
ULONG KeGetCurrentProcessorNumber(VOID);
|
||||
|
||||
PKTHREAD
|
||||
STDCALL
|
||||
KeGetCurrentThread (
|
||||
VOID
|
||||
);
|
||||
|
||||
ULONG KeGetDcacheFillSize(VOID);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
KeGetPreviousMode (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeApc (
|
||||
PKAPC Apc,
|
||||
PKTHREAD Thread,
|
||||
UCHAR StateIndex,
|
||||
PKKERNEL_ROUTINE KernelRoutine,
|
||||
PKRUNDOWN_ROUTINE RundownRoutine,
|
||||
PKNORMAL_ROUTINE NormalRoutine,
|
||||
UCHAR Mode,
|
||||
PVOID Context
|
||||
);
|
||||
|
||||
|
||||
VOID KeInitializeCallbackRecord(PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeDpc (
|
||||
PKDPC Dpc,
|
||||
PKDEFERRED_ROUTINE DeferredRoutine,
|
||||
PVOID DeferredContext
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeEvent (
|
||||
PKEVENT Event,
|
||||
EVENT_TYPE Type,
|
||||
BOOLEAN State
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeMutex (
|
||||
PKMUTEX Mutex,
|
||||
ULONG Level
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeSemaphore (
|
||||
PKSEMAPHORE Semaphore,
|
||||
LONG Count,
|
||||
LONG Limit
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Brings the system down in a controlled manner when an
|
||||
* inconsistency that might otherwise cause corruption has been detected
|
||||
* FUNCTION: Initializes a spinlock
|
||||
* ARGUMENTS:
|
||||
* BugCheckCode = Specifies the reason for the bug check
|
||||
* RETURNS: Doesn't
|
||||
* SpinLock = Spinlock to initialize
|
||||
*/
|
||||
VOID KeBugCheck(ULONG BugCheckCode);
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeSpinLock (
|
||||
PKSPIN_LOCK SpinLock
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeTimer (
|
||||
PKTIMER Timer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeTimerEx (
|
||||
PKTIMER Timer,
|
||||
TIMER_TYPE Type
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeInsertByKeyDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
|
||||
ULONG SortKey
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeInsertDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeInsertQueueApc (
|
||||
PKAPC Apc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2,
|
||||
UCHAR Mode
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeInsertQueueDpc (
|
||||
PKDPC Dpc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeLeaveCriticalRegion (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeLowerIrql (
|
||||
KIRQL NewIrql
|
||||
);
|
||||
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
KeQueryPerformanceCounter (
|
||||
PLARGE_INTEGER PerformanceFrequency
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeQuerySystemTime (
|
||||
PLARGE_INTEGER CurrentTime
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeQueryTickCount (
|
||||
PLARGE_INTEGER TickCount
|
||||
);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
KeQueryTimeIncrement (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeRaiseIrql (
|
||||
KIRQL NewIrql,
|
||||
PKIRQL OldIrql
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReadStateEvent (
|
||||
PKEVENT Event
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReadStateMutex (
|
||||
PKMUTEX Mutex
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReadStateSemaphore (
|
||||
PKSEMAPHORE Semaphore
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeReadStateTimer (
|
||||
PKTIMER Timer
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeRegisterBugCheckCallback (
|
||||
PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
|
||||
PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
|
||||
PVOID Buffer,
|
||||
ULONG Length,
|
||||
PUCHAR Component
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReleaseMutex (
|
||||
PKMUTEX Mutex,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReleaseSemaphore (
|
||||
PKSEMAPHORE Semaphore,
|
||||
KPRIORITY Increment,
|
||||
LONG Adjustment,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeReleaseSpinLock (
|
||||
PKSPIN_LOCK Spinlock,
|
||||
KIRQL NewIrql
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeReleaseSpinLockFromDpcLevel (
|
||||
PKSPIN_LOCK Spinlock
|
||||
);
|
||||
|
||||
PKDEVICE_QUEUE_ENTRY
|
||||
STDCALL
|
||||
KeRemoveByKeyDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
ULONG SortKey
|
||||
);
|
||||
|
||||
PKDEVICE_QUEUE_ENTRY
|
||||
STDCALL
|
||||
KeRemoveDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeRemoveEntryDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeRemoveQueueDpc (
|
||||
PKDPC Dpc
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeResetEvent (
|
||||
PKEVENT Event
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeSetBasePriorityThread (
|
||||
PKTHREAD Thread,
|
||||
LONG Increment
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeSetEvent (
|
||||
PKEVENT Event,
|
||||
KPRIORITY Increment,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
|
||||
KPRIORITY
|
||||
STDCALL
|
||||
KeSetPriorityThread (
|
||||
PKTHREAD Thread,
|
||||
KPRIORITY Priority
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeSetTimer (
|
||||
PKTIMER Timer,
|
||||
LARGE_INTEGER DueTime,
|
||||
PKDPC Dpc
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeSetTimerEx (
|
||||
PKTIMER Timer,
|
||||
LARGE_INTEGER DueTime,
|
||||
LONG Period,
|
||||
PKDPC Dpc
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeStallExecutionProcessor (
|
||||
ULONG MicroSeconds
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeSynchronizeExecution (
|
||||
PKINTERRUPT Interrupt,
|
||||
PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
PVOID SynchronizeContext
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeUpdateSystemTime (
|
||||
VOID
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForMultipleObjects (
|
||||
ULONG Count,
|
||||
PVOID Object[],
|
||||
WAIT_TYPE WaitType,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout,
|
||||
PKWAIT_BLOCK WaitBlockArray
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForMutexObject (
|
||||
PKMUTEX Mutex,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForSingleObject (
|
||||
PVOID Object,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
* FUNCTION: Sets the current irql without altering the current processor
|
||||
* state
|
||||
* ARGUMENTS:
|
||||
* newlvl = IRQ level to set
|
||||
* NOTE: This is for internal use only
|
||||
*/
|
||||
VOID KeSetCurrentIrql(KIRQL newlvl);
|
||||
|
||||
|
||||
// io permission map has a 8k size
|
||||
// Each bit in the IOPM corresponds to an io port byte address. The bitmap
|
||||
|
|
|
@ -3,6 +3,13 @@
|
|||
#ifndef __INCLUDE_DDK_KETYPES_H
|
||||
#define __INCLUDE_DDK_KETYPES_H
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern CHAR EXPORTED KeNumberProcessors;
|
||||
#else
|
||||
extern CHAR IMPORTED KeNumberProcessors;
|
||||
#endif
|
||||
|
||||
|
||||
struct _KMUTANT;
|
||||
|
||||
typedef LONG KPRIORITY;
|
||||
|
|
|
@ -21,7 +21,6 @@ BOOLEAN KeDispatcherObjectWake(DISPATCHER_HEADER* hdr);
|
|||
|
||||
VOID KiInterruptDispatch(ULONG irq);
|
||||
VOID KiDispatchInterrupt(ULONG irq);
|
||||
VOID KiTimerInterrupt(VOID);
|
||||
VOID KeDrainDpcQueue(VOID);
|
||||
VOID KeExpireTimers(VOID);
|
||||
NTSTATUS KeAddThreadTimeout(PKTHREAD Thread, PLARGE_INTEGER Interval);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: irq.c,v 1.11 2000/04/09 15:58:13 ekohl Exp $
|
||||
/* $Id: irq.c,v 1.12 2000/06/04 19:49:37 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -123,7 +123,7 @@ asmlinkage VOID KiInterruptDispatch(ULONG irq)
|
|||
|
||||
if (irq==0)
|
||||
{
|
||||
KiTimerInterrupt();
|
||||
KeUpdateSystemTime ();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -133,10 +133,14 @@ VOID KeCallApcsThread(VOID)
|
|||
// Thread->Tcb.WaitStatus = STATUS_KERNEL_APC;
|
||||
}
|
||||
|
||||
VOID KeInsertQueueApc(PKAPC Apc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2,
|
||||
UCHAR Mode)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInsertQueueApc (
|
||||
PKAPC Apc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2,
|
||||
UCHAR Mode
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Queues an APC for execution
|
||||
* ARGUMENTS:
|
||||
|
@ -200,14 +204,18 @@ VOID KeInsertQueueApc(PKAPC Apc,
|
|||
}
|
||||
}
|
||||
|
||||
VOID KeInitializeApc(PKAPC Apc,
|
||||
PKTHREAD Thread,
|
||||
UCHAR StateIndex,
|
||||
PKKERNEL_ROUTINE KernelRoutine,
|
||||
PKRUNDOWN_ROUTINE RundownRoutine,
|
||||
PKNORMAL_ROUTINE NormalRoutine,
|
||||
UCHAR Mode,
|
||||
PVOID Context)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeApc (
|
||||
PKAPC Apc,
|
||||
PKTHREAD Thread,
|
||||
UCHAR StateIndex,
|
||||
PKKERNEL_ROUTINE KernelRoutine,
|
||||
PKRUNDOWN_ROUTINE RundownRoutine,
|
||||
PKNORMAL_ROUTINE NormalRoutine,
|
||||
UCHAR Mode,
|
||||
PVOID Context
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Initialize an APC object
|
||||
* ARGUMENTS:
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
/* $Id: bug.c,v 1.11 2000/06/04 19:50:12 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/bug.c
|
||||
|
@ -25,7 +26,11 @@ VOID PsDumpThreads(VOID);
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
BOOLEAN KeDeregisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeDeregisterBugCheckCallback (
|
||||
PKBUGCHECK_CALLBACK_RECORD CallbackRecord
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
@ -41,11 +46,15 @@ VOID KeInitializeCallbackRecord(PKBUGCHECK_CALLBACK_RECORD CallbackRecord)
|
|||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
BOOLEAN KeRegisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
|
||||
PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
|
||||
PVOID Buffer,
|
||||
ULONG Length,
|
||||
PUCHAR Component)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeRegisterBugCheckCallback (
|
||||
PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
|
||||
PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
|
||||
PVOID Buffer,
|
||||
ULONG Length,
|
||||
PUCHAR Component
|
||||
)
|
||||
{
|
||||
InsertTailList(&BugcheckCallbackListHead,&CallbackRecord->Entry);
|
||||
CallbackRecord->Length=Length;
|
||||
|
@ -55,11 +64,15 @@ BOOLEAN KeRegisterBugCheckCallback(PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
|
|||
return(TRUE);
|
||||
}
|
||||
|
||||
VOID KeBugCheckEx(ULONG BugCheckCode,
|
||||
ULONG BugCheckParameter1,
|
||||
ULONG BugCheckParameter2,
|
||||
ULONG BugCheckParameter3,
|
||||
ULONG BugCheckParameter4)
|
||||
VOID
|
||||
STDCALL
|
||||
KeBugCheckEx (
|
||||
ULONG BugCheckCode,
|
||||
ULONG BugCheckParameter1,
|
||||
ULONG BugCheckParameter2,
|
||||
ULONG BugCheckParameter3,
|
||||
ULONG BugCheckParameter4
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Brings the system down in a controlled manner when an
|
||||
* inconsistency that might otherwise cause corruption has been detected
|
||||
|
@ -80,7 +93,11 @@ VOID KeBugCheckEx(ULONG BugCheckCode,
|
|||
__asm__("hlt\n\t"); //PJS: use HLT instruction, rather than busy wait
|
||||
}
|
||||
|
||||
VOID KeBugCheck(ULONG BugCheckCode)
|
||||
VOID
|
||||
STDCALL
|
||||
KeBugCheck (
|
||||
ULONG BugCheckCode
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Brings the system down in a controlled manner when an
|
||||
* inconsistency that might otherwise cause corruption has been detected
|
||||
|
@ -105,3 +122,4 @@ VOID KeBugCheck(ULONG BugCheckCode)
|
|||
}
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
/* $Id: critical.c,v 1.4 2000/06/04 19:50:12 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/critical.c
|
||||
|
@ -17,14 +18,24 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID KeEnterCriticalRegion()
|
||||
VOID
|
||||
STDCALL
|
||||
KeEnterCriticalRegion (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
DPRINT("KeEnterCriticalRegion()\n");
|
||||
KeGetCurrentThread()->KernelApcDisable -= 1;
|
||||
}
|
||||
|
||||
VOID KeLeaveCriticalRegion()
|
||||
VOID
|
||||
STDCALL
|
||||
KeLeaveCriticalRegion (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
DPRINT("KeLeaveCriticalRegion()\n");
|
||||
KeGetCurrentThread()->KernelApcDisable += 1;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -30,8 +30,13 @@ ULONG DpcQueueSize = 0;
|
|||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
VOID KeInitializeDpc(PKDPC Dpc, PKDEFERRED_ROUTINE DeferredRoutine,
|
||||
PVOID DeferredContext)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeDpc (
|
||||
PKDPC Dpc,
|
||||
PKDEFERRED_ROUTINE DeferredRoutine,
|
||||
PVOID DeferredContext
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Initalizes a DPC
|
||||
* ARGUMENTS:
|
||||
|
@ -93,7 +98,11 @@ void KeDrainDpcQueue(void)
|
|||
}
|
||||
}
|
||||
|
||||
BOOLEAN KeRemoveQueueDpc(PKDPC Dpc)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeRemoveQueueDpc (
|
||||
PKDPC Dpc
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Removes DPC object from the system dpc queue
|
||||
* ARGUMENTS:
|
||||
|
@ -118,8 +127,13 @@ BOOLEAN KeRemoveQueueDpc(PKDPC Dpc)
|
|||
return(TRUE);
|
||||
}
|
||||
|
||||
BOOLEAN KeInsertQueueDpc(PKDPC dpc, PVOID SystemArgument1,
|
||||
PVOID SystemArgument2)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeInsertQueueDpc (
|
||||
PKDPC Dpc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Queues a DPC for execution when the IRQL of a processor
|
||||
* drops below DISPATCH_LEVEL
|
||||
|
@ -132,24 +146,24 @@ BOOLEAN KeInsertQueueDpc(PKDPC dpc, PVOID SystemArgument1,
|
|||
{
|
||||
KIRQL oldlvl;
|
||||
DPRINT("KeInsertQueueDpc(dpc %x, SystemArgument1 %x, SystemArgument2 %x)\n",
|
||||
dpc, SystemArgument1, SystemArgument2);
|
||||
Dpc, SystemArgument1, SystemArgument2);
|
||||
|
||||
assert(KeGetCurrentIrql()>=DISPATCH_LEVEL);
|
||||
|
||||
dpc->Number=0;
|
||||
dpc->Importance=Medium;
|
||||
dpc->SystemArgument1=SystemArgument1;
|
||||
dpc->SystemArgument2=SystemArgument2;
|
||||
if (dpc->Lock)
|
||||
Dpc->Number=0;
|
||||
Dpc->Importance=Medium;
|
||||
Dpc->SystemArgument1=SystemArgument1;
|
||||
Dpc->SystemArgument2=SystemArgument2;
|
||||
if (Dpc->Lock)
|
||||
{
|
||||
return(FALSE);
|
||||
}
|
||||
KeRaiseIrql( HIGH_LEVEL, &oldlvl );
|
||||
KeAcquireSpinLockAtDpcLevel(&DpcQueueLock);
|
||||
InsertHeadList(&DpcQueueHead,&dpc->DpcListEntry);
|
||||
DPRINT("dpc->DpcListEntry.Flink %x\n", dpc->DpcListEntry.Flink);
|
||||
InsertHeadList(&DpcQueueHead,&Dpc->DpcListEntry);
|
||||
DPRINT("Dpc->DpcListEntry.Flink %x\n", Dpc->DpcListEntry.Flink);
|
||||
DpcQueueSize++;
|
||||
dpc->Lock=(PULONG)1;
|
||||
Dpc->Lock=(PULONG)1;
|
||||
KeReleaseSpinLock( &DpcQueueLock, oldlvl );
|
||||
DPRINT("DpcQueueHead.Flink %x\n",DpcQueueHead.Flink);
|
||||
DPRINT("Leaving KeInsertQueueDpc()\n",0);
|
||||
|
|
|
@ -18,13 +18,23 @@
|
|||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
VOID KeClearEvent(PKEVENT Event)
|
||||
VOID
|
||||
STDCALL
|
||||
KeClearEvent (
|
||||
PKEVENT Event
|
||||
)
|
||||
{
|
||||
DPRINT("KeClearEvent(Event %x)\n", Event);
|
||||
Event->Header.SignalState=FALSE;
|
||||
}
|
||||
|
||||
VOID KeInitializeEvent(PKEVENT Event, EVENT_TYPE Type, BOOLEAN State)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeEvent (
|
||||
PKEVENT Event,
|
||||
EVENT_TYPE Type,
|
||||
BOOLEAN State
|
||||
)
|
||||
{
|
||||
ULONG IType;
|
||||
|
||||
|
@ -48,17 +58,31 @@ VOID KeInitializeEvent(PKEVENT Event, EVENT_TYPE Type, BOOLEAN State)
|
|||
InitializeListHead(&(Event->Header.WaitListHead));
|
||||
}
|
||||
|
||||
LONG KeReadStateEvent(PKEVENT Event)
|
||||
LONG
|
||||
STDCALL
|
||||
KeReadStateEvent (
|
||||
PKEVENT Event
|
||||
)
|
||||
{
|
||||
return(Event->Header.SignalState);
|
||||
}
|
||||
|
||||
LONG KeResetEvent(PKEVENT Event)
|
||||
LONG
|
||||
STDCALL
|
||||
KeResetEvent (
|
||||
PKEVENT Event
|
||||
)
|
||||
{
|
||||
return(InterlockedExchange(&(Event->Header.SignalState),0));
|
||||
}
|
||||
|
||||
LONG KeSetEvent(PKEVENT Event, KPRIORITY Increment, BOOLEAN Wait)
|
||||
LONG
|
||||
STDCALL
|
||||
KeSetEvent (
|
||||
PKEVENT Event,
|
||||
KPRIORITY Increment,
|
||||
BOOLEAN Wait
|
||||
)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
|
|
@ -23,9 +23,13 @@ VOID InsertBeforeEntryInList(PLIST_ENTRY Head, PLIST_ENTRY After,
|
|||
InsertHeadList(After, Entry);
|
||||
}
|
||||
|
||||
BOOLEAN KeInsertByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
|
||||
ULONG SortKey)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeInsertByKeyDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,
|
||||
ULONG SortKey
|
||||
)
|
||||
{
|
||||
KIRQL oldlvl;
|
||||
PLIST_ENTRY current;
|
||||
|
@ -64,8 +68,12 @@ BOOLEAN KeInsertByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
|||
return(TRUE);
|
||||
}
|
||||
|
||||
PKDEVICE_QUEUE_ENTRY KeRemoveByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
ULONG SortKey)
|
||||
PKDEVICE_QUEUE_ENTRY
|
||||
STDCALL
|
||||
KeRemoveByKeyDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
ULONG SortKey
|
||||
)
|
||||
{
|
||||
KIRQL oldlvl;
|
||||
PLIST_ENTRY current;
|
||||
|
@ -95,7 +103,11 @@ PKDEVICE_QUEUE_ENTRY KeRemoveByKeyDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
|||
return(NULL);
|
||||
}
|
||||
|
||||
PKDEVICE_QUEUE_ENTRY KeRemoveDeviceQueue(PKDEVICE_QUEUE DeviceQueue)
|
||||
PKDEVICE_QUEUE_ENTRY
|
||||
STDCALL
|
||||
KeRemoveDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Removes an entry from a device queue
|
||||
* ARGUMENTS:
|
||||
|
@ -128,7 +140,11 @@ PKDEVICE_QUEUE_ENTRY KeRemoveDeviceQueue(PKDEVICE_QUEUE DeviceQueue)
|
|||
return(entry);
|
||||
}
|
||||
|
||||
VOID KeInitializeDeviceQueue(PKDEVICE_QUEUE DeviceQueue)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Intializes a device queue
|
||||
* ARGUMENTS:
|
||||
|
@ -141,8 +157,12 @@ VOID KeInitializeDeviceQueue(PKDEVICE_QUEUE DeviceQueue)
|
|||
KeInitializeSpinLock(&DeviceQueue->Lock);
|
||||
}
|
||||
|
||||
BOOLEAN KeInsertDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeInsertDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Inserts an entry in a device queue
|
||||
* ARGUMENTS:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: main.c,v 1.45 2000/06/03 21:35:51 ekohl Exp $
|
||||
/* $Id: main.c,v 1.46 2000/06/04 19:50:12 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -32,6 +32,7 @@
|
|||
|
||||
ULONG EXPORTED NtBuildNumber = KERNEL_VERSION_BUILD;
|
||||
ULONG EXPORTED NtGlobalFlag = 0;
|
||||
CHAR EXPORTED KeNumberProcessors = 1;
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
/* $Id: mutex.c,v 1.5 2000/06/04 19:50:12 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/mutex.c
|
||||
|
@ -17,7 +18,12 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID KeInitializeMutex(PKMUTEX Mutex, ULONG Level)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeMutex (
|
||||
PKMUTEX Mutex,
|
||||
ULONG Level
|
||||
)
|
||||
{
|
||||
KeInitializeDispatcherHeader(&Mutex->Header,
|
||||
InternalMutexType,
|
||||
|
@ -25,12 +31,21 @@ VOID KeInitializeMutex(PKMUTEX Mutex, ULONG Level)
|
|||
TRUE);
|
||||
}
|
||||
|
||||
LONG KeReadStateMutex(PKMUTEX Mutex)
|
||||
LONG
|
||||
STDCALL
|
||||
KeReadStateMutex (
|
||||
PKMUTEX Mutex
|
||||
)
|
||||
{
|
||||
return(Mutex->Header.SignalState);
|
||||
}
|
||||
|
||||
LONG KeReleaseMutex(PKMUTEX Mutex, BOOLEAN Wait)
|
||||
LONG
|
||||
STDCALL
|
||||
KeReleaseMutex (
|
||||
PKMUTEX Mutex,
|
||||
BOOLEAN Wait
|
||||
)
|
||||
{
|
||||
KeAcquireDispatcherDatabaseLock(Wait);
|
||||
Mutex->Header.SignalState--;
|
||||
|
@ -43,12 +58,17 @@ LONG KeReleaseMutex(PKMUTEX Mutex, BOOLEAN Wait)
|
|||
return(0);
|
||||
}
|
||||
|
||||
NTSTATUS KeWaitForMutexObject(PKMUTEX Mutex,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout)
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForMutexObject (
|
||||
PKMUTEX Mutex,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout
|
||||
)
|
||||
{
|
||||
return(KeWaitForSingleObject(Mutex,WaitReason,WaitMode,Alertable,Timeout));
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
/* $Id: process.c,v 1.4 2000/06/04 19:50:12 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/process.c
|
||||
|
@ -19,7 +20,11 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID KeAttachProcess(PEPROCESS Process)
|
||||
VOID
|
||||
STDCALL
|
||||
KeAttachProcess (
|
||||
PEPROCESS Process
|
||||
)
|
||||
{
|
||||
KIRQL oldlvl;
|
||||
PETHREAD CurrentThread;
|
||||
|
@ -50,7 +55,11 @@ VOID KeAttachProcess(PEPROCESS Process)
|
|||
KeLowerIrql(oldlvl);
|
||||
}
|
||||
|
||||
VOID KeDetachProcess(VOID)
|
||||
VOID
|
||||
STDCALL
|
||||
KeDetachProcess (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
KIRQL oldlvl;
|
||||
PETHREAD CurrentThread;
|
||||
|
@ -78,3 +87,5 @@ VOID KeDetachProcess(VOID)
|
|||
|
||||
KeLowerIrql(oldlvl);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
/* $Id: sem.c,v 1.6 2000/06/04 19:50:12 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/sem.c
|
||||
|
@ -18,9 +19,13 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID KeInitializeSemaphore(PKSEMAPHORE Semaphore,
|
||||
LONG Count,
|
||||
LONG Limit)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeSemaphore (
|
||||
PKSEMAPHORE Semaphore,
|
||||
LONG Count,
|
||||
LONG Limit
|
||||
)
|
||||
{
|
||||
KeInitializeDispatcherHeader(&Semaphore->Header,
|
||||
InternalSemaphoreType,
|
||||
|
@ -29,15 +34,23 @@ VOID KeInitializeSemaphore(PKSEMAPHORE Semaphore,
|
|||
Semaphore->Limit=Limit;
|
||||
}
|
||||
|
||||
LONG KeReadStateSemaphore(PKSEMAPHORE Semaphore)
|
||||
LONG
|
||||
STDCALL
|
||||
KeReadStateSemaphore (
|
||||
PKSEMAPHORE Semaphore
|
||||
)
|
||||
{
|
||||
return(Semaphore->Header.SignalState);
|
||||
}
|
||||
|
||||
LONG KeReleaseSemaphore(PKSEMAPHORE Semaphore,
|
||||
KPRIORITY Increment,
|
||||
LONG Adjustment,
|
||||
BOOLEAN Wait)
|
||||
LONG
|
||||
STDCALL
|
||||
KeReleaseSemaphore (
|
||||
PKSEMAPHORE Semaphore,
|
||||
KPRIORITY Increment,
|
||||
LONG Adjustment,
|
||||
BOOLEAN Wait
|
||||
)
|
||||
/*
|
||||
* FUNCTION: KeReleaseSemaphore releases a given semaphore object. This
|
||||
* routine supplies a runtime priority boost for waiting threads. If this
|
||||
|
@ -85,3 +98,4 @@ LONG KeReleaseSemaphore(PKSEMAPHORE Semaphore,
|
|||
return initState;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -21,9 +21,13 @@
|
|||
|
||||
/* FUNCTIONS ***************************************************************/
|
||||
|
||||
BOOLEAN KeSynchronizeExecution(PKINTERRUPT Interrupt,
|
||||
PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
PVOID SynchronizeContext)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeSynchronizeExecution (
|
||||
PKINTERRUPT Interrupt,
|
||||
PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
PVOID SynchronizeContext
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Synchronizes the execution of a given routine with the ISR
|
||||
* of a given interrupt object
|
||||
|
@ -49,7 +53,11 @@ BOOLEAN KeSynchronizeExecution(PKINTERRUPT Interrupt,
|
|||
return(ret);
|
||||
}
|
||||
|
||||
VOID KeInitializeSpinLock(PKSPIN_LOCK SpinLock)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeSpinLock (
|
||||
PKSPIN_LOCK SpinLock
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Initalizes a spinlock
|
||||
* ARGUMENTS:
|
||||
|
@ -59,7 +67,11 @@ VOID KeInitializeSpinLock(PKSPIN_LOCK SpinLock)
|
|||
SpinLock->Lock = 0;
|
||||
}
|
||||
|
||||
VOID KeAcquireSpinLockAtDpcLevel(PKSPIN_LOCK SpinLock)
|
||||
VOID
|
||||
STDCALL
|
||||
KeAcquireSpinLockAtDpcLevel (
|
||||
PKSPIN_LOCK SpinLock
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Acquires a spinlock when the caller is already running at
|
||||
* dispatch level
|
||||
|
@ -76,7 +88,11 @@ VOID KeAcquireSpinLockAtDpcLevel(PKSPIN_LOCK SpinLock)
|
|||
}
|
||||
}
|
||||
|
||||
VOID KeReleaseSpinLockFromDpcLevel(PKSPIN_LOCK SpinLock)
|
||||
VOID
|
||||
STDCALL
|
||||
KeReleaseSpinLockFromDpcLevel (
|
||||
PKSPIN_LOCK SpinLock
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Releases a spinlock when the caller was running at dispatch
|
||||
* level before acquiring it
|
||||
|
@ -92,7 +108,12 @@ VOID KeReleaseSpinLockFromDpcLevel(PKSPIN_LOCK SpinLock)
|
|||
(void)InterlockedExchange(&SpinLock->Lock, 0);
|
||||
}
|
||||
|
||||
VOID KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
|
||||
VOID
|
||||
STDCALL
|
||||
KeAcquireSpinLock (
|
||||
PKSPIN_LOCK SpinLock,
|
||||
PKIRQL OldIrql
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Acquires a spinlock
|
||||
* ARGUMENTS:
|
||||
|
@ -104,7 +125,12 @@ VOID KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
|
|||
KeAcquireSpinLockAtDpcLevel(SpinLock);
|
||||
}
|
||||
|
||||
VOID KeReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL NewIrql)
|
||||
VOID
|
||||
STDCALL
|
||||
KeReleaseSpinLock (
|
||||
PKSPIN_LOCK SpinLock,
|
||||
KIRQL NewIrql
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Releases a spinlock
|
||||
* ARGUMENTS:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: timer.c,v 1.27 2000/02/14 10:27:40 ariadne Exp $
|
||||
/* $Id: timer.c,v 1.28 2000/06/04 19:50:12 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -145,9 +145,13 @@ NTSTATUS STDCALL NtDelayExecution(IN ULONG Alertable,
|
|||
}
|
||||
|
||||
|
||||
NTSTATUS STDCALL KeDelayExecutionThread(KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Interval)
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeDelayExecutionThread (
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Interval
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Puts the current thread into an alertable or nonalertable
|
||||
* wait state for a given internal
|
||||
|
@ -167,7 +171,11 @@ NTSTATUS STDCALL KeDelayExecutionThread(KPROCESSOR_MODE WaitMode,
|
|||
NULL));
|
||||
}
|
||||
|
||||
LARGE_INTEGER KeQueryPerformanceCounter(PLARGE_INTEGER PerformanceFreq)
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
KeQueryPerformanceCounter (
|
||||
PLARGE_INTEGER PerformanceFreq
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Queries the finest grained running count avaiable in the system
|
||||
* ARGUMENTS:
|
||||
|
@ -185,7 +193,11 @@ LARGE_INTEGER KeQueryPerformanceCounter(PLARGE_INTEGER PerformanceFreq)
|
|||
return *PerformanceFreq;
|
||||
}
|
||||
|
||||
ULONG KeQueryTimeIncrement(VOID)
|
||||
ULONG
|
||||
STDCALL
|
||||
KeQueryTimeIncrement (
|
||||
VOID
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Gets the increment (in 100-nanosecond units) that is added to
|
||||
* the system clock every time the clock interrupts
|
||||
|
@ -195,7 +207,11 @@ ULONG KeQueryTimeIncrement(VOID)
|
|||
return(CLOCK_INCREMENT);
|
||||
}
|
||||
|
||||
VOID KeQuerySystemTime(PLARGE_INTEGER CurrentTime)
|
||||
VOID
|
||||
STDCALL
|
||||
KeQuerySystemTime (
|
||||
PLARGE_INTEGER CurrentTime
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Gets the current system time
|
||||
* ARGUMENTS:
|
||||
|
@ -208,7 +224,11 @@ VOID KeQuerySystemTime(PLARGE_INTEGER CurrentTime)
|
|||
}
|
||||
|
||||
|
||||
NTSTATUS STDCALL NtGetTickCount (PULONG UpTime)
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
NtGetTickCount (
|
||||
PULONG UpTime
|
||||
)
|
||||
{
|
||||
LARGE_INTEGER TickCount;
|
||||
if ( UpTime == NULL )
|
||||
|
@ -219,7 +239,13 @@ NTSTATUS STDCALL NtGetTickCount (PULONG UpTime)
|
|||
}
|
||||
|
||||
|
||||
BOOLEAN KeSetTimer(PKTIMER Timer, LARGE_INTEGER DueTime, PKDPC Dpc)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeSetTimer (
|
||||
PKTIMER Timer,
|
||||
LARGE_INTEGER DueTime,
|
||||
PKDPC Dpc
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Sets the absolute or relative interval at which a timer object
|
||||
* is to be set to the signaled state and optionally supplies a
|
||||
|
@ -236,8 +262,14 @@ BOOLEAN KeSetTimer(PKTIMER Timer, LARGE_INTEGER DueTime, PKDPC Dpc)
|
|||
return(KeSetTimerEx(Timer, DueTime, 0, Dpc));
|
||||
}
|
||||
|
||||
BOOLEAN KeSetTimerEx(PKTIMER Timer, LARGE_INTEGER DueTime, LONG Period,
|
||||
PKDPC Dpc)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeSetTimerEx (
|
||||
PKTIMER Timer,
|
||||
LARGE_INTEGER DueTime,
|
||||
LONG Period,
|
||||
PKDPC Dpc
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Sets the absolute or relative interval at which a timer object
|
||||
* is to be set to the signaled state and optionally supplies a
|
||||
|
@ -280,7 +312,11 @@ BOOLEAN KeSetTimerEx(PKTIMER Timer, LARGE_INTEGER DueTime, LONG Period,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN KeCancelTimer(PKTIMER Timer)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeCancelTimer (
|
||||
PKTIMER Timer
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Removes a timer from the system timer list
|
||||
* ARGUMENTS:
|
||||
|
@ -308,12 +344,20 @@ BOOLEAN KeCancelTimer(PKTIMER Timer)
|
|||
return(TRUE);
|
||||
}
|
||||
|
||||
BOOLEAN KeReadStateTimer(PKTIMER Timer)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeReadStateTimer (
|
||||
PKTIMER Timer
|
||||
)
|
||||
{
|
||||
return(Timer->Header.SignalState);
|
||||
}
|
||||
|
||||
VOID KeInitializeTimer(PKTIMER Timer)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeTimer (
|
||||
PKTIMER Timer
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Initalizes a kernel timer object
|
||||
* ARGUMENTS:
|
||||
|
@ -324,7 +368,12 @@ VOID KeInitializeTimer(PKTIMER Timer)
|
|||
KeInitializeTimerEx(Timer,NotificationTimer);
|
||||
}
|
||||
|
||||
VOID KeInitializeTimerEx(PKTIMER Timer, TIMER_TYPE Type)
|
||||
VOID
|
||||
STDCALL
|
||||
KeInitializeTimerEx (
|
||||
PKTIMER Timer,
|
||||
TIMER_TYPE Type
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Initializes a kernel timer object
|
||||
* ARGUMENTS:
|
||||
|
@ -359,7 +408,11 @@ VOID KeInitializeTimerEx(PKTIMER Timer, TIMER_TYPE Type)
|
|||
Timer->TimerListEntry.Flink = Timer->TimerListEntry.Blink = NULL;
|
||||
}
|
||||
|
||||
VOID KeQueryTickCount(PLARGE_INTEGER TickCount)
|
||||
VOID
|
||||
STDCALL
|
||||
KeQueryTickCount (
|
||||
PLARGE_INTEGER TickCount
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Returns the number of ticks since the system was booted
|
||||
* ARGUMENTS:
|
||||
|
@ -429,7 +482,11 @@ VOID KeExpireTimers(VOID)
|
|||
}
|
||||
|
||||
|
||||
VOID KiTimerInterrupt(VOID)
|
||||
VOID
|
||||
STDCALL
|
||||
KeUpdateSystemTime (
|
||||
VOID
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Handles a timer interrupt
|
||||
*/
|
||||
|
|
|
@ -364,11 +364,15 @@ BOOLEAN KeDispatcherObjectWake(DISPATCHER_HEADER* hdr)
|
|||
}
|
||||
|
||||
|
||||
NTSTATUS KeWaitForSingleObject(PVOID Object,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout)
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForSingleObject (
|
||||
PVOID Object,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Puts the current thread into a wait state until the
|
||||
* given dispatcher object is set to signalled
|
||||
|
@ -449,14 +453,18 @@ NTSTATUS KeWaitForSingleObject(PVOID Object,
|
|||
}
|
||||
|
||||
|
||||
NTSTATUS KeWaitForMultipleObjects(ULONG Count,
|
||||
PVOID Object[],
|
||||
WAIT_TYPE WaitType,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout,
|
||||
PKWAIT_BLOCK WaitBlockArray)
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForMultipleObjects (
|
||||
ULONG Count,
|
||||
PVOID Object[],
|
||||
WAIT_TYPE WaitType,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout,
|
||||
PKWAIT_BLOCK WaitBlockArray
|
||||
)
|
||||
{
|
||||
DISPATCHER_HEADER* hdr;
|
||||
PKWAIT_BLOCK blk;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: thread.c,v 1.47 2000/06/03 21:36:32 ekohl Exp $
|
||||
/* $Id: thread.c,v 1.48 2000/06/04 19:51:05 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -106,7 +106,11 @@ VOID PsUnfreezeProcessThreads(PEPROCESS Process)
|
|||
KeReleaseSpinLock(&PiThreadListLock, oldIrql);
|
||||
}
|
||||
|
||||
PKTHREAD KeGetCurrentThread(VOID)
|
||||
PKTHREAD
|
||||
STDCALL
|
||||
KeGetCurrentThread (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return(&(CurrentThread->Tcb));
|
||||
}
|
||||
|
@ -415,7 +419,12 @@ VOID PsInitThreadManagment(VOID)
|
|||
* Sets thread's base priority relative to the process' base priority
|
||||
* Should only be passed in THREAD_PRIORITY_ constants in pstypes.h
|
||||
*/
|
||||
LONG KeSetBasePriorityThread(PKTHREAD Thread, LONG Increment)
|
||||
LONG
|
||||
STDCALL
|
||||
KeSetBasePriorityThread (
|
||||
PKTHREAD Thread,
|
||||
LONG Increment
|
||||
)
|
||||
{
|
||||
Thread->BasePriority = ((PETHREAD)Thread)->ThreadsProcess->Pcb.BasePriority + Increment;
|
||||
if( Thread->BasePriority < 0 )
|
||||
|
@ -427,7 +436,12 @@ LONG KeSetBasePriorityThread(PKTHREAD Thread, LONG Increment)
|
|||
}
|
||||
|
||||
|
||||
KPRIORITY KeSetPriorityThread(PKTHREAD Thread, KPRIORITY Priority)
|
||||
KPRIORITY
|
||||
STDCALL
|
||||
KeSetPriorityThread (
|
||||
PKTHREAD Thread,
|
||||
KPRIORITY Priority
|
||||
)
|
||||
{
|
||||
KPRIORITY OldPriority;
|
||||
KIRQL oldIrql;
|
||||
|
|
|
@ -122,7 +122,11 @@ VOID KeSetPreviousMode(ULONG Mode)
|
|||
PsGetCurrentThread()->Tcb.PreviousMode = Mode;
|
||||
}
|
||||
|
||||
ULONG KeGetPreviousMode(VOID)
|
||||
ULONG
|
||||
STDCALL
|
||||
KeGetPreviousMode (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
/* CurrentThread is in ntoskrnl/ps/thread.c */
|
||||
return (ULONG)PsGetCurrentThread()->Tcb.PreviousMode;
|
||||
|
|
Loading…
Reference in a new issue