#define I386_INTERRUPT_GATE 0xE
#define I386_TRAP_GATE 0xF
+#define IPI_APC 1
+#define IPI_DPC 2
+#define IPI_FREEZE 3
+#define IPI_PACKET_READY 4
+#define IPI_SYNCH_REQUEST 10
+
/* EXPORTED DATA *************************************************************/
/* ENUMERATIONS **************************************************************/
/* FUNCTIONS *****************************************************************/
VOID
+NTAPI
CcInit(VOID)
{
CcInitView();
/* FUNCTIONS *****************************************************************/
VOID
+NTAPI
CcInitCacheZeroPage(VOID)
{
NTSTATUS Status;
}
NTSTATUS
+NTAPI
ReadCacheSegmentChain(PBCB Bcb, ULONG ReadOffset, ULONG Length,
PVOID Buffer)
{
}
NTSTATUS
+NTAPI
ReadCacheSegment(PCACHE_SEGMENT CacheSeg)
{
ULONG Size;
}
NTSTATUS
+NTAPI
WriteCacheSegment(PCACHE_SEGMENT CacheSeg)
{
ULONG Size;
}
NTSTATUS
+NTAPI
CcRosFlushCacheSegment(PCACHE_SEGMENT CacheSegment)
{
NTSTATUS Status;
}
NTSTATUS
+NTAPI
CcRosFlushDirtyPages(ULONG Target, PULONG Count)
{
PLIST_ENTRY current_entry;
}
NTSTATUS
+NTAPI
CcRosReleaseCacheSegment(PBCB Bcb,
PCACHE_SEGMENT CacheSeg,
BOOLEAN Valid,
}
PCACHE_SEGMENT
+NTAPI
CcRosLookupCacheSegment(PBCB Bcb, ULONG FileOffset)
{
PLIST_ENTRY current_entry;
}
NTSTATUS
+NTAPI
CcRosMarkDirtyCacheSegment(PBCB Bcb, ULONG FileOffset)
{
PCACHE_SEGMENT CacheSeg;
}
NTSTATUS
+NTAPI
CcRosUnmapCacheSegment(PBCB Bcb, ULONG FileOffset, BOOLEAN NowDirty)
{
PCACHE_SEGMENT CacheSeg;
}
NTSTATUS
+NTAPI
CcRosGetCacheSegmentChain(PBCB Bcb,
ULONG FileOffset,
ULONG Length,
}
NTSTATUS
+NTAPI
CcRosGetCacheSegment(PBCB Bcb,
ULONG FileOffset,
PULONG BaseOffset,
}
NTSTATUS
+NTAPI
CcRosFreeCacheSegment(PBCB Bcb, PCACHE_SEGMENT CacheSeg)
{
NTSTATUS Status;
}
NTSTATUS
+NTAPI
CcRosDeleteFileCache(PFILE_OBJECT FileObject, PBCB Bcb)
/*
* FUNCTION: Releases the BCB associated with a file object
return(STATUS_SUCCESS);
}
-VOID CcRosReferenceCache(PFILE_OBJECT FileObject)
+VOID
+NTAPI
+CcRosReferenceCache(PFILE_OBJECT FileObject)
{
PBCB Bcb;
ExAcquireFastMutex(&ViewLock);
ExReleaseFastMutex(&ViewLock);
}
-VOID CcRosSetRemoveOnClose(PSECTION_OBJECT_POINTERS SectionObjectPointer)
+VOID
+NTAPI
+CcRosSetRemoveOnClose(PSECTION_OBJECT_POINTERS SectionObjectPointer)
{
PBCB Bcb;
DPRINT("CcRosSetRemoveOnClose()\n");
}
-VOID CcRosDereferenceCache(PFILE_OBJECT FileObject)
+VOID
+NTAPI
+CcRosDereferenceCache(PFILE_OBJECT FileObject)
{
PBCB Bcb;
ExAcquireFastMutex(&ViewLock);
}
NTSTATUS
+NTAPI
CcTryToInitializeFileCache(PFILE_OBJECT FileObject)
{
PBCB Bcb;
}
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
CcInitView(VOID)
{
#ifdef CACHE_BITMAP
);
NTSTATUS
+NTAPI
CcRosFlushCacheSegment(PCACHE_SEGMENT CacheSegment);
NTSTATUS
+NTAPI
CcRosGetCacheSegment(
PBCB Bcb,
ULONG FileOffset,
PULONG BaseOffset,
- PVOID* BaseAddress,
+ PVOID *BaseAddress,
PBOOLEAN UptoDate,
- PCACHE_SEGMENT* CacheSeg
+ PCACHE_SEGMENT *CacheSeg
);
VOID
+NTAPI
CcInitView(VOID);
NTSTATUS
+NTAPI
CcRosFreeCacheSegment(
PBCB,
PCACHE_SEGMENT
);
NTSTATUS
+NTAPI
ReadCacheSegment(PCACHE_SEGMENT CacheSeg);
NTSTATUS
+NTAPI
WriteCacheSegment(PCACHE_SEGMENT CacheSeg);
-VOID CcInit(VOID);
+VOID
+NTAPI
+CcInit(VOID);
NTSTATUS
+NTAPI
CcRosUnmapCacheSegment(
PBCB Bcb,
ULONG FileOffset,
);
PCACHE_SEGMENT
+NTAPI
CcRosLookupCacheSegment(
PBCB Bcb,
ULONG FileOffset
);
NTSTATUS
+NTAPI
CcRosGetCacheSegmentChain(
PBCB Bcb,
ULONG FileOffset,
);
VOID
+NTAPI
CcInitCacheZeroPage(VOID);
NTSTATUS
+NTAPI
CcRosMarkDirtyCacheSegment(
PBCB Bcb,
ULONG FileOffset
);
NTSTATUS
+NTAPI
CcRosFlushDirtyPages(
ULONG Target,
PULONG Count
);
VOID
+NTAPI
CcRosDereferenceCache(PFILE_OBJECT FileObject);
VOID
+NTAPI
CcRosReferenceCache(PFILE_OBJECT FileObject);
VOID
+NTAPI
CcRosSetRemoveOnClose(PSECTION_OBJECT_POINTERS SectionObjectPointer);
NTSTATUS
+NTAPI
CcRosReleaseCacheSegment(
- BCB* Bcb,
- CACHE_SEGMENT* CacheSeg,
- BOOLEAN Valid,
- BOOLEAN Dirty,
- BOOLEAN Mapped
+ BCB* Bcb,
+ CACHE_SEGMENT *CacheSeg,
+ BOOLEAN Valid,
+ BOOLEAN Dirty,
+ BOOLEAN Mapped
);
NTSTATUS
STDCALL
CcRosRequestCacheSegment(
- BCB* Bcb,
- ULONG FileOffset,
- PVOID* BaseAddress,
- PBOOLEAN UptoDate,
- CACHE_SEGMENT** CacheSeg
+ BCB *Bcb,
+ ULONG FileOffset,
+ PVOID* BaseAddress,
+ PBOOLEAN UptoDate,
+ CACHE_SEGMENT **CacheSeg
);
NTSTATUS
+NTAPI
CcTryToInitializeFileCache(PFILE_OBJECT FileObject);
/*
+++ /dev/null
-#ifndef __INCLUDE_INTERNAL_IFS_H
-#define __INCLUDE_INTERNAL_IFS_H
-
-typedef struct _FILE_LOCK_GRANTED {
- LIST_ENTRY ListEntry;
- FILE_LOCK_INFO Lock;
- PVOID UnlockContext;
-} FILE_LOCK_GRANTED, *PFILE_LOCK_GRANTED;
-
-
-typedef struct _FILE_LOCK_TOC {
- KSPIN_LOCK SpinLock;
- LIST_ENTRY GrantedListHead;
- LIST_ENTRY PendingListHead;
-} FILE_LOCK_TOC, *PFILE_LOCK_TOC;
-
-VOID
-STDCALL INIT_FUNCTION
-FsRtlpInitNotifyImplementation(VOID);
-
-
-VOID STDCALL
-FsRtlpInitFileLockingImplementation(VOID);
-
-VOID STDCALL
-FsRtlpFileLockCancelRoutine(
- IN PDEVICE_OBJECT DeviceObject,
- IN PIRP Irp
- );
-
-BOOLEAN FASTCALL
-FsRtlpCheckLockForReadOrWriteAccess(
- IN PFILE_LOCK FileLock,
- IN PLARGE_INTEGER FileOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key,
- IN PFILE_OBJECT FileObject,
- IN PEPROCESS Process,
- IN BOOLEAN Read
- );
-
-NTSTATUS FASTCALL
-FsRtlpFastUnlockAllByKey(
- IN PFILE_LOCK FileLock,
- IN PFILE_OBJECT FileObject,
- IN PEPROCESS Process,
- IN DWORD Key, /* FIXME: guess */
- IN BOOLEAN UseKey, /* FIXME: guess */
- IN PVOID Context OPTIONAL
- );
-
-BOOLEAN FASTCALL
-FsRtlpAddLock(
- IN PFILE_LOCK_TOC LockToc,
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN PLARGE_INTEGER Length,
- IN PEPROCESS Process,
- IN ULONG Key,
- IN BOOLEAN ExclusiveLock,
- IN PVOID UnlockContext
- );
-
-VOID FASTCALL
-FsRtlpCompletePendingLocks(
- IN PFILE_LOCK FileLock,
- IN PFILE_LOCK_TOC LockToc,
- IN OUT PKIRQL oldirql,
- IN PVOID Context
- );
-
-NTSTATUS FASTCALL
-FsRtlpUnlockSingle(
- IN PFILE_LOCK FileLock,
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN PLARGE_INTEGER Length,
- IN PEPROCESS Process,
- IN ULONG Key,
- IN PVOID Context OPTIONAL,
- IN BOOLEAN CallUnlockRoutine
- );
-
-VOID FASTCALL
-FsRtlpDumpFileLocks(
- IN PFILE_LOCK FileLock
- );
-
-#endif
--- /dev/null
+#ifndef __INCLUDE_INTERNAL_IFS_H
+#define __INCLUDE_INTERNAL_IFS_H
+
+typedef struct _FILE_LOCK_GRANTED
+{
+ LIST_ENTRY ListEntry;
+ FILE_LOCK_INFO Lock;
+ PVOID UnlockContext;
+} FILE_LOCK_GRANTED, *PFILE_LOCK_GRANTED;
+
+typedef struct _FILE_LOCK_TOC
+{
+ KSPIN_LOCK SpinLock;
+ LIST_ENTRY GrantedListHead;
+ LIST_ENTRY PendingListHead;
+} FILE_LOCK_TOC, *PFILE_LOCK_TOC;
+
+VOID
+INIT_FUNCTION
+STDCALL
+FsRtlpInitNotifyImplementation(VOID);
+
+VOID
+STDCALL
+FsRtlpInitFileLockingImplementation(VOID);
+
+VOID
+STDCALL
+FsRtlpFileLockCancelRoutine(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp
+ );
+
+BOOLEAN
+FASTCALL
+FsRtlpCheckLockForReadOrWriteAccess(
+ IN PFILE_LOCK FileLock,
+ IN PLARGE_INTEGER FileOffset,
+ IN PLARGE_INTEGER Length,
+ IN ULONG Key,
+ IN PFILE_OBJECT FileObject,
+ IN PEPROCESS Process,
+ IN BOOLEAN Read
+);
+
+NTSTATUS
+FASTCALL
+FsRtlpFastUnlockAllByKey(
+ IN PFILE_LOCK FileLock,
+ IN PFILE_OBJECT FileObject,
+ IN PEPROCESS Process,
+ IN DWORD Key,
+ IN BOOLEAN UseKey,
+ IN PVOID Context OPTIONAL
+);
+
+BOOLEAN
+FASTCALL
+FsRtlpAddLock(
+ IN PFILE_LOCK_TOC LockToc,
+ IN PFILE_OBJECT FileObject,
+ IN PLARGE_INTEGER FileOffset,
+ IN PLARGE_INTEGER Length,
+ IN PEPROCESS Process,
+ IN ULONG Key,
+ IN BOOLEAN ExclusiveLock,
+ IN PVOID UnlockContext
+);
+
+VOID
+FASTCALL
+FsRtlpCompletePendingLocks(
+ IN PFILE_LOCK FileLock,
+ IN PFILE_LOCK_TOC LockToc,
+ IN OUT PKIRQL oldirql,
+ IN PVOID Context
+);
+
+NTSTATUS
+FASTCALL
+FsRtlpUnlockSingle(
+ IN PFILE_LOCK FileLock,
+ IN PFILE_OBJECT FileObject,
+ IN PLARGE_INTEGER FileOffset,
+ IN PLARGE_INTEGER Length,
+ IN PEPROCESS Process,
+ IN ULONG Key,
+ IN PVOID Context OPTIONAL,
+ IN BOOLEAN CallUnlockRoutine
+);
+
+VOID
+FASTCALL
+FsRtlpDumpFileLocks(IN PFILE_LOCK FileLock);
+
+#endif
ULONG Eflags;
} KIRQ_TRAPFRAME, *PKIRQ_TRAPFRAME;
+/* Emulate cli/sti instructions */
+#define KV86M_EMULATE_CLI_STI (0x1)
+/* Allow the v86 mode code to access i/o ports */
+#define KV86M_ALLOW_IO_PORT_ACCESS (0x2)
+
+typedef struct _KV86M_REGISTERS
+{
+ /*
+ * General purpose registers
+ */
+ ULONG Ebp;
+ ULONG Edi;
+ ULONG Esi;
+ ULONG Edx;
+ ULONG Ecx;
+ ULONG Ebx;
+ ULONG Eax;
+ ULONG Ds;
+ ULONG Es;
+ ULONG Fs;
+ ULONG Gs;
+
+ /*
+ * Control registers
+ */
+ ULONG Eip;
+ ULONG Cs;
+ ULONG Eflags;
+ ULONG Esp;
+ ULONG Ss;
+
+ /*
+ * Control structures
+ */
+ ULONG RecoveryAddress;
+ UCHAR RecoveryInstruction[4];
+ ULONG Vif;
+ ULONG Flags;
+ PNTSTATUS PStatus;
+} KV86M_REGISTERS, *PKV86M_REGISTERS;
+
+typedef struct _KV86M_TRAP_FRAME
+{
+ KTRAP_FRAME Tf;
+
+ ULONG SavedExceptionStack;
+
+ /*
+ * These are put on the top of the stack by the routine that entered
+ * v86 mode so the exception handlers can find the control information
+ */
+ struct _KV86M_REGISTERS* regs;
+ ULONG orig_ebp;
+} KV86M_TRAP_FRAME, *PKV86M_TRAP_FRAME;
+
extern ULONG Ke386CacheAlignment;
struct _KPCR;
#ifndef __NTOSKRNL_INCLUDE_INTERNAL_IO_H
#define __NTOSKRNL_INCLUDE_INTERNAL_IO_H
+#include <ddk/ntdddisk.h>
+
#define IO_METHOD_FROM_CTL_CODE(ctlCode) (ctlCode&0x00000003)
extern POBJECT_TYPE IoCompletionType;
: \
FIELD_OFFSET(CM_RESOURCE_LIST, List)
+/* xhal.c */
+NTSTATUS
+FASTCALL
+xHalQueryDriveLayout(
+ IN PUNICODE_STRING DeviceName,
+ OUT PDRIVE_LAYOUT_INFORMATION *LayoutInfo
+);
+
+#undef HalExamineMBR
+VOID
+FASTCALL
+HalExamineMBR(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG MBRTypeIdentifier,
+ OUT PVOID *Buffer
+);
+
+VOID
+FASTCALL
+xHalIoAssignDriveLetters(
+ IN PLOADER_PARAMETER_BLOCK LoaderBlock,
+ IN PSTRING NtDeviceName,
+ OUT PUCHAR NtSystemPath,
+ OUT PSTRING NtSystemPathString
+);
+
+NTSTATUS
+FASTCALL
+xHalIoReadPartitionTable(
+ PDEVICE_OBJECT DeviceObject,
+ ULONG SectorSize,
+ BOOLEAN ReturnRecognizedPartitions,
+ PDRIVE_LAYOUT_INFORMATION *PartitionBuffer
+);
+
+NTSTATUS
+FASTCALL
+xHalIoSetPartitionInformation(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG PartitionNumber,
+ IN ULONG PartitionType
+);
+
+NTSTATUS
+FASTCALL
+xHalIoWritePartitionTable(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG SectorsPerTrack,
+ IN ULONG NumberOfHeads,
+ IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer
+);
+
#endif
PVOID Wow64;
} WOW64_PROCESS, *PWOW64_PROCESS;
-/* INTERNAL KERNEL FUNCTIONS ************************************************/
+typedef struct _KPROFILE_SOURCE_OBJECT
+{
+ KPROFILE_SOURCE Source;
+ LIST_ENTRY ListEntry;
+} KPROFILE_SOURCE_OBJECT, *PKPROFILE_SOURCE_OBJECT;
+
+/* Cached modules from the loader block */
+typedef enum _CACHED_MODULE_TYPE
+{
+ AnsiCodepage,
+ OemCodepage,
+ UnicodeCasemap,
+ SystemRegistry,
+ HardwareRegistry,
+ MaximumCachedModuleType,
+} CACHED_MODULE_TYPE, *PCACHED_MODULE_TYPE;
+extern PLOADER_MODULE CachedModules[MaximumCachedModuleType];
struct _KIRQ_TRAPFRAME;
struct _KPCR;
extern PVOID KeUserCallbackDispatcher;
extern PVOID KeUserExceptionDispatcher;
extern PVOID KeRaiseUserExceptionDispatcher;
-
-#define IPI_REQUEST_FUNCTIONCALL 0
-#define IPI_REQUEST_APC 1
-#define IPI_REQUEST_DPC 2
-#define IPI_REQUEST_FREEZE 3
+extern LARGE_INTEGER SystemBootTime;
+extern ULONG_PTR KERNEL_BASE;
/* MACROS *************************************************************************/
} \
}
+#define KEBUGCHECKWITHTF(a,b,c,d,e,f) \
+ DbgPrint("KeBugCheckWithTf at %s:%i\n",__FILE__,__LINE__), KeBugCheckWithTf(a,b,c,d,e,f)
+
+#define MAXIMUM_PROCESSORS 32
+
+
+/* INTERNAL KERNEL FUNCTIONS ************************************************/
+
/* threadsch.c ********************************************************************/
/* Thread Scheduler Functions */
/* Puts a Thread into a block state. */
VOID
STDCALL
-KiBlockThread(PNTSTATUS Status,
- UCHAR Alertable,
- ULONG WaitMode,
- UCHAR WaitReason);
+KiBlockThread(
+ PNTSTATUS Status,
+ UCHAR Alertable,
+ ULONG WaitMode,
+ UCHAR WaitReason
+);
/* Removes a thread out of a block state. */
VOID
STDCALL
-KiUnblockThread(PKTHREAD Thread,
- PNTSTATUS WaitStatus,
- KPRIORITY Increment);
+KiUnblockThread(
+ PKTHREAD Thread,
+ PNTSTATUS WaitStatus,
+ KPRIORITY Increment
+);
NTSTATUS
STDCALL
VOID
FASTCALL
-KeWaitForGate(PKGATE Gate,
- KWAIT_REASON WaitReason,
- KPROCESSOR_MODE WaitMode);
+KeWaitForGate(
+ PKGATE Gate,
+ KWAIT_REASON WaitReason,
+ KPROCESSOR_MODE WaitMode
+);
/* ipi.c ********************************************************************/
-BOOLEAN STDCALL
-KiIpiServiceRoutine(IN PKTRAP_FRAME TrapFrame,
- IN struct _KEXCEPTION_FRAME* ExceptionFrame);
+BOOLEAN
+STDCALL
+KiIpiServiceRoutine(
+ IN PKTRAP_FRAME TrapFrame,
+ IN struct _KEXCEPTION_FRAME* ExceptionFrame
+);
VOID
-KiIpiSendRequest(KAFFINITY TargetSet,
- ULONG IpiRequest);
+NTAPI
+KiIpiSendRequest(
+ KAFFINITY TargetSet,
+ ULONG IpiRequest
+);
VOID
-KeIpiGenericCall(VOID (STDCALL *WorkerRoutine)(PVOID),
- PVOID Argument);
+NTAPI
+KeIpiGenericCall(
+ VOID (STDCALL *WorkerRoutine)(PVOID),
+ PVOID Argument
+);
/* next file ***************************************************************/
-typedef struct _KPROFILE_SOURCE_OBJECT
-{
- KPROFILE_SOURCE Source;
- LIST_ENTRY ListEntry;
-} KPROFILE_SOURCE_OBJECT, *PKPROFILE_SOURCE_OBJECT;
-
-/* Cached modules from the loader block */
-typedef enum _CACHED_MODULE_TYPE
-{
- AnsiCodepage,
- OemCodepage,
- UnicodeCasemap,
- SystemRegistry,
- HardwareRegistry,
- MaximumCachedModuleType,
-} CACHED_MODULE_TYPE, *PCACHED_MODULE_TYPE;
-extern PLOADER_MODULE CachedModules[MaximumCachedModuleType];
-
VOID
STDCALL
DbgBreakPointNoBugCheck(VOID);
VOID
STDCALL
-KeInitializeProfile(struct _KPROFILE* Profile,
- struct _KPROCESS* Process,
- PVOID ImageBase,
- ULONG ImageSize,
- ULONG BucketSize,
- KPROFILE_SOURCE ProfileSource,
- KAFFINITY Affinity);
+KeInitializeProfile(
+ struct _KPROFILE* Profile,
+ struct _KPROCESS* Process,
+ PVOID ImageBase,
+ ULONG ImageSize,
+ ULONG BucketSize,
+ KPROFILE_SOURCE ProfileSource,
+ KAFFINITY Affinity
+);
VOID
STDCALL
-KeStartProfile(struct _KPROFILE* Profile,
- PVOID Buffer);
+KeStartProfile(
+ struct _KPROFILE* Profile,
+ PVOID Buffer
+);
VOID
STDCALL
VOID
STDCALL
-KeSetIntervalProfile(KPROFILE_SOURCE ProfileSource,
- ULONG Interval);
+KeSetIntervalProfile(
+ KPROFILE_SOURCE ProfileSource,
+ ULONG Interval
+);
VOID
STDCALL
VOID
STDCALL
KeProfileInterruptWithSource(
- IN PKTRAP_FRAME TrapFrame,
- IN KPROFILE_SOURCE Source
+ IN PKTRAP_FRAME TrapFrame,
+ IN KPROFILE_SOURCE Source
);
BOOLEAN
STDCALL
KiRosPrintAddress(PVOID Address);
-VOID STDCALL KeUpdateSystemTime(PKTRAP_FRAME TrapFrame, KIRQL Irql);
-VOID STDCALL KeUpdateRunTime(PKTRAP_FRAME TrapFrame, KIRQL Irql);
+VOID
+STDCALL
+KeUpdateSystemTime(
+ PKTRAP_FRAME TrapFrame,
+ KIRQL Irql
+);
-VOID STDCALL KiExpireTimers(PKDPC Dpc, PVOID DeferredContext, PVOID SystemArgument1, PVOID SystemArgument2);
+VOID
+STDCALL
+KeUpdateRunTime(
+ PKTRAP_FRAME TrapFrame,
+ KIRQL Irql
+);
-KIRQL inline FASTCALL KeAcquireDispatcherDatabaseLock(VOID);
-VOID inline FASTCALL KeAcquireDispatcherDatabaseLockAtDpcLevel(VOID);
-VOID inline FASTCALL KeReleaseDispatcherDatabaseLock(KIRQL Irql);
-VOID inline FASTCALL KeReleaseDispatcherDatabaseLockFromDpcLevel(VOID);
+VOID
+STDCALL
+KiExpireTimers(
+ PKDPC Dpc,
+ PVOID DeferredContext,
+ PVOID SystemArgument1,
+ PVOID SystemArgument2
+);
+
+KIRQL
+inline
+FASTCALL
+KeAcquireDispatcherDatabaseLock(VOID);
+
+VOID
+__inline
+FASTCALL
+KeAcquireDispatcherDatabaseLockAtDpcLevel(VOID);
+
+VOID
+__inline
+FASTCALL
+KeReleaseDispatcherDatabaseLock(KIRQL Irql);
+
+VOID
+__inline
+FASTCALL
+KeReleaseDispatcherDatabaseLockFromDpcLevel(VOID);
VOID
STDCALL
-KeInitializeThread(struct _KPROCESS* Process,
- PKTHREAD Thread,
- PKSYSTEM_ROUTINE SystemRoutine,
- PKSTART_ROUTINE StartRoutine,
- PVOID StartContext,
- PCONTEXT Context,
- PVOID Teb,
- PVOID KernelStack);
+KeInitializeThread(
+ struct _KPROCESS* Process,
+ PKTHREAD Thread,
+ PKSYSTEM_ROUTINE SystemRoutine,
+ PKSTART_ROUTINE StartRoutine,
+ PVOID StartContext,
+ PCONTEXT Context,
+ PVOID Teb,
+ PVOID KernelStack
+);
VOID
STDCALL
KeRundownThread(VOID);
-NTSTATUS KeReleaseThread(PKTHREAD Thread);
+NTSTATUS
+NTAPI
+KeReleaseThread(PKTHREAD Thread);
LONG
STDCALL
VOID
STDCALL
-KiSetPriorityThread(PKTHREAD Thread,
- KPRIORITY Priority,
- PBOOLEAN Released);
+KiSetPriorityThread(
+ PKTHREAD Thread,
+ KPRIORITY Priority,
+ PBOOLEAN Released
+);
+
+BOOLEAN
+NTAPI
+KiDispatcherObjectWake(
+ DISPATCHER_HEADER* hdr,
+ KPRIORITY increment
+);
VOID
STDCALL
-KeStackAttachProcess (
- IN struct _KPROCESS* Process,
- OUT PKAPC_STATE ApcState
- );
+KeExpireTimers(
+ PKDPC Apc,
+ PVOID Arg1,
+ PVOID Arg2,
+ PVOID Arg3
+);
VOID
-STDCALL
-KeUnstackDetachProcess (
- IN PKAPC_STATE ApcState
- );
+__inline
+FASTCALL
+KeInitializeDispatcherHeader(
+ DISPATCHER_HEADER* Header,
+ ULONG Type,
+ ULONG Size,
+ ULONG SignalState
+);
+
+VOID
+NTAPI
+KeDumpStackFrames(PULONG Frame);
-BOOLEAN KiDispatcherObjectWake(DISPATCHER_HEADER* hdr, KPRIORITY increment);
-VOID STDCALL KeExpireTimers(PKDPC Apc,
- PVOID Arg1,
- PVOID Arg2,
- PVOID Arg3);
-VOID inline FASTCALL KeInitializeDispatcherHeader(DISPATCHER_HEADER* Header, ULONG Type,
- ULONG Size, ULONG SignalState);
-VOID KeDumpStackFrames(PULONG Frame);
-BOOLEAN KiTestAlert(VOID);
+BOOLEAN
+NTAPI
+KiTestAlert(VOID);
VOID
FASTCALL
-KiAbortWaitThread(PKTHREAD Thread,
- NTSTATUS WaitStatus,
- KPRIORITY Increment);
+KiAbortWaitThread(
+ PKTHREAD Thread,
+ NTSTATUS WaitStatus,
+ KPRIORITY Increment
+);
VOID
STDCALL
-KeInitializeProcess(struct _KPROCESS *Process,
- KPRIORITY Priority,
- KAFFINITY Affinity,
- LARGE_INTEGER DirectoryTableBase);
+KeInitializeProcess(
+ struct _KPROCESS *Process,
+ KPRIORITY Priority,
+ KAFFINITY Affinity,
+ LARGE_INTEGER DirectoryTableBase
+);
ULONG
STDCALL
STDCALL
KeDisableThreadApcQueueing(IN PKTHREAD Thread);
-BOOLEAN STDCALL KiInsertTimer(PKTIMER Timer, LARGE_INTEGER DueTime);
+BOOLEAN
+STDCALL
+KiInsertTimer(
+ PKTIMER Timer,
+ LARGE_INTEGER DueTime
+);
+
+VOID
+inline
+FASTCALL
+KiSatisfyObjectWait(
+ PDISPATCHER_HEADER Object,
+ PKTHREAD Thread
+);
-VOID inline FASTCALL KiSatisfyObjectWait(PDISPATCHER_HEADER Object, PKTHREAD Thread);
+BOOLEAN
+inline
+FASTCALL
+KiIsObjectSignaled(
+ PDISPATCHER_HEADER Object,
+ PKTHREAD Thread
+);
-BOOLEAN inline FASTCALL KiIsObjectSignaled(PDISPATCHER_HEADER Object, PKTHREAD Thread);
+VOID
+inline
+FASTCALL
+KiSatisifyMultipleObjectWaits(PKWAIT_BLOCK WaitBlock);
-VOID inline FASTCALL KiSatisifyMultipleObjectWaits(PKWAIT_BLOCK WaitBlock);
+VOID
+FASTCALL
+KiWaitTest(
+ PDISPATCHER_HEADER Object,
+ KPRIORITY Increment
+);
-VOID FASTCALL KiWaitTest(PDISPATCHER_HEADER Object, KPRIORITY Increment);
+PULONG
+NTAPI
+KeGetStackTopThread(struct _ETHREAD* Thread);
+
+BOOLEAN
+STDCALL
+KeContextToTrapFrame(
+ PCONTEXT Context,
+ PKEXCEPTION_FRAME ExeptionFrame,
+ PKTRAP_FRAME TrapFrame,
+ KPROCESSOR_MODE PreviousMode
+);
+
+VOID
+STDCALL
+KiDeliverApc(
+ KPROCESSOR_MODE PreviousMode,
+ PVOID Reserved,
+ PKTRAP_FRAME TrapFrame
+);
-PULONG KeGetStackTopThread(struct _ETHREAD* Thread);
-BOOLEAN STDCALL KeContextToTrapFrame(PCONTEXT Context,
- PKEXCEPTION_FRAME ExeptionFrame,
- PKTRAP_FRAME TrapFrame,
- KPROCESSOR_MODE PreviousMode);
-VOID STDCALL KiDeliverApc(KPROCESSOR_MODE PreviousMode,
- PVOID Reserved,
- PKTRAP_FRAME TrapFrame);
VOID
STDCALL
KiKernelApcDeliveryCheck(VOID);
+
LONG
STDCALL
-KiInsertQueue(IN PKQUEUE Queue,
- IN PLIST_ENTRY Entry,
- BOOLEAN Head);
+KiInsertQueue(
+ IN PKQUEUE Queue,
+ IN PLIST_ENTRY Entry,
+ BOOLEAN Head
+);
ULONG
STDCALL
-KeSetProcess(struct _KPROCESS* Process,
- KPRIORITY Increment);
-
+KeSetProcess(
+ struct _KPROCESS* Process,
+ KPRIORITY Increment
+);
-VOID STDCALL KeInitializeEventPair(PKEVENT_PAIR EventPair);
+VOID
+STDCALL
+KeInitializeEventPair(PKEVENT_PAIR EventPair);
-VOID STDCALL KiInitializeUserApc(IN PKEXCEPTION_FRAME Reserved,
- IN PKTRAP_FRAME TrapFrame,
- IN PKNORMAL_ROUTINE NormalRoutine,
- IN PVOID NormalContext,
- IN PVOID SystemArgument1,
- IN PVOID SystemArgument2);
+VOID
+STDCALL
+KiInitializeUserApc(
+ IN PKEXCEPTION_FRAME Reserved,
+ IN PKTRAP_FRAME TrapFrame,
+ IN PKNORMAL_ROUTINE NormalRoutine,
+ IN PVOID NormalContext,
+ IN PVOID SystemArgument1,
+ IN PVOID SystemArgument2
+);
PLIST_ENTRY
STDCALL
-KeFlushQueueApc(IN PKTHREAD Thread,
- IN KPROCESSOR_MODE PreviousMode);
-
+KeFlushQueueApc(
+ IN PKTHREAD Thread,
+ IN KPROCESSOR_MODE PreviousMode
+);
-VOID STDCALL KiAttachProcess(struct _KTHREAD *Thread, struct _KPROCESS *Process, KIRQL ApcLock, struct _KAPC_STATE *SavedApcState);
+VOID
+STDCALL
+KiAttachProcess(
+ struct _KTHREAD *Thread,
+ struct _KPROCESS *Process,
+ KIRQL ApcLock,
+ struct _KAPC_STATE *SavedApcState
+);
-VOID STDCALL KiSwapProcess(struct _KPROCESS *NewProcess, struct _KPROCESS *OldProcess);
+VOID
+STDCALL
+KiSwapProcess(
+ struct _KPROCESS *NewProcess,
+ struct _KPROCESS *OldProcess
+);
BOOLEAN
STDCALL
KeTestAlertThread(IN KPROCESSOR_MODE AlertMode);
-BOOLEAN STDCALL KeRemoveQueueApc (PKAPC Apc);
-VOID FASTCALL KiWakeQueue(IN PKQUEUE Queue);
-PLIST_ENTRY STDCALL KeRundownQueue(IN PKQUEUE Queue);
+BOOLEAN
+STDCALL
+KeRemoveQueueApc(PKAPC Apc);
-extern LARGE_INTEGER SystemBootTime;
+VOID
+FASTCALL
+KiWakeQueue(IN PKQUEUE Queue);
+
+PLIST_ENTRY
+STDCALL
+KeRundownQueue(IN PKQUEUE Queue);
/* INITIALIZATION FUNCTIONS *************************************************/
-extern ULONG_PTR KERNEL_BASE;
+VOID
+NTAPI
+KeInitExceptions(VOID);
+
+VOID
+NTAPI
+KeInitInterrupts(VOID);
+
+VOID
+NTAPI
+KeInitTimer(VOID);
+
+VOID
+NTAPI
+KeInitDpc(struct _KPRCB* Prcb);
+
+VOID
+NTAPI
+KeInitDispatcher(VOID);
+
+VOID
+__inline
+FASTCALL
+KeInitializeDispatcher(VOID);
-VOID KeInitExceptions(VOID);
-VOID KeInitInterrupts(VOID);
-VOID KeInitTimer(VOID);
-VOID KeInitDpc(struct _KPRCB* Prcb);
-VOID KeInitDispatcher(VOID);
-VOID inline FASTCALL KeInitializeDispatcher(VOID);
-VOID KiInitializeSystemClock(VOID);
-VOID KiInitializeBugCheck(VOID);
-VOID Phase1Initialization(PVOID Context);
+VOID
+NTAPI
+KiInitializeSystemClock(VOID);
-VOID KeInit1(PCHAR CommandLine, PULONG LastKernelAddress);
-VOID KeInit2(VOID);
+VOID
+NTAPI
+KiInitializeBugCheck(VOID);
-BOOLEAN KiDeliverUserApc(PKTRAP_FRAME TrapFrame);
+VOID
+NTAPI
+Phase1Initialization(PVOID Context);
+
+VOID
+NTAPI
+KeInit1(
+ PCHAR CommandLine,
+ PULONG LastKernelAddress
+);
+
+VOID
+NTAPI
+KeInit2(VOID);
+
+BOOLEAN
+NTAPI
+KiDeliverUserApc(PKTRAP_FRAME TrapFrame);
VOID
STDCALL
-KiMoveApcState (PKAPC_STATE OldState,
- PKAPC_STATE NewState);
+KiMoveApcState(
+ PKAPC_STATE OldState,
+ PKAPC_STATE NewState
+);
VOID
-KiAddProfileEvent(KPROFILE_SOURCE Source, ULONG Pc);
+NTAPI
+KiAddProfileEvent(
+ KPROFILE_SOURCE Source,
+ ULONG Pc
+);
+
VOID
NTAPI
-KiDispatchException(PEXCEPTION_RECORD ExceptionRecord,
- PKEXCEPTION_FRAME ExceptionFrame,
- PKTRAP_FRAME Tf,
- KPROCESSOR_MODE PreviousMode,
- BOOLEAN SearchFrames);
+KiDispatchException(
+ PEXCEPTION_RECORD ExceptionRecord,
+ PKEXCEPTION_FRAME ExceptionFrame,
+ PKTRAP_FRAME Tf,
+ KPROCESSOR_MODE PreviousMode,
+ BOOLEAN SearchFrames
+);
+
VOID
NTAPI
-KeTrapFrameToContext(IN PKTRAP_FRAME TrapFrame,
- IN PKEXCEPTION_FRAME ExceptionFrame,
- IN OUT PCONTEXT Context);
+KeTrapFrameToContext(
+ IN PKTRAP_FRAME TrapFrame,
+ IN PKEXCEPTION_FRAME ExceptionFrame,
+ IN OUT PCONTEXT Context
+);
+
VOID
+NTAPI
KeApplicationProcessorInit(VOID);
+
VOID
+NTAPI
KePrepareForApplicationProcessorInit(ULONG id);
+
ULONG
-KiUserTrapHandler(PKTRAP_FRAME Tf, ULONG ExceptionNr, PVOID Cr2);
-VOID STDCALL
-KePushAndStackSwitchAndSysRet(ULONG Push, PVOID NewStack);
-VOID STDCALL
+NTAPI
+KiUserTrapHandler(
+ PKTRAP_FRAME Tf,
+ ULONG ExceptionNr,
+ PVOID Cr2
+);
+
+VOID
+STDCALL
+KePushAndStackSwitchAndSysRet(
+ ULONG Push,
+ PVOID NewStack
+);
+
+VOID
+STDCALL
KeStackSwitchAndRet(PVOID NewStack);
-VOID STDCALL
-KeBugCheckWithTf(ULONG BugCheckCode,
- ULONG BugCheckParameter1,
- ULONG BugCheckParameter2,
- ULONG BugCheckParameter3,
- ULONG BugCheckParameter4,
- PKTRAP_FRAME Tf);
-#define KEBUGCHECKWITHTF(a,b,c,d,e,f) DbgPrint("KeBugCheckWithTf at %s:%i\n",__FILE__,__LINE__), KeBugCheckWithTf(a,b,c,d,e,f)
+
VOID
-KiDumpTrapFrame(PKTRAP_FRAME Tf, ULONG ExceptionNr, ULONG cr2);
+STDCALL
+KeBugCheckWithTf(
+ ULONG BugCheckCode,
+ ULONG BugCheckParameter1,
+ ULONG BugCheckParameter2,
+ ULONG BugCheckParameter3,
+ ULONG BugCheckParameter4,
+ PKTRAP_FRAME Tf
+);
VOID
STDCALL
-KeFlushCurrentTb(VOID);
+KiDumpTrapFrame(
+ PKTRAP_FRAME Tf,
+ ULONG ExceptionNr,
+ ULONG cr2
+);
-/* REACTOS SPECIFIC */
+VOID
+STDCALL
+KeFlushCurrentTb(VOID);
-VOID STDCALL
+VOID
+STDCALL
KeRosDumpStackFrames(
- PULONG Frame,
- ULONG FrameCount);
+ PULONG Frame,
+ ULONG FrameCount
+);
-ULONG STDCALL
+ULONG
+STDCALL
KeRosGetStackFrames(
- PULONG Frames,
- ULONG FrameCount);
-
+ PULONG Frames,
+ ULONG FrameCount
+);
+
VOID
+NTAPI
KiSetSystemTime(PLARGE_INTEGER NewSystemTime);
-/* Emulate cli/sti instructions */
-#define KV86M_EMULATE_CLI_STI (0x1)
-/* Allow the v86 mode code to access i/o ports */
-#define KV86M_ALLOW_IO_PORT_ACCESS (0x2)
-
-typedef struct _KV86M_REGISTERS
-{
- /*
- * General purpose registers
- */
- ULONG Ebp;
- ULONG Edi;
- ULONG Esi;
- ULONG Edx;
- ULONG Ecx;
- ULONG Ebx;
- ULONG Eax;
- ULONG Ds;
- ULONG Es;
- ULONG Fs;
- ULONG Gs;
-
- /*
- * Control registers
- */
- ULONG Eip;
- ULONG Cs;
- ULONG Eflags;
- ULONG Esp;
- ULONG Ss;
-
- /*
- * Control structures
- */
- ULONG RecoveryAddress;
- UCHAR RecoveryInstruction[4];
- ULONG Vif;
- ULONG Flags;
- PNTSTATUS PStatus;
-} KV86M_REGISTERS, *PKV86M_REGISTERS;
-
-typedef struct _KV86M_TRAP_FRAME
-{
- KTRAP_FRAME Tf;
-
- ULONG SavedExceptionStack;
-
- /*
- * These are put on the top of the stack by the routine that entered
- * v86 mode so the exception handlers can find the control information
- */
- struct _KV86M_REGISTERS* regs;
- ULONG orig_ebp;
-} KV86M_TRAP_FRAME, *PKV86M_TRAP_FRAME;
-
NTSTATUS
STDCALL
Ke386CallBios(
- UCHAR Int,
+ UCHAR Int,
PKV86M_REGISTERS Regs
);
ULONG
+NTAPI
KeV86Exception(
- ULONG ExceptionNr,
- PKTRAP_FRAME Tf,
+ ULONG ExceptionNr,
+ PKTRAP_FRAME Tf,
ULONG address
);
-#define MAXIMUM_PROCESSORS 32
-
#endif /* __NTOSKRNL_INCLUDE_INTERNAL_KE_H */
#ifndef __INCLUDE_INTERNAL_LDR_H
#define __INCLUDE_INTERNAL_LDR_H
-#define KERNEL_MODULE_NAME L"ntoskrnl.exe"
-#define HAL_MODULE_NAME L"hal.dll"
-#define DRIVER_ROOT_NAME L"\\Driver\\"
-#define FILESYSTEM_ROOT_NAME L"\\FileSystem\\"
+#define KERNEL_MODULE_NAME L"ntoskrnl.exe"
+#define HAL_MODULE_NAME L"hal.dll"
+#define DRIVER_ROOT_NAME L"\\Driver\\"
+#define FILESYSTEM_ROOT_NAME L"\\FileSystem\\"
extern ULONG_PTR LdrHalBase;
NTSTATUS
+NTAPI
LdrLoadInitialProcess(
PHANDLE ProcessHandle,
PHANDLE ThreadHandle
);
VOID
-LdrLoadAutoConfigDrivers (VOID);
+NTAPI
+LdrLoadAutoConfigDrivers(VOID);
VOID
-LdrInitModuleManagement (VOID);
+NTAPI
+LdrInitModuleManagement(VOID);
NTSTATUS
+NTAPI
LdrpMapImage(
- HANDLE ProcessHandle,
- HANDLE SectionHandle,
- PVOID * ImageBase
+ HANDLE ProcessHandle,
+ HANDLE SectionHandle,
+ PVOID *ImageBase
);
NTSTATUS
+NTAPI
LdrpLoadImage(
PUNICODE_STRING DriverName,
PVOID *ModuleBase,
);
NTSTATUS
+NTAPI
LdrpUnloadImage(PVOID ModuleBase);
NTSTATUS
+NTAPI
LdrpLoadAndCallImage(PUNICODE_STRING DriverName);
NTSTATUS
+NTAPI
LdrpQueryModuleInformation(
PVOID Buffer,
ULONG Size,
);
VOID
+NTAPI
LdrInit1(VOID);
VOID
+NTAPI
LdrInitDebug(
- PLOADER_MODULE Module,
+ PLOADER_MODULE Module,
PWCH Name
);
PVOID
+NTAPI
LdrSafePEProcessModule(
PVOID ModuleLoadBase,
PVOID DriverBase,
);
NTSTATUS
+NTAPI
LdrLoadModule(
PUNICODE_STRING Filename,
PLDR_DATA_TABLE_ENTRY *ModuleObject
);
NTSTATUS
+NTAPI
LdrUnloadModule(PLDR_DATA_TABLE_ENTRY ModuleObject);
PLDR_DATA_TABLE_ENTRY
+NTAPI
LdrGetModuleObject(PUNICODE_STRING ModuleName);
#endif /* __INCLUDE_INTERNAL_LDR_H */
#include "ldr.h"
#include "kd.h"
#include "ex.h"
-#include "xhal.h"
-#include "v86m.h"
-#include "fs.h"
-#include "port.h"
+#include "fsrtl.h"
+#include "lpc.h"
#include "rtl.h"
#ifdef KDBG
#include "../kdbg/kdb.h"
+++ /dev/null
-/*
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS Kernel
- * FILE: ntoskrnl/include/internal/v86m.h
- * PURPOSE: V86 Headers
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- */
-
-/* INCLUDES ******************************************************************/
-#ifndef __NTOSKRNL_INCLUDE_INTERNAL_V86M_H
-#define __NTOSKRNL_INCLUDE_INTERNAL_V86M_H
-
-
-
-#endif /* __NTOSKRNL_INCLUDE_INTERNAL_V86M_H */
+++ /dev/null
-/*
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS Kernel
- * FILE: ntoskrnl/include/internal/xhal.h
- * PURPOSE: HAL Callbacks
- * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
- */
-
-/* INCLUDES ******************************************************************/
-#ifndef __INCLUDE_INTERNAL_XHAL_H
-#define __INCLUDE_INTERNAL_XHAL_H
-
-#include <ddk/ntdddisk.h>
-
-NTSTATUS
-FASTCALL
-xHalQueryDriveLayout(
- IN PUNICODE_STRING DeviceName,
- OUT PDRIVE_LAYOUT_INFORMATION *LayoutInfo
-);
-
-#undef HalExamineMBR
-VOID
-FASTCALL
-HalExamineMBR(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG MBRTypeIdentifier,
- OUT PVOID *Buffer
-);
-
-VOID
-FASTCALL
-xHalIoAssignDriveLetters(
- IN PLOADER_PARAMETER_BLOCK LoaderBlock,
- IN PSTRING NtDeviceName,
- OUT PUCHAR NtSystemPath,
- OUT PSTRING NtSystemPathString
-);
-
-NTSTATUS
-FASTCALL
-xHalIoReadPartitionTable(
- PDEVICE_OBJECT DeviceObject,
- ULONG SectorSize,
- BOOLEAN ReturnRecognizedPartitions,
- PDRIVE_LAYOUT_INFORMATION *PartitionBuffer
-);
-
-NTSTATUS
-FASTCALL
-xHalIoSetPartitionInformation(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG PartitionNumber,
- IN ULONG PartitionType
-);
-
-NTSTATUS
-FASTCALL
-xHalIoWritePartitionTable(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG SectorsPerTrack,
- IN ULONG NumberOfHeads,
- IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer
-);
-
-#endif
VOID
INIT_FUNCTION
+NTAPI
KiInitializeBugCheck(VOID)
{
PRTL_MESSAGE_RESOURCE_DATA BugCheckData;
*/
VOID
INIT_FUNCTION
+NTAPI
KiInitializeSystemClock(VOID)
{
TIME_FIELDS TimeFields;
}
VOID
+NTAPI
KiSetSystemTime(PLARGE_INTEGER NewSystemTime)
{
LARGE_INTEGER OldSystemTime;
*/
VOID
INIT_FUNCTION
+NTAPI
KeInitDpc(PKPRCB Prcb)
{
InitializeListHead(&Prcb->DpcData[0].DpcListHead);
}
VOID
+NTAPI
KiDumpTrapFrame(PKTRAP_FRAME Tf, ULONG Parameter1, ULONG Parameter2)
{
ULONG cr3_;
}
VOID
+NTAPI
KeDumpStackFrames(PULONG Frame)
{
PULONG StackBase, StackEnd;
KiIdt[sel].b = 0x8500;
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
KeInitExceptions(VOID)
/*
* FUNCTION: Initalize CPU exception handling
#define PRESENT (0x8000)
#define I486_INTERRUPT_GATE (0xe00)
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
KeInitInterrupts (VOID)
{
int i, j;
Id, IdleThread->Cid.UniqueThread);
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
KePrepareForApplicationProcessorInit(ULONG Id)
{
DPRINT("KePrepareForApplicationProcessorInit(Id %d)\n", Id);
}
VOID
+NTAPI
KeApplicationProcessorInit(VOID)
{
ULONG Offset;
Ke386EnableInterrupts();
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
KeInit1(PCHAR CommandLine, PULONG LastKernelAddress)
{
PKIPCR KPCR;
}
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
KeInit2(VOID)
{
PKIPCR Pcr = (PKIPCR)KeGetCurrentKPCR();
}
ULONG
+NTAPI
KiUserTrapHandler(PKTRAP_FRAME Tf, ULONG ExceptionNr, PVOID Cr2)
{
EXCEPTION_RECORD Er;
}
ULONG
+NTAPI
KeV86Exception(ULONG ExceptionNr, PKTRAP_FRAME Tf, ULONG address)
{
PUCHAR Ip;
/* FUNCTIONS *****************************************************************/
VOID
+NTAPI
KiIpiSendRequest(KAFFINITY TargetSet, ULONG IpiRequest)
{
LONG i;
Prcb = KeGetCurrentPrcb();
- if (Ke386TestAndClearBit(IPI_REQUEST_APC, &Prcb->IpiFrozen))
+ if (Ke386TestAndClearBit(IPI_APC, &Prcb->IpiFrozen))
{
HalRequestSoftwareInterrupt(APC_LEVEL);
}
- if (Ke386TestAndClearBit(IPI_REQUEST_DPC, &Prcb->IpiFrozen))
+ if (Ke386TestAndClearBit(IPI_DPC, &Prcb->IpiFrozen))
{
Prcb->DpcInterruptRequested = TRUE;
HalRequestSoftwareInterrupt(DISPATCH_LEVEL);
}
- if (Ke386TestAndClearBit(IPI_REQUEST_FUNCTIONCALL, &Prcb->IpiFrozen))
+ if (Ke386TestAndClearBit(IPI_SYNCH_REQUEST, &Prcb->IpiFrozen))
{
InterlockedDecrementUL(&Prcb->SignalDone->CurrentPacket[1]);
if (InterlockedCompareExchangeUL(&Prcb->SignalDone->CurrentPacket[2], 0, 0))
{
Prcb = ((PKPCR)(KPCR_BASE + i * PAGE_SIZE))->Prcb;
while(0 != InterlockedCompareExchangeUL(&Prcb->SignalDone, (LONG)CurrentPrcb, 0));
- Ke386TestAndSetBit(IPI_REQUEST_FUNCTIONCALL, &Prcb->IpiFrozen);
+ Ke386TestAndSetBit(IPI_SYNCH_REQUEST, &Prcb->IpiFrozen);
if (Processor != CurrentPrcb->SetMember)
{
HalRequestIpi(i);
}
VOID
+NTAPI
KeIpiGenericCall(VOID (STDCALL *Function)(PVOID), PVOID Argument)
{
KIRQL oldIrql;
Pcr = (PKPCR)(KPCR_BASE + Processor * PAGE_SIZE);
Pcr->Prcb->QuantumEnd = TRUE;
- KiIpiSendRequest(1 << Processor, IPI_REQUEST_DPC);
+ KiIpiSendRequest(1 << Processor, IPI_DPC);
}
STATIC
/* FUNCTIONS *****************************************************************/
VOID
+NTAPI
LdrInitDebug ( PLOADER_MODULE Module, PWCH Name )
{
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
LdrInit1 ( VOID )
{
/* Hook for KDB on initialization of the loader. */
KDB_LOADERINIT_HOOK(&NtoskrnlModuleObject, &HalModuleObject);
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
LdrInitModuleManagement ( VOID )
{
PIMAGE_NT_HEADERS NtHeader;
}
NTSTATUS
+NTAPI
LdrpLoadImage (
PUNICODE_STRING DriverName,
PVOID *ModuleBase,
NTSTATUS
+NTAPI
LdrpUnloadImage ( PVOID ModuleBase )
{
return(STATUS_NOT_IMPLEMENTED);
NTSTATUS
+NTAPI
LdrpLoadAndCallImage ( PUNICODE_STRING ModuleName )
{
PDRIVER_INITIALIZE DriverEntry;
NTSTATUS
+NTAPI
LdrLoadModule(
PUNICODE_STRING Filename,
PLDR_DATA_TABLE_ENTRY *ModuleObject )
NTSTATUS
+NTAPI
LdrUnloadModule ( PLDR_DATA_TABLE_ENTRY ModuleObject )
{
KIRQL Irql;
}
NTSTATUS
+NTAPI
LdrpQueryModuleInformation (
PVOID Buffer,
ULONG Size,
}
PLDR_DATA_TABLE_ENTRY
+NTAPI
LdrGetModuleObject ( PUNICODE_STRING ModuleName )
{
PLDR_DATA_TABLE_ENTRY Module;
}
-PVOID INIT_FUNCTION
+PVOID
+INIT_FUNCTION
+NTAPI
LdrSafePEProcessModule (
PVOID ModuleLoadBase,
PVOID DriverBase,