#pragma once /************************ *** Team Kitty, 2020 *** *** Chroma *** ***********************/ /* This file serves as the central kernel header. Every file in the kernel should include this header. * It provides functionality to every core component of the system, and provides unrestricted cross-communication between modules. * It also provides the symbols for the framebuffer and configuration file, which are both equually important. */ #define UNUSED(x) (void)x #include #include #include #include #include #include #include #include #ifdef __cplusplus #include #endif #include #include extern size_t LoadAddr; extern bootinfo bootldr; extern unsigned char* environment; extern uint8_t fb; extern volatile unsigned char _binary_src_assets_font_psf_start; extern volatile size_t* _kernel_text_start; extern int sharp_entryPoint(); extern address_space_t KernelAddressSpace; extern e1000_device_t* E1000NIC; typedef struct { uint32_t magic; uint32_t version; uint32_t headerSize; uint32_t flags; uint32_t numGlyphs; uint32_t glyphSize; uint32_t glyphHeight; uint32_t glyphWidth; uint8_t glyphs; } __attribute__((packed)) psf_t; extern size_t KernelAddr; extern size_t KernelEnd; extern size_t MemoryPages; extern size_t FreeMemorySize; extern size_t FullMemorySize; void SetupExtensions(); void PrepareCPU(); void WriteString(const char* string); void WriteChar(const char character); void WriteStringWithFont(const char* string); void InitSerial(); void InitPrint(); void SetupInitialGDT(); void SetupIDT(); int ParseKernelHeader(size_t InitrdPtr); #ifdef __cplusplus extern "C" { #endif void InitInterrupts(); int Main(); void Exit(int code); void SomethingWentWrong(const char* Message); #ifdef __cplusplus } #endif