C to C++ migration and refactoring #17

Merged
harraiken merged 67 commits from cxxtest into master 2025-09-24 20:18:35 +02:00
31 changed files with 33 additions and 2610 deletions
Showing only changes of commit f4561c1f4f - Show all commits

View File

@@ -43,7 +43,7 @@ AR::ProcSup::IdentifyProcessor(VOID)
UNIMPLEMENTED;
/* Get current processor control block */
Prcb = KeGetCurrentProcessorControlBlock();
Prcb = KE::Processor::GetCurrentProcessorControlBlock();
/* Get CPU vendor by issueing CPUID instruction */
RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS));

View File

@@ -43,7 +43,7 @@ AR::ProcSup::IdentifyProcessor(VOID)
UNIMPLEMENTED;
/* Get current processor control block */
Prcb = KeGetCurrentProcessorControlBlock();
Prcb = KE::Processor::GetCurrentProcessorControlBlock();
/* Get CPU vendor by issueing CPUID instruction */
RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS));

View File

@@ -43,5 +43,5 @@ HL::Cpu::InitializeProcessor(VOID)
Pic::InitializePic();
/* Set the APIC running level */
HL::RunLevel::SetRunLevel(KeGetCurrentProcessorBlock()->RunLevel);
HL::RunLevel::SetRunLevel(KE::Processor::GetCurrentProcessorBlock()->RunLevel);
}

View File

@@ -1,442 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/amd64/ari.h
* DESCRIPTION: AMD64 architecture library routines
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_AMD64_ARI_H
#define __XTOSKRNL_AMD64_ARI_H
#include <xtos.h>
/* AMD64 architecture library routines forward references */
XTCDECL
VOID
ArClearInterruptFlag(VOID);
XTCDECL
BOOLEAN
ArCpuId(IN OUT PCPUID_REGISTERS Registers);
XTCDECL
VOID
ArFlushTlb(VOID);
XTAPI
PVOID
ArGetBootStack(VOID);
XTCDECL
ULONG
ArGetCpuFlags(VOID);
XTASSEMBLY
XTCDECL
ULONG_PTR
ArGetStackPointer(VOID);
XTCDECL
VOID
ArHalt(VOID);
XTAPI
VOID
ArInitializeProcessor(IN PVOID ProcessorStructures);
XTCDECL
BOOLEAN
ArInterruptsEnabled(VOID);
XTCDECL
VOID
ArInvalidateTlbEntry(IN PVOID Address);
XTCDECL
VOID
ArLoadGlobalDescriptorTable(IN PVOID Source);
XTCDECL
VOID
ArLoadInterruptDescriptorTable(IN PVOID Source);
XTCDECL
VOID
ArLoadLocalDescriptorTable(IN USHORT Source);
XTCDECL
VOID
ArLoadMxcsrRegister(IN ULONG Source);
XTCDECL
VOID
ArLoadSegment(IN USHORT Segment,
IN ULONG Source);
XTCDECL
VOID
ArLoadTaskRegister(IN USHORT Source);
XTCDECL
VOID
ArMemoryBarrier(VOID);
XTCDECL
ULONG_PTR
ArReadControlRegister(IN USHORT ControlRegister);
XTCDECL
ULONG_PTR
ArReadDebugRegister(IN USHORT DebugRegister);
XTCDECL
ULONGLONG
ArReadGSQuadWord(IN ULONG Offset);
XTCDECL
ULONGLONG
ArReadModelSpecificRegister(IN ULONG Register);
XTCDECL
UINT
ArReadMxCsrRegister(VOID);
XTCDECL
ULONGLONG
ArReadTimeStampCounter(VOID);
XTCDECL
VOID
ArReadWriteBarrier(VOID);
XTAPI
VOID
ArSetGdtEntryBase(IN PKGDTENTRY Gdt,
IN USHORT Selector,
IN ULONG_PTR Base);
XTCDECL
VOID
ArSetInterruptFlag(VOID);
XTCDECL
VOID
ArStoreGlobalDescriptorTable(OUT PVOID Destination);
XTCDECL
VOID
ArStoreInterruptDescriptorTable(OUT PVOID Destination);
XTCDECL
VOID
ArStoreLocalDescriptorTable(OUT PVOID Destination);
XTCDECL
VOID
ArStoreSegment(IN USHORT Segment,
OUT PVOID Destination);
XTCDECL
VOID
ArStoreTaskRegister(OUT PVOID Destination);
XTCDECL
VOID
ArWriteControlRegister(IN USHORT ControlRegister,
IN UINT_PTR Value);
XTCDECL
VOID
ArWriteDebugRegister(IN USHORT DebugRegister,
IN UINT_PTR Value);
XTCDECL
VOID
ArWriteEflagsRegister(IN UINT_PTR Value);
XTCDECL
VOID
ArWriteModelSpecificRegister(IN ULONG Register,
IN ULONGLONG Value);
XTCDECL
VOID
ArYieldProcessor(VOID);
XTCDECL
VOID
ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleSystemCall32(VOID);
XTCDECL
VOID
ArpHandleSystemCall64(VOID);
XTCDECL
VOID
ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap1F(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2F(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapE1(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapFF(IN PKTRAP_FRAME TrapFrame);
XTAPI
VOID
ArpIdentifyProcessor(VOID);
XTAPI
VOID
ArpInitializeGdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
XTAPI
VOID
ArpInitializeIdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
XTAPI
VOID
ArpInitializeProcessorBlock(OUT PKPROCESSOR_BLOCK ProcessorBlock,
IN PKGDTENTRY Gdt,
IN PKIDTENTRY Idt,
IN PKTSS Tss,
IN PVOID DpcStack);
XTAPI
VOID
ArpInitializeProcessorRegisters(VOID);
XTAPI
VOID
ArpInitializeProcessorStructures(IN PVOID ProcessorStructures,
OUT PKGDTENTRY *Gdt,
OUT PKTSS *Tss,
OUT PKPROCESSOR_BLOCK *ProcessorBlock,
OUT PVOID *KernelBootStack,
OUT PVOID *KernelFaultStack);
XTAPI
VOID
ArpInitializeSegments(VOID);
XTAPI
VOID
ArpInitializeTss(IN PKPROCESSOR_BLOCK ProcessorBlock,
IN PVOID KernelBootStack,
IN PVOID KernelFaultStack);
XTAPI
VOID
ArpSetGdtEntry(IN PKGDTENTRY Gdt,
IN USHORT Selector,
IN ULONG_PTR Base,
IN ULONG Limit,
IN UCHAR Type,
IN UCHAR Dpl,
IN UCHAR SegmentMode);
XTAPI
VOID
ArpSetIdtGate(IN PKIDTENTRY Idt,
IN USHORT Vector,
IN PVOID Handler,
IN USHORT Selector,
IN USHORT Ist,
IN USHORT Access);
XTCDECL
VOID
ArpTrap0x00(VOID);
XTCDECL
VOID
ArpTrap0x01(VOID);
XTCDECL
VOID
ArpTrap0x02(VOID);
XTCDECL
VOID
ArpTrap0x03(VOID);
XTCDECL
VOID
ArpTrap0x04(VOID);
XTCDECL
VOID
ArpTrap0x05(VOID);
XTCDECL
VOID
ArpTrap0x06(VOID);
XTCDECL
VOID
ArpTrap0x07(VOID);
XTCDECL
VOID
ArpTrap0x08(VOID);
XTCDECL
VOID
ArpTrap0x09(VOID);
XTCDECL
VOID
ArpTrap0x0A(VOID);
XTCDECL
VOID
ArpTrap0x0B(VOID);
XTCDECL
VOID
ArpTrap0x0C(VOID);
XTCDECL
VOID
ArpTrap0x0D(VOID);
XTCDECL
VOID
ArpTrap0x0E(VOID);
XTCDECL
VOID
ArpTrap0x10(VOID);
XTCDECL
VOID
ArpTrap0x11(VOID);
XTCDECL
VOID
ArpTrap0x12(VOID);
XTCDECL
VOID
ArpTrap0x13(VOID);
XTCDECL
VOID
ArpTrap0x1F(VOID);
XTCDECL
VOID
ArpTrap0x2C(VOID);
XTCDECL
VOID
ArpTrap0x2D(VOID);
XTCDECL
VOID
ArpTrap0x2F(VOID);
XTCDECL
VOID
ArpTrap0xE1(VOID);
XTCDECL
VOID
ArpTrap0xFF(VOID);
#endif /* __XTOSKRNL_AMD64_ARI_H */

View File

@@ -1,64 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/amd64/asm.h
* DESCRIPTION: AMD64 architecture assembly definitions
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_AMD64_ASMSUP_H
#define __XTOSKRNL_AMD64_ASMSUP_H
/* Control Register bit definitions */
#define CR0_PG 0x80000000
#define CR4_PGE 0x00000080
#define CR4_LA57 0x00001000
#define CR4_PCIDE 0x00020000
/* GDT selectors */
#define GDT_R0_CMCODE 0x08
#define GDT_R0_CODE 0x10
#define GDT_R0_DATA 0x18
/* MSR registers */
#define X86_MSR_EFER 0xC0000080
#define X86_MSR_EFER_LME (1 << 8)
/* KTRAP_FRAME structure offsets */
#define TrapXmm0 0
#define TrapXmm1 16
#define TrapXmm2 32
#define TrapXmm3 48
#define TrapXmm4 64
#define TrapXmm5 80
#define TrapXmm6 96
#define TrapXmm7 112
#define TrapXmm8 128
#define TrapXmm9 144
#define TrapXmm10 160
#define TrapXmm11 176
#define TrapXmm12 192
#define TrapXmm13 208
#define TrapXmm14 224
#define TrapXmm15 240
#define TrapMxCsr 256
#define TrapPreviousMode 260
#define TrapCr2 264
#define TrapCr3 272
#define TrapDr0 280
#define TrapDr1 288
#define TrapDr2 296
#define TrapDr3 304
#define TrapDr6 312
#define TrapDr7 320
#define TrapSegDs 328
#define TrapSegEs 330
#define TrapSegFs 332
#define TrapSegGs 334
/* KTRAP_FRAME length related definitions */
#define TRAP_FRAME_SIZE 512
#define TRAP_REGISTERS_SIZE 176
#endif /* __XTOSKRNL_AMD64_ASMSUP_H */

View File

@@ -1,39 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/amd64/globals.h
* DESCRIPTION: XT kernel global variables related to AMD64 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_AMD64_GLOBALS_H
#define __XTOSKRNL_AMD64_GLOBALS_H
#include <xtos.h>
/* Initial GDT */
EXTERN KGDTENTRY ArInitialGdt[GDT_ENTRIES];
/* Initial IDT */
EXTERN KIDTENTRY ArInitialIdt[IDT_ENTRIES];
/* Initial Processor Block */
EXTERN KPROCESSOR_BLOCK ArInitialProcessorBlock;
/* Initial TSS */
EXTERN KTSS ArInitialTss;
/* Kernel own boot stack */
EXTERN UCHAR ArKernelBootStack[KERNEL_STACK_SIZE];
/* Kernel own fault stack */
EXTERN UCHAR ArKernelFaultStack[KERNEL_STACK_SIZE];
/* Page mapping routines for systems using 4-level paging (PML4) */
EXTERN CMMPAGEMAP_ROUTINES MmpPml4Routines;
/* Page mapping routines for systems using 5-level paging (PML5) */
EXTERN CMMPAGEMAP_ROUTINES MmpPml5Routines;
#endif /* __XTOSKRNL_AMD64_GLOBALS_H */

View File

@@ -1,74 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/amd64/hli.h
* DESCRIPTION: XT hardware abstraction layer routines specific to AMD64 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_AMD64_HLI_H
#define __XTOSKRNL_AMD64_HLI_H
#include <xtos.h>
/* HAL library routines forward references */
XTAPI
VOID
HlClearApicErrors(VOID);
XTFASTCALL
ULONGLONG
HlReadApicRegister(IN APIC_REGISTER Register);
XTAPI
VOID
HlSendEoi(VOID);
XTFASTCALL
VOID
HlWriteApicRegister(IN APIC_REGISTER Register,
IN ULONGLONG Value);
XTAPI
BOOLEAN
HlpCheckX2ApicSupport(VOID);
XTAPI
ULONG
HlpGetCpuApicId(VOID);
XTCDECL
VOID
HlpHandleApicSpuriousService(VOID);
XTCDECL
VOID
HlpHandlePicSpuriousService(VOID);
XTAPI
VOID
HlpInitializeApic();
XTAPI
VOID
HlpInitializeLegacyPic(VOID);
XTAPI
VOID
HlpInitializePic();
XTAPI
VOID
HlpSendIpi(ULONG ApicId,
ULONG Vector);
XTFASTCALL
KRUNLEVEL
HlpTransformApicTprToRunLevel(IN UCHAR Tpr);
XTFASTCALL
UCHAR
HlpTransformRunLevelToApicTpr(IN KRUNLEVEL RunLevel);
#endif /* __XTOSKRNL_AMD64_HLI_H */

View File

@@ -1,60 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/amd64/kei.h
* DESCRIPTION: XTOS kernel services routine definitions specific to AMD64 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_AMD64_KEI_H
#define __XTOSKRNL_AMD64_KEI_H
#include <xtos.h>
/* AMD64 specific Kernel services routines forward references */
XTAPI
PKPROCESSOR_BLOCK
KeGetCurrentProcessorBlock(VOID);
XTAPI
PKPROCESSOR_CONTROL_BLOCK
KeGetCurrentProcessorControlBlock(VOID);
XTAPI
ULONG
KeGetCurrentProcessorNumber(VOID);
XTAPI
PKTHREAD
KeGetCurrentThread(VOID);
XTAPI
VOID
KepInitializeKernel(VOID);
XTAPI
VOID
KepInitializeMachine(VOID);
XTAPI
VOID
KepInitializeThreadContext(IN PKTHREAD Thread,
IN PKSYSTEM_ROUTINE SystemRoutine,
IN PKSTART_ROUTINE StartRoutine,
IN PVOID StartContext,
IN PCONTEXT ContextRecord);
XTAPI
VOID
KepSaveProcessorState(OUT PKPROCESSOR_STATE CpuState);
XTAPI
VOID
KepStartKernel(VOID);
XTAPI
VOID
KepSwitchBootStack();
#endif /* __XTOSKRNL_AMD64_KEI_H */

View File

@@ -1,73 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/amd64/mmi.h
* DESCRIPTION: XT memory manager routines specific to AMD64 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_AMD64_MMI_H
#define __XTOSKRNL_AMD64_MMI_H
#include <xtos.h>
/* AMD64 Memory Manager routines forward references */
XTAPI
VOID
MmInitializePageMapSupport(VOID);
XTFASTCALL
VOID
MmZeroPages(IN PVOID Address,
IN ULONG Size);
XTAPI
VOID
MmpClearPte(PHARDWARE_PTE PtePointer);
XTAPI
BOOLEAN
MmpGetExtendedPhysicalAddressingStatus(VOID);
XTAPI
PMMP5E
MmpGetP5eAddress(PVOID Address);
XTAPI
PMMPDE
MmpGetPdeAddress(PVOID Address);
XTAPI
PMMPPE
MmpGetPpeAddress(PVOID Address);
XTAPI
PMMPTE
MmpGetPteAddress(PVOID Address);
XTAPI
PMMPXE
MmpGetPxeAddress(PVOID Address);
XTAPI
VOID
MmpInitializeArchitecture(VOID);
XTAPI
BOOLEAN
MmpPteValid(PHARDWARE_PTE PtePointer);
XTAPI
VOID
MmpSetPte(PHARDWARE_PTE PtePointer,
PFN_NUMBER PageFrameNumber,
BOOLEAN Writable);
XTAPI
VOID
MmpSetPteCaching(PHARDWARE_PTE PtePointer,
BOOLEAN CacheDisable,
BOOLEAN WriteThrough);
#endif /* __XTOSKRNL_AMD64_MMI_H */

View File

@@ -1,21 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/amd64/rtli.h
* DESCRIPTION: XT runtime library routines specific to AMD64 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_AMD64_RTLI_H
#define __XTOSKRNL_AMD64_RTLI_H
#include <xtos.h>
/* Runtime Library routines specific to AMD64 forward references */
XTAPI
VOID
RtlGetStackLimits(OUT PULONG_PTR StackBase,
OUT PULONG_PTR StackLimit);
#endif /* __XTOSKRNL_AMD64_RTLI_H */

View File

@@ -1,115 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/globals.h
* DESCRIPTION: XT kernel global variables
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_GLOBALS_H
#define __XTOSKRNL_GLOBALS_H
#include <xtos.h>
/* ACPI tables cache list */
EXTERN LIST_ENTRY HlpAcpiCacheList;
/* ACPI Root System Description Pointer (RSDP) */
EXTERN PACPI_RSDP HlpAcpiRsdp;
/* ACPI timer information */
EXTERN ACPI_TIMER_INFO HlpAcpiTimerInfo;
/* Active processors count */
EXTERN KAFFINITY HlpActiveProcessors;
/* APIC mode */
EXTERN APIC_MODE HlpApicMode;
/* FrameBuffer information */
EXTERN HL_FRAMEBUFFER_DATA HlpFrameBufferData;
/* Scroll region information */
EXTERN HL_SCROLL_REGION_DATA HlpScrollRegionData;
/* System information */
EXTERN ACPI_SYSTEM_INFO HlpSystemInfo;
/* Pointer to DbgPrint() routine */
EXTERN PKD_PRINT_ROUTINE KdPrint;
/* Kernel Debugger mode */
EXTERN KD_DEBUG_MODE KdpDebugMode;
/* Debugger I/O providers initialization routines */
EXTERN PKD_INIT_ROUTINE KdpIoProvidersInitRoutines[KDBG_PROVIDERS_COUNT];
/* List of active I/O providers */
EXTERN LIST_ENTRY KdpProviders;
/* Debugger's serial port handle */
EXTERN CPPORT KdpSerialPort;
/* Pre-defined serial port addresses */
EXTERN ULONG KdpSerialPortList[COMPORT_COUNT];
/* Kernel initialization block passed by boot loader */
EXTERN PKERNEL_INITIALIZATION_BLOCK KeInitializationBlock;
/* Kernel initial process */
EXTERN EPROCESS KeInitialProcess;
/* Kernel initial thread */
EXTERN ETHREAD KeInitialThread;
/* Kernel service descriptor table */
EXTERN KSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable[KSERVICE_TABLES_COUNT];
/* Kernel process list */
EXTERN LIST_ENTRY KepProcessListHead;
/* Kernel system resources list */
EXTERN LIST_ENTRY KepSystemResourcesListHead;
/* Kernel system resources lock */
EXTERN KSPIN_LOCK KepSystemResourcesLock;
/* Kernel UBSAN active frame flag */
EXTERN BOOLEAN KepUbsanActiveFrame;
/* Biggest free memory descriptor */
EXTERN PLOADER_MEMORY_DESCRIPTOR MmFreeDescriptor;
/* Highest physical page number */
EXTERN ULONG_PTR MmHighestPhysicalPage;
/* Lowest physical page number */
EXTERN ULONG_PTR MmLowestPhysicalPage;
/* Number of physical pages */
EXTERN ULONG MmNumberOfPhysicalPages;
/* Old biggest free memory descriptor */
EXTERN LOADER_MEMORY_DESCRIPTOR MmOldFreeDescriptor;
/* Processor structures data (THIS IS A TEMPORARY HACK) */
EXTERN UCHAR MmProcessorStructuresData[MAXIMUM_PROCESSORS][KPROCESSOR_STRUCTURES_SIZE];
/* Allocation descriptors dedicated for hardware layer */
EXTERN LOADER_MEMORY_DESCRIPTOR MmpHardwareAllocationDescriptors[MM_HARDWARE_ALLOCATION_DESCRIPTORS];
/* Live address of kernel's hardware heap */
EXTERN PVOID MmpHardwareHeapStart;
/* Information about the current page map */
EXTERN MMPAGEMAP_INFO MmpPageMapInfo;
/* Pointers to page map routines for the current paging mode */
EXTERN PCMMPAGEMAP_ROUTINES MmpPageMapRoutines;
/* Number of used hardware allocation descriptors */
EXTERN ULONG MmpUsedHardwareAllocationDescriptors;
#endif /* __XTOSKRNL_GLOBALS_H */

View File

@@ -1,152 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/hli.h
* DESCRIPTION: XT hardware abstraction layer routines
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_HLI_H
#define __XTOSKRNL_HLI_H
#include <xtos.h>
/* HAL library routines forward references */
XTAPI
VOID
HlClearScreen(IN ULONG Color);
XTCDECL
XTSTATUS
HlComPortGetByte(IN PCPPORT Port,
OUT PUCHAR Byte,
IN BOOLEAN Wait,
IN BOOLEAN Poll);
XTCDECL
XTSTATUS
HlWriteComPort8(IN PCPPORT Port,
IN UCHAR Byte);
XTCDECL
UCHAR
HlComPortReadLsr(IN PCPPORT Port,
IN UCHAR Byte);
XTCDECL
XTSTATUS
HlDisplayCharacter(IN WCHAR Character);
XTAPI
XTSTATUS
HlGetAcpiSystemDescriptionPointer(OUT PACPI_RSDP *Rsdp);
XTAPI
XTSTATUS
HlGetAcpiTable(IN ULONG Signature,
OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
XTAPI
VOID
HlGetFrameBufferResolution(OUT PULONG Width, OUT PULONG Height);
XTFASTCALL
KRUNLEVEL
HlGetRunLevel(VOID);
XTCDECL
XTSTATUS
HlInitializeComPort(IN OUT PCPPORT Port,
IN PUCHAR PortAddress,
IN ULONG BaudRate);
XTAPI
XTSTATUS
HlInitializeFrameBuffer(VOID);
XTAPI
VOID
HlInitializeProcessor(VOID);
XTAPI
VOID
HlInitializeScrollRegion(IN ULONG Left,
IN ULONG Top,
IN ULONG Right,
IN ULONG Bottom,
IN ULONG FontColor);
XTAPI
XTSTATUS
HlInitializeSystem(VOID);
XTFASTCALL
VOID
HlSetRunLevel(IN KRUNLEVEL RunLevel);
XTAPI
VOID
HlpCacheAcpiTable(IN PACPI_DESCRIPTION_HEADER AcpiTable);
XTAPI
VOID
HlpDrawCharacter(IN ULONG PositionX,
IN ULONG PositionY,
IN ULONG Color,
IN WCHAR WideCharacter);
XTAPI
VOID
HlpDrawPixel(IN ULONG PosX,
IN ULONG PosY,
IN ULONG Color);
XTAPI
XTSTATUS
HlpInitializeAcpi(VOID);
XTAPI
XTSTATUS
HlpInitializeAcpiCache(VOID);
XTAPI
XTSTATUS
HlpInitializeAcpiSystemDescriptionTable(OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
XTAPI
XTSTATUS
HlpInitializeAcpiSystemInformation(VOID);
XTAPI
XTSTATUS
HlpInitializeAcpiSystemStructure(VOID);
XTAPI
XTSTATUS
HlpInitializeAcpiTimer(VOID);
XTAPI
XTSTATUS
HlpQueryAcpiCache(IN ULONG Signature,
OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
XTAPI
XTSTATUS
HlpQueryAcpiTables(IN ULONG Signature,
OUT PACPI_DESCRIPTION_HEADER *AcpiTable);
XTAPI
ULONG
HlpRGBColor(IN ULONG Color);
XTAPI
VOID
HlpScrollRegion(VOID);
XTAPI
BOOLEAN
HlpValidateAcpiTable(IN PVOID Buffer,
IN UINT_PTR Size);
#endif /* __XTOSKRNL_HLI_H */

View File

@@ -1,436 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/i686/ari.h
* DESCRIPTION: I686 architecture library routines
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_I686_ARI_H
#define __XTOSKRNL_I686_ARI_H
#include <xtos.h>
/* I686 architecture library routines forward references */
XTCDECL
VOID
ArClearInterruptFlag(VOID);
XTCDECL
BOOLEAN
ArCpuId(IN OUT PCPUID_REGISTERS Registers);
XTCDECL
VOID
ArFlushTlb(VOID);
XTAPI
PVOID
ArGetBootStack(VOID);
XTCDECL
ULONG
ArGetCpuFlags(VOID);
XTASSEMBLY
XTCDECL
ULONG_PTR
ArGetStackPointer(VOID);
XTCDECL
VOID
ArHalt(VOID);
XTAPI
VOID
ArInitializeProcessor(IN PVOID ProcessorStructures);
XTCDECL
BOOLEAN
ArInterruptsEnabled(VOID);
XTCDECL
VOID
ArInvalidateTlbEntry(IN PVOID Address);
XTCDECL
VOID
ArLoadGlobalDescriptorTable(IN PVOID Source);
XTCDECL
VOID
ArLoadInterruptDescriptorTable(IN PVOID Source);
XTCDECL
VOID
ArLoadLocalDescriptorTable(IN USHORT Source);
XTCDECL
VOID
ArLoadSegment(IN USHORT Segment,
IN ULONG Source);
XTCDECL
VOID
ArLoadTaskRegister(IN USHORT Source);
XTCDECL
VOID
ArMemoryBarrier(VOID);
XTCDECL
ULONG_PTR
ArReadControlRegister(IN USHORT ControlRegister);
XTCDECL
ULONG_PTR
ArReadDebugRegister(IN USHORT DebugRegister);
XTCDECL
ULONG
ArReadFSDualWord(IN ULONG Offset);
XTCDECL
ULONGLONG
ArReadModelSpecificRegister(IN ULONG Register);
XTCDECL
UINT
ArReadMxCsrRegister(VOID);
XTCDECL
ULONGLONG
ArReadTimeStampCounter(VOID);
XTCDECL
VOID
ArReadWriteBarrier(VOID);
XTAPI
VOID
ArSetGdtEntryBase(IN PKGDTENTRY Gdt,
IN USHORT Selector,
IN ULONG_PTR Base);
XTCDECL
VOID
ArSetInterruptFlag(VOID);
XTCDECL
VOID
ArStoreGlobalDescriptorTable(OUT PVOID Destination);
XTCDECL
VOID
ArStoreInterruptDescriptorTable(OUT PVOID Destination);
XTCDECL
VOID
ArStoreLocalDescriptorTable(OUT PVOID Destination);
XTCDECL
VOID
ArStoreSegment(IN USHORT Segment,
OUT PVOID Destination);
XTCDECL
VOID
ArStoreTaskRegister(OUT PVOID Destination);
XTCDECL
VOID
ArWriteControlRegister(IN USHORT ControlRegister,
IN UINT_PTR Value);
XTCDECL
VOID
ArWriteDebugRegister(IN USHORT DebugRegister,
IN UINT_PTR Value);
XTCDECL
VOID
ArWriteEflagsRegister(IN UINT_PTR Value);
XTCDECL
VOID
ArWriteModelSpecificRegister(IN ULONG Register,
IN ULONGLONG Value);
XTCDECL
VOID
ArYieldProcessor(VOID);
XTCDECL
VOID
ArpDispatchTrap(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap00(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap01(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap02(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap03(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap04(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap05(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap06(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap07(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap08(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap09(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0A(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0B(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap0E(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap10(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap11(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap12(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap13(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2A(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2B(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2C(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2D(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrap2E(IN PKTRAP_FRAME TrapFrame);
XTCDECL
VOID
ArpHandleTrapFF(IN PKTRAP_FRAME TrapFrame);
XTAPI
VOID
ArpIdentifyProcessor(VOID);
XTAPI
VOID
ArpInitializeGdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
XTAPI
VOID
ArpInitializeIdt(IN PKPROCESSOR_BLOCK ProcessorBlock);
XTAPI
VOID
ArpInitializeProcessorBlock(OUT PKPROCESSOR_BLOCK ProcessorBlock,
IN PKGDTENTRY Gdt,
IN PKIDTENTRY Idt,
IN PKTSS Tss,
IN PVOID DpcStack);
XTAPI
VOID
ArpInitializeProcessorRegisters(VOID);
XTAPI
VOID
ArpInitializeProcessorStructures(IN PVOID ProcessorStructures,
OUT PKGDTENTRY *Gdt,
OUT PKTSS *Tss,
OUT PKPROCESSOR_BLOCK *ProcessorBlock,
OUT PVOID *KernelBootStack,
OUT PVOID *KernelFaultStack);
XTAPI
VOID
ArpInitializeSegments(VOID);
XTAPI
VOID
ArpInitializeTss(IN PKPROCESSOR_BLOCK ProcessorBlock,
IN PVOID KernelBootStack,
IN PVOID KernelFaultStack);
XTAPI
VOID
ArpSetDoubleFaultTssEntry(IN PKPROCESSOR_BLOCK ProcessorBlock,
IN PVOID KernelFaultStack);
XTAPI
VOID
ArpSetGdtEntry(IN PKGDTENTRY Gdt,
IN USHORT Selector,
IN ULONG_PTR Base,
IN ULONG Limit,
IN UCHAR Type,
IN UCHAR Dpl,
IN UCHAR SegmentMode);
XTAPI
VOID
ArpSetIdtGate(IN PKIDTENTRY Idt,
IN USHORT Vector,
IN PVOID Handler,
IN USHORT Selector,
IN USHORT Ist,
IN USHORT Access);
XTAPI
VOID
ArpSetNonMaskableInterruptTssEntry(IN PKPROCESSOR_BLOCK ProcessorBlock,
IN PVOID KernelFaultStack);
XTCDECL
VOID
ArpTrap0x00(VOID);
XTCDECL
VOID
ArpTrap0x01(VOID);
XTCDECL
VOID
ArpTrap0x02(VOID);
XTCDECL
VOID
ArpTrap0x03(VOID);
XTCDECL
VOID
ArpTrap0x04(VOID);
XTCDECL
VOID
ArpTrap0x05(VOID);
XTCDECL
VOID
ArpTrap0x06(VOID);
XTCDECL
VOID
ArpTrap0x07(VOID);
XTCDECL
VOID
ArpTrap0x08(VOID);
XTCDECL
VOID
ArpTrap0x09(VOID);
XTCDECL
VOID
ArpTrap0x0A(VOID);
XTCDECL
VOID
ArpTrap0x0B(VOID);
XTCDECL
VOID
ArpTrap0x0C(VOID);
XTCDECL
VOID
ArpTrap0x0D(VOID);
XTCDECL
VOID
ArpTrap0x0E(VOID);
XTCDECL
VOID
ArpTrap0x10(VOID);
XTCDECL
VOID
ArpTrap0x11(VOID);
XTCDECL
VOID
ArpTrap0x12(VOID);
XTCDECL
VOID
ArpTrap0x13(VOID);
XTCDECL
VOID
ArpTrap0x2A(VOID);
XTCDECL
VOID
ArpTrap0x2B(VOID);
XTCDECL
VOID
ArpTrap0x2C(VOID);
XTCDECL
VOID
ArpTrap0x2D(VOID);
XTCDECL
VOID
ArpTrap0x2E(VOID);
#endif /* __XTOSKRNL_I686_ARI_H */

View File

@@ -1,32 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/i686/asm.h
* DESCRIPTION: i686 architecture assembly definitions
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_I686_ASMSUP_H
#define __XTOSKRNL_I686_ASMSUP_H
/* KTRAP_FRAME structure offsets */
#define TrapPreviousMode 0
#define TrapCr2 4
#define TrapCr3 8
#define TrapDr0 12
#define TrapDr1 16
#define TrapDr2 20
#define TrapDr3 24
#define TrapDr6 28
#define TrapDr7 32
#define TrapSegDs 36
#define TrapSegEs 38
#define TrapSegFs 40
#define TrapSegGs 42
/* KTRAP_FRAME length related definitions */
#define TRAP_FRAME_SIZE 100
#define TRAP_REGISTERS_SIZE 56
#endif /* __XTOSKRNL_AMD64_ASMSUP_H */

View File

@@ -1,43 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/i686/globals.h
* DESCRIPTION: XT kernel global variables related to i686 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_I686_GLOBALS_H
#define __XTOSKRNL_I686_GLOBALS_H
#include <xtos.h>
/* Initial GDT */
EXTERN KGDTENTRY ArInitialGdt[GDT_ENTRIES];
/* Initial IDT */
EXTERN KIDTENTRY ArInitialIdt[IDT_ENTRIES];
/* Initial Processor Block */
EXTERN KPROCESSOR_BLOCK ArInitialProcessorBlock;
/* Initial TSS */
EXTERN KTSS ArInitialTss;
/* Double Fault and NMI task gates */
EXTERN UCHAR ArpDoubleFaultTss[KTSS_IO_MAPS];
EXTERN UCHAR ArpNonMaskableInterruptTss[KTSS_IO_MAPS];
/* Kernel own boot stack */
EXTERN UCHAR ArKernelBootStack[KERNEL_STACK_SIZE];
/* Kernel own fault stack */
EXTERN UCHAR ArKernelFaultStack[KERNEL_STACK_SIZE];
/* Page mapping routines for systems using 2-level paging (PML2) */
EXTERN CMMPAGEMAP_ROUTINES MmpPml2Routines;
/* Page mapping routines for systems using 3-level paging (PML3) */
EXTERN CMMPAGEMAP_ROUTINES MmpPml3Routines;
#endif /* __XTOSKRNL_I686_GLOBALS_H */

View File

@@ -1,74 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/i686/hli.h
* DESCRIPTION: XT hardware abstraction layer routines specific to i686 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_I686_HLI_H
#define __XTOSKRNL_I686_HLI_H
#include <xtos.h>
/* HAL library routines forward references */
XTAPI
VOID
HlClearApicErrors(VOID);
XTFASTCALL
ULONGLONG
HlReadApicRegister(IN APIC_REGISTER Register);
XTAPI
VOID
HlSendEoi(VOID);
XTFASTCALL
VOID
HlWriteApicRegister(IN APIC_REGISTER Register,
IN ULONGLONG Value);
XTAPI
BOOLEAN
HlpCheckX2ApicSupport(VOID);
XTAPI
ULONG
HlpGetCpuApicId(VOID);
XTCDECL
VOID
HlpHandleApicSpuriousService(VOID);
XTCDECL
VOID
HlpHandlePicSpuriousService(VOID);
XTAPI
VOID
HlpInitializeApic(VOID);
XTAPI
VOID
HlpInitializeLegacyPic(VOID);
XTAPI
VOID
HlpInitializePic(VOID);
XTAPI
VOID
HlpSendIpi(ULONG ApicId,
ULONG Vector);
XTFASTCALL
KRUNLEVEL
HlpTransformApicTprToRunLevel(IN UCHAR Tpr);
XTFASTCALL
UCHAR
HlpTransformRunLevelToApicTpr(IN KRUNLEVEL RunLevel);
#endif /* __XTOSKRNL_I686_HLI_H */

View File

@@ -1,60 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/i686/kei.h
* DESCRIPTION: XTOS kernel services routine definitions specific to i686 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_I686_KEI_H
#define __XTOSKRNL_I686_KEI_H
#include <xtos.h>
/* I686 specific Kernel services routines forward references */
XTAPI
PKPROCESSOR_BLOCK
KeGetCurrentProcessorBlock(VOID);
XTAPI
PKPROCESSOR_CONTROL_BLOCK
KeGetCurrentProcessorControlBlock(VOID);
XTAPI
ULONG
KeGetCurrentProcessorNumber(VOID);
XTAPI
PKTHREAD
KeGetCurrentThread(VOID);
XTAPI
VOID
KepInitializeKernel(VOID);
XTAPI
VOID
KepInitializeMachine(VOID);
XTAPI
VOID
KepInitializeThreadContext(IN PKTHREAD Thread,
IN PKSYSTEM_ROUTINE SystemRoutine,
IN PKSTART_ROUTINE StartRoutine,
IN PVOID StartContext,
IN PCONTEXT ContextRecord);
XTAPI
VOID
KepSaveProcessorState(OUT PKPROCESSOR_STATE CpuState);
XTAPI
VOID
KepStartKernel(VOID);
XTAPI
VOID
KepSwitchBootStack();
#endif /* __XTOSKRNL_I686_KEI_H */

View File

@@ -1,81 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/i686/mmi.h
* DESCRIPTION: XT memory manager routines specific to i686 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_I686_MMI_H
#define __XTOSKRNL_I686_MMI_H
#include <xtos.h>
/* i686 Memory Manager routines forward references */
XTAPI
VOID
MmInitializePageMapSupport(VOID);
XTFASTCALL
VOID
MmZeroPages(IN PVOID Address,
IN ULONG Size);
XTAPI
VOID
MmpClearPte(PHARDWARE_PTE PtePointer);
XTAPI
BOOLEAN
MmpGetExtendedPhysicalAddressingStatus(VOID);
XTAPI
PMMPDE
MmpGetPdeAddress(PVOID Address);
XTAPI
PMMPPE
MmpGetPpeAddress(PVOID Address);
XTAPI
PMMPTE
MmpGetPteAddress(PVOID Address);
XTAPI
VOID
MmpInitializeArchitecture(VOID);
XTAPI
BOOLEAN
MmpPml2PteValid(PHARDWARE_PTE PtePointer);
XTAPI
VOID
MmpSetPml2Pte(PHARDWARE_PTE PtePointer,
PFN_NUMBER PageFrameNumber,
BOOLEAN Writable);
XTAPI
VOID
MmpSetPml2PteCaching(PHARDWARE_PTE PtePointer,
BOOLEAN CacheDisable,
BOOLEAN WriteThrough);
XTAPI
BOOLEAN
MmpPml3PteValid(PHARDWARE_PTE PtePointer);
XTAPI
VOID
MmpSetPml3Pte(PHARDWARE_PTE PtePointer,
PFN_NUMBER PageFrameNumber,
BOOLEAN Writable);
XTAPI
VOID
MmpSetPml3PteCaching(PHARDWARE_PTE PtePointer,
BOOLEAN CacheDisable,
BOOLEAN WriteThrough);
#endif /* __XTOSKRNL_I686_MMI_H */

View File

@@ -1,21 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/i686/rtli.h
* DESCRIPTION: XT runtime library routines specific to i686 architecture
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_I686_RTLI_H
#define __XTOSKRNL_I686_RTLI_H
#include <xtos.h>
/* Runtime Library routines specific to I686 forward references */
XTAPI
VOID
RtlGetStackLimits(OUT PULONG_PTR StackBase,
OUT PULONG_PTR StackLimit);
#endif /* __XTOSKRNL_I686_RTLI_H */

View File

@@ -1,44 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/kdi.h
* DESCRIPTION: Kernel Debugger routines
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#ifndef __XTOSKRNL_KDI_H
#define __XTOSKRNL_KDI_H
#include <xtos.h>
/* Kernel Debugger routines forward references */
XTAPI
XTSTATUS
KdInitializeDebugIoProviders(VOID);
XTAPI
VOID
KdSetPrintRoutine(PVOID DebugPrintRoutine);
XTCDECL
VOID
KdpDebugPrint(PCWSTR Format, ...);
XTAPI
XTSTATUS
KdpDetectDebugPorts(VOID);
XTAPI
XTSTATUS
KdpInitializeFrameBufferProvider(VOID);
XTAPI
XTSTATUS
KdpInitializeSerialPortProvider(VOID);
XTCDECL
XTSTATUS
KdpSerialWriteCharacter(WCHAR Character);
#endif /* __XTOSKRNL_KDI_H */

View File

@@ -25,6 +25,7 @@ namespace KE
STATIC XTAPI SYSTEM_FIRMWARE_TYPE GetFirmwareType(VOID);
STATIC XTAPI XTSTATUS GetKernelParameter(IN PCWSTR ParameterName,
OUT PCWSTR *Parameter);
STATIC XTAPI PLIST_ENTRY GetMemoryDescriptors(VOID);
STATIC XTAPI PLIST_ENTRY GetSystemResources(VOID);
STATIC XTAPI VOID InitializeInitializationBlock(IN PKERNEL_INITIALIZATION_BLOCK Block);

View File

@@ -1,237 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/kei.h
* DESCRIPTION: XTOS kernel services routine definitions
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_KEI_H
#define __XTOSKRNL_KEI_H
#include <xtos.h>
/* Kernel services routines forward references */
XTAPI
PKERNEL_INITIALIZATION_BLOCK
KeGetInitializationBlock(VOID);
XTAPI
VOID
KeClearEvent(IN PKEVENT Event);
XTAPI
VOID
KeClearTimer(IN PKTIMER Timer);
XTAPI
SYSTEM_FIRMWARE_TYPE
KeGetFirmwareType(VOID);
XTAPI
XTSTATUS
KeGetKernelParameter(IN PCWSTR ParameterName,
OUT PCWSTR *Parameter);
XTAPI
VOID
KeHaltSystem(VOID);
XTAPI
VOID
KeInitializeEvent(OUT PKEVENT Event,
IN KEVENT_TYPE EventType,
IN BOOLEAN InitialState);
XTAPI
VOID
KeInitializeProcess(IN OUT PKPROCESS Process,
IN KPRIORITY Priority,
IN KAFFINITY Affinity,
IN PULONG_PTR DirectoryTable,
IN BOOLEAN Alignment);
XTAPI
XTSTATUS
KeInitializeThread(IN PKPROCESS Process,
IN OUT PKTHREAD Thread,
IN PKSYSTEM_ROUTINE SystemRoutine,
IN PKSTART_ROUTINE StartRoutine,
IN PVOID StartContext,
IN PCONTEXT Context,
IN PVOID EnvironmentBlock,
IN PVOID Stack,
IN BOOLEAN StartThread);
XTAPI
VOID
KePanic(IN ULONG Code);
XTAPI
VOID
KePanicEx(IN ULONG Code,
IN ULONG_PTR Parameter1,
IN ULONG_PTR Parameter2,
IN ULONG_PTR Parameter3,
IN ULONG_PTR Parameter4);
XTAPI
ULONGLONG
KeQueryTimer(IN PKTIMER Timer);
XTAPI
LONG
KeSetEvent(IN PKEVENT Event,
IN KPRIORITY Increment,
IN BOOLEAN Wait);
XTAPI
VOID
KeSetInterruptHandler(IN ULONG Vector,
IN PVOID Handler);
XTAPI
VOID
KeStartThread(IN PKTHREAD Thread);
XTAPI
VOID
KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters);
XTCDECL
BOOLEAN
KepCheckUbsanReport(PKUBSAN_SOURCE_LOCATION Location);
XTCDECL
VOID
KepEnterUbsanFrame(PKUBSAN_SOURCE_LOCATION Location,
PCCHAR Reason);
XTFASTCALL
VOID
KepExitDispatcher(IN KRUNLEVEL OldRunLevel);
XTCDECL
LONGLONG
KepGetSignedUbsanValue(PKUBSAN_TYPE_DESCRIPTOR Type,
PVOID Value);
XTAPI
XTSTATUS
KepGetSystemResource(IN SYSTEM_RESOURCE_TYPE ResourceType,
IN BOOLEAN Acquire,
OUT PSYSTEM_RESOURCE_HEADER *ResourceHeader);
XTCDECL
PCCHAR
KepGetUbsanTypeKind(UCHAR TypeCheckKind);
XTCDECL
ULONGLONG
KepGetUnsignedUbsanValue(PKUBSAN_TYPE_DESCRIPTOR Type,
PVOID Value);
XTCDECL
VOID
KepHandleUbsanDivisionOverflow(PKUBSAN_OVERFLOW_DATA Data,
PVOID Lhs,
PVOID Rhs);
XTCDECL
VOID
KepHandleUbsanFloatCastOverflow(PKUBSAN_FLOAT_CAST_OVERFLOW_DATA Data,
ULONG_PTR Lhs,
ULONG_PTR Rhs);
XTCDECL
VOID
KepHandleUbsanFunctionTypeMismatch(PKUBSAN_FUNCTION_TYPE_MISMATCH_DATA Data,
ULONG_PTR Pointer);
XTCDECL
VOID
KepHandleUbsanIntegerOverflow(PKUBSAN_OVERFLOW_DATA Data,
ULONG_PTR Lhs,
ULONG_PTR Rhs);
XTCDECL
VOID
KepHandleUbsanInvalidBuiltin(PKUBSAN_INVALID_BUILTIN_DATA Data);
XTCDECL
VOID
KepHandleUbsanMisalignedAccess(PKUBSAN_TYPE_MISMATCH_DATA Data,
ULONG_PTR Pointer);
XTCDECL
VOID
KepHandleUbsanNegateOverflow(PKUBSAN_OVERFLOW_DATA Data,
ULONG_PTR OldValue);
XTCDECL
VOID
KepHandleUbsanNullPointerDereference(PKUBSAN_TYPE_MISMATCH_DATA Data);
XTCDECL
VOID
KepHandleUbsanObjectSizeMismatch(PKUBSAN_TYPE_MISMATCH_DATA Data,
ULONG_PTR Pointer);
XTCDECL
VOID
KepHandleUbsanOutOfBounds(PKUBSAN_OUT_OF_BOUNDS_DATA Data,
ULONG_PTR Index);
XTCDECL
VOID
KepHandleUbsanPointerOverflow(PKUBSAN_OVERFLOW_DATA Data,
ULONG_PTR Lhs,
ULONG_PTR Rhs);
XTCDECL
VOID
KepHandleUbsanShiftOutOfBounds(PKUBSAN_SHIFT_OUT_OF_BOUNDS_DATA Data,
ULONG_PTR Lhs,
ULONG_PTR Rhs);
XTCDECL
VOID
KepHandleUbsanTypeMismatch(PKUBSAN_TYPE_MISMATCH_DATA Data,
ULONG_PTR Pointer);
XTAPI
VOID
KepInitializeSystemResources(VOID);
XTCDECL
VOID
KepLeaveUbsanFrame();
XTAPI
VOID
KepRemoveTimer(IN OUT PKTIMER Timer);
XTFASTCALL
VOID
KepRetireDpcList(IN PKPROCESSOR_CONTROL_BLOCK Prcb);
XTAPI
VOID
KepSuspendNop(IN PKAPC Apc,
IN OUT PKNORMAL_ROUTINE *NormalRoutine,
IN OUT PVOID *NormalContext,
IN OUT PVOID *SystemArgument1,
IN OUT PVOID *SystemArgument2);
XTAPI
VOID
KepSuspendRundown(IN PKAPC Apc);
XTAPI
VOID
KepSuspendThread(IN PVOID NormalContext,
IN PVOID SystemArgument1,
IN PVOID SystemArgument2);
#endif /* __XTOSKRNL_KEI_H */

View File

@@ -1,86 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/mmi.h
* DESCRIPTION: Memory manager routines
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_MMI_H
#define __XTOSKRNL_MMI_H
#include <xtos.h>
/* Memory Manager routines forward references */
XTAPI
XTSTATUS
MmAllocateHardwareMemory(IN PFN_NUMBER PageCount,
IN BOOLEAN Aligned,
OUT PPHYSICAL_ADDRESS Buffer);
XTAPI
XTSTATUS
MmAllocateKernelStack(IN PVOID *Stack,
IN BOOLEAN LargeStack,
IN UCHAR SystemNode);
XTAPI
XTSTATUS
MmAllocateProcessorStructures(IN ULONG CpuNumber,
OUT PVOID *StructuresData);
XTAPI
VOID
MmFlushTlb(VOID);
XTAPI
VOID
MmFreeKernelStack(IN PVOID Stack,
IN BOOLEAN LargeStack);
XTAPI
VOID
MmFreeProcessorStructures(IN PVOID StructuresData);
XTAPI
VOID
MmInitializeMemoryManager(VOID);
XTAPI
XTSTATUS
MmMapHardwareMemory(IN PHYSICAL_ADDRESS PhysicalAddress,
IN PFN_NUMBER PageCount,
IN BOOLEAN FlushTlb,
OUT PVOID *VirtualAddress);
XTAPI
VOID
MmMarkHardwareMemoryWriteThrough(IN PVOID VirtualAddress,
IN PFN_NUMBER PageCount);
XTAPI
VOID
MmRemapHardwareMemory(IN PVOID VirtualAddress,
IN PHYSICAL_ADDRESS PhysicalAddress,
IN BOOLEAN FlushTlb);
XTAPI
XTSTATUS
MmUnmapHardwareMemory(IN PVOID VirtualAddress,
IN PFN_NUMBER PageCount,
IN BOOLEAN FlushTlb);
XTAPI
VOID
MmpScanMemoryDescriptors(VOID);
XTAPI
BOOLEAN
MmpVerifyMemoryTypeFree(LOADER_MEMORY_TYPE MemoryType);
XTAPI
BOOLEAN
MmpVerifyMemoryTypeInvisible(LOADER_MEMORY_TYPE MemoryType);
#endif /* __XTOSKRNL_MMI_H */

View File

@@ -1,35 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/poi.h
* DESCRIPTION: Power manager subsystem routines
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_POI_H
#define __XTOSKRNL_POI_H
#include <xtos.h>
/* Power Manager routines forward references */
XTAPI
VOID
PoInitializeProcessorControlBlock(IN OUT PKPROCESSOR_CONTROL_BLOCK Prcb);
XTFASTCALL
VOID
PopIdle0Function(IN PPROCESSOR_POWER_STATE PowerState);
XTAPI
VOID
PopPerfIdle(PPROCESSOR_POWER_STATE PowerState);
XTAPI
VOID
PopPerfIdleDpc(IN PKDPC Dpc,
IN PVOID DeferredContext,
IN PVOID SystemArgument1,
IN PVOID SystemArgument2);
#endif /* __XTOSKRNL_POI_H */

View File

@@ -1,379 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/rtli.h
* DESCRIPTION: XT runtime library routines
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#ifndef __XTOSKRNL_RTLI_H
#define __XTOSKRNL_RTLI_H
#include <xtos.h>
/* Runtime Library routines forward references */
XTFASTCALL
CHAR
RtlAtomicAnd8(IN PCHAR Address,
IN CHAR Mask);
XTFASTCALL
SHORT
RtlAtomicAnd16(IN PSHORT Address,
IN SHORT Mask);
XTFASTCALL
LONG
RtlAtomicAnd32(IN PLONG Address,
IN LONG Mask);
XTFASTCALL
LONG_PTR
RtlAtomicAnd64(IN PLONG_PTR Address,
IN LONG_PTR Mask);
XTFASTCALL
UCHAR
RtlAtomicBitTestAndSet(IN PLONG Base,
IN LONG Offset);
XTFASTCALL
UCHAR
RtlAtomicBitTestAndSet64(IN PLONGLONG Base,
IN LONGLONG Offset);
XTFASTCALL
CHAR
RtlAtomicCompareExchange8(IN PCHAR Address,
IN CHAR Comperand,
IN CHAR Exchange);
XTFASTCALL
SHORT
RtlAtomicCompareExchange16(IN PSHORT Address,
IN SHORT Comperand,
IN SHORT Exchange);
XTFASTCALL
LONG
RtlAtomicCompareExchange32(IN PLONG Address,
IN LONG Comperand,
IN LONG Exchange);
XTFASTCALL
LONG_PTR
RtlAtomicCompareExchange64(IN PLONG_PTR Address,
IN LONG_PTR Comperand,
IN LONG_PTR Exchange);
XTFASTCALL
PVOID
RtlAtomicCompareExchangePointer(IN PVOID *Address,
IN PVOID Comperand,
IN PVOID Exchange);
XTFASTCALL
CHAR
RtlAtomicDecrement8(IN PCHAR Address);
XTFASTCALL
SHORT
RtlAtomicDecrement16(IN PSHORT Address);
XTFASTCALL
LONG
RtlAtomicDecrement32(IN PLONG Address);
XTFASTCALL
LONG_PTR
RtlAtomicDecrement64(IN PLONG_PTR Address);
XTFASTCALL
CHAR
RtlAtomicExchange8(IN PCHAR Address,
IN CHAR Exchange);
XTFASTCALL
SHORT
RtlAtomicExchange16(IN PSHORT Address,
IN SHORT Exchange);
XTFASTCALL
LONG
RtlAtomicExchange32(IN PLONG Address,
IN LONG Exchange);
XTFASTCALL
LONG_PTR
RtlAtomicExchange64(IN PLONG_PTR Address,
IN LONG_PTR Exchange);
XTFASTCALL
CHAR
RtlAtomicExchangeAdd8(IN PCHAR Address,
IN CHAR Value);
XTFASTCALL
SHORT
RtlAtomicExchangeAdd16(IN PSHORT Address,
IN SHORT Value);
XTFASTCALL
LONG
RtlAtomicExchangeAdd32(IN PLONG Address,
IN LONG Value);
XTFASTCALL
LONG_PTR
RtlAtomicExchangeAdd64(IN PLONG_PTR Address,
IN LONG_PTR Value);
XTFASTCALL
PVOID
RtlAtomicExchangePointer(IN PVOID *Address,
IN PVOID Exchange);
XTFASTCALL
PSINGLE_LIST_ENTRY
RtlAtomicFlushSingleList(IN PSINGLE_LIST_HEADER Header);
XTFASTCALL
CHAR
RtlAtomicIncrement8(IN PCHAR Address);
XTFASTCALL
SHORT
RtlAtomicIncrement16(IN PSHORT Address);
XTFASTCALL
LONG
RtlAtomicIncrement32(IN PLONG Address);
XTFASTCALL
LONG_PTR
RtlAtomicIncrement64(IN PLONG_PTR Address);
XTFASTCALL
CHAR
RtlAtomicOr8(IN PCHAR Address,
IN CHAR Mask);
XTFASTCALL
SHORT
RtlAtomicOr16(IN PSHORT Address,
IN SHORT Mask);
XTFASTCALL
LONG
RtlAtomicOr32(IN PLONG Address,
IN LONG Mask);
XTFASTCALL
LONG_PTR
RtlAtomicOr64(IN PLONG_PTR Address,
IN LONG_PTR Mask);
XTFASTCALL
PSINGLE_LIST_ENTRY
RtlAtomicPopEntrySingleList(IN PSINGLE_LIST_HEADER Header);
XTFASTCALL
PSINGLE_LIST_ENTRY
RtlAtomicPushEntrySingleList(IN PSINGLE_LIST_HEADER Header,
IN PSINGLE_LIST_ENTRY Entry);
XTFASTCALL
CHAR
RtlAtomicXor8(IN PCHAR Address,
IN CHAR Mask);
XTFASTCALL
SHORT
RtlAtomicXor16(IN PSHORT Address,
IN SHORT Mask);
XTFASTCALL
LONG
RtlAtomicXor32(IN PLONG Address,
IN LONG Mask);
XTFASTCALL
LONG_PTR
RtlAtomicXor64(IN PLONG_PTR Address,
IN LONG_PTR Mask);
XTFASTCALL
USHORT
RtlByteSwap16(IN USHORT Source);
XTFASTCALL
ULONG
RtlByteSwap32(IN ULONG Source);
XTFASTCALL
ULONGLONG
RtlByteSwap64(IN ULONGLONG Source);
XTAPI
INT
RtlCountLeadingZeroes32(IN ULONG Value);
XTAPI
INT
RtlCountLeadingZeroes64(IN ULONGLONG Value);
XTAPI
INT
RtlCountTrailingZeroes32(IN ULONG Value);
XTAPI
INT
RtlCountTrailingZeroes64(IN ULONGLONG Value);
XTAPI
LONGLONG
RtlDivide32(IN LONG Dividend,
IN LONG Divisor,
OUT PLONG Remainder);
XTAPI
LONGLONG
RtlDivide64(IN LONGLONG Dividend,
IN LONGLONG Divisor,
OUT PLONGLONG Remainder);
XTAPI
ULONGLONG
RtlDivideUnsigned32(IN ULONG Dividend,
IN ULONG Divisor,
OUT PULONG Remainder);
XTAPI
ULONGLONG
RtlDivideUnsigned64(IN ULONGLONG Dividend,
IN ULONGLONG Divisor,
OUT PULONGLONG Remainder);
XTAPI
VOID
RtlDumpBitMap(IN PRTL_BITMAP BitMap);
XTAPI
LONG
RtlGetBaseExponent(IN DOUBLE Value,
OUT PDOUBLE PowerOfTen);
XTCDECL
BOOLEAN
RtlInfiniteDouble(IN DOUBLE Value);
XTCDECL
VOID
RtlInitializeListHead(IN PLIST_ENTRY ListHead);
XTCDECL
VOID
RtlInitializeListHead32(IN PLIST_ENTRY32 ListHead);
XTCDECL
VOID
RtlInsertHeadList(IN OUT PLIST_ENTRY ListHead,
IN PLIST_ENTRY Entry);
XTCDECL
VOID
RtlInsertTailList(IN OUT PLIST_ENTRY ListHead,
IN PLIST_ENTRY Entry);
XTCDECL
BOOLEAN
RtlListEmpty(PLIST_ENTRY ListHead);
XTCDECL
BOOLEAN
RtlListLoop(IN PLIST_ENTRY ListHead);
XTCDECL
BOOLEAN
RtlNanDouble(IN DOUBLE Value);
XTCDECL
VOID
RtlRemoveEntryList(IN PLIST_ENTRY Entry);
XTAPI
ULONG_PTR
RtlpCountBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Length,
IN ULONG_PTR StartingIndex,
IN BOOLEAN SetBits);
XTAPI
ULONG_PTR
RtlpFindBits(IN PRTL_BITMAP BitMap,
IN ULONG_PTR Length,
IN ULONG_PTR StartingIndex,
IN BOOLEAN SetBits);
XTAPI
XTSTATUS
RtlpFormatWideStringArgumentSpecifier(IN PRTL_PRINT_CONTEXT Context,
IN PCWSTR Format,
IN PVA_LIST ArgumentList,
IN OUT PULONG Index);
XTAPI
ULONGLONG
RtlpGetWideStringArgument(IN PVA_LIST ArgumentList,
IN ULONG ArgumentNumber,
IN LONG ArgumentSize);
XTAPI
ULONGLONG
RtlpGetWideStringSpecifierValue(IN PWCHAR *Format);
XTAPI
XTSTATUS
RtlpWriteWideCharacter(IN PRTL_PRINT_CONTEXT Context,
IN WCHAR Character);
XTCDECL
XTSTATUS
RtlpWriteWideStringCustomValue(IN PRTL_PRINT_CONTEXT Context,
IN PCWSTR Format,
IN ...);
XTAPI
XTSTATUS
RtlpWriteWideStringDoubleValue(IN PRTL_PRINT_CONTEXT Context,
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
IN DOUBLE Value);
XTAPI
XTSTATUS
RtlpWriteWideStringHexDoubleValue(IN PRTL_PRINT_CONTEXT Context,
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
IN DOUBLE Value);
XTAPI
XTSTATUS
RtlpWriteWideStringIntegerValue(IN PRTL_PRINT_CONTEXT Context,
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
IN ULONGLONG Integer);
XTAPI
XTSTATUS
RtlpWriteWideStringStringValue(PRTL_PRINT_CONTEXT Context,
PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
PCHAR String,
SIZE_T StringLength);
XTAPI
XTSTATUS
RtlpWriteWideStringValue(PRTL_PRINT_CONTEXT Context,
PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
PWCHAR String,
SIZE_T StringLength);
#endif /* __XTOSKRNL_RTLI_H */

View File

@@ -1,19 +0,0 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/xtos.h
* DESCRIPTION: Top level header for the XT kernel
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
/* XT Development Kit */
#include <xtkmapi.h>
/* XT OS version */
#include <xtver.h>
/* Kernel specific headers */
#include "kei.h"
#include ARCH_HEADER(kei.h)

View File

@@ -10,22 +10,13 @@
/* Preprocessor macro for including arch-specific headers */
#define XTOS_ARCH_HEADER(subsystem, header) STRINGIFY(subsystem/_ARCH/header)
/* Temporary includes for C code compatibility */
extern "C" {
/* XT Development Kit */
/* XT Kernel Mode Development Kit */
#include <xtkmapi.h>
/* XT OS version */
#include <xtver.h>
/* Kernel specific headers */
#include <xtos.h>
}
#include <ar.hh>
#include <ex.hh>
#include <hl.hh>

View File

@@ -97,6 +97,13 @@ KE::BootInformation::GetKernelParameter(IN PCWSTR ParameterName,
return STATUS_NOT_FOUND;
}
XTAPI
PLIST_ENTRY
KE::BootInformation::GetMemoryDescriptors(VOID)
{
return &InitializationBlock->MemoryDescriptorListHead;
}
/**
* Retrieves a pointer to the list of system resources.
*
@@ -125,7 +132,12 @@ XTAPI
VOID
KE::BootInformation::InitializeInitializationBlock(IN PKERNEL_INITIALIZATION_BLOCK Block)
{
/* Check if the initialization block is already initialized */
if(!InitializationBlock)
{
/* Save the kernel initialization block */
InitializationBlock = Block;
}
}

View File

@@ -34,7 +34,7 @@ MM::HardwarePool::AllocateHardwareMemory(IN PFN_NUMBER PageCount,
PLOADER_MEMORY_DESCRIPTOR Descriptor, ExtraDescriptor, HardwareDescriptor;
PFN_NUMBER Alignment, MaxPage;
ULONGLONG PhysicalAddress;
PLIST_ENTRY ListEntry;
PLIST_ENTRY ListEntry, LoaderMemoryDescriptors;
/* Assume failure */
(*Buffer).QuadPart = 0;
@@ -49,9 +49,12 @@ MM::HardwarePool::AllocateHardwareMemory(IN PFN_NUMBER PageCount,
return STATUS_INSUFFICIENT_RESOURCES;
}
/* Get a list of memory descriptors provided by the boot loader */
LoaderMemoryDescriptors = KE::BootInformation::GetMemoryDescriptors();
/* Scan memory descriptors provided by the boot loader */
ListEntry = KeGetInitializationBlock()->MemoryDescriptorListHead.Flink;
while(ListEntry != &KeGetInitializationBlock()->MemoryDescriptorListHead)
ListEntry = LoaderMemoryDescriptors->Flink;
while(ListEntry != LoaderMemoryDescriptors)
{
Descriptor = CONTAIN_RECORD(ListEntry, LOADER_MEMORY_DESCRIPTOR, ListEntry);
@@ -77,7 +80,7 @@ MM::HardwarePool::AllocateHardwareMemory(IN PFN_NUMBER PageCount,
}
/* Make sure we found a descriptor */
if(ListEntry == &KeGetInitializationBlock()->MemoryDescriptorListHead)
if(ListEntry == LoaderMemoryDescriptors)
{
/* Descriptor not found, return error */
return STATUS_INSUFFICIENT_RESOURCES;

View File

@@ -28,7 +28,7 @@ MM::Init::InitializeMemoryManager(VOID)
{
/* Insufficient physical pages, kernel panic */
DebugPrint(L"Insufficient physical pages! Install additional memory\n");
KePanic(0);
KE::Crash::Panic(0);
}
/* Proceed with architecture specific initialization */
@@ -46,16 +46,19 @@ XTAPI
VOID
MM::Init::ScanMemoryDescriptors(VOID)
{
PLIST_ENTRY LoaderMemoryDescriptors, MemoryMappings;
PLOADER_MEMORY_DESCRIPTOR MemoryDescriptor;
PLIST_ENTRY MemoryMappings;
PFN_NUMBER FreePages;
/* Initially, set number of free pages to 0 */
FreePages = 0;
/* Get a list of memory descriptors provided by the boot loader */
LoaderMemoryDescriptors = KE::BootInformation::GetMemoryDescriptors();
/* Iterate through memory mappings provided by the boot loader */
MemoryMappings = KeGetInitializationBlock()->MemoryDescriptorListHead.Flink;
while(MemoryMappings != &KeGetInitializationBlock()->MemoryDescriptorListHead)
MemoryMappings = LoaderMemoryDescriptors->Flink;
while(MemoryMappings != LoaderMemoryDescriptors)
{
/* Get memory descriptor */
MemoryDescriptor = CONTAIN_RECORD(MemoryMappings, LOADER_MEMORY_DESCRIPTOR, ListEntry);

View File

@@ -6,7 +6,7 @@
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
*/
#include <xtos.h>
#include <xtos.hh>
/* This is required for floating numbers to keep LLVM happy */