diff --git a/arch/amd64/bootstrap/limine/limine.c b/arch/amd64/bootstrap/limine/limine.c index 3cf7e64..4ee5f41 100644 --- a/arch/amd64/bootstrap/limine/limine.c +++ b/arch/amd64/bootstrap/limine/limine.c @@ -84,7 +84,7 @@ __naked __used __no_stack_protector void InitLimine() asmv("jmp InitLimineAfterStack"); } -SafeFunction NIF void InitLimineAfterStack() +nsa NIF void InitLimineAfterStack() { struct BootInfo binfo = {}; struct limine_bootloader_info_response *BootloaderInfoResponse = BootloaderInfoRequest.response; diff --git a/arch/amd64/bootstrap/multiboot/Paging/mb_64bit_map.cpp b/arch/amd64/bootstrap/multiboot/Paging/mb_64bit_map.cpp index 6fc9de8..0c55959 100644 --- a/arch/amd64/bootstrap/multiboot/Paging/mb_64bit_map.cpp +++ b/arch/amd64/bootstrap/multiboot/Paging/mb_64bit_map.cpp @@ -38,14 +38,14 @@ union __attribute__((packed)) PageTableEntry }; uint64_t raw; - __always_inline inline SafeFunction NIF void SetAddress(uintptr_t _Address) + __always_inline inline nsa NIF void SetAddress(uintptr_t _Address) { _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); } - __always_inline inline SafeFunction NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } + __always_inline inline nsa NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } }; struct __attribute__((packed)) PageTableEntryPtr @@ -72,14 +72,14 @@ union __attribute__((packed)) PageDirectoryEntry }; uint64_t raw; - __always_inline inline SafeFunction NIF void SetAddress(uintptr_t _Address) + __always_inline inline nsa NIF void SetAddress(uintptr_t _Address) { _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); } - __always_inline inline SafeFunction NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } + __always_inline inline nsa NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } }; struct __attribute__((packed)) PageDirectoryEntryPtr @@ -106,14 +106,14 @@ union __attribute__((packed)) PageDirectoryPointerTableEntry }; uint64_t raw; - __always_inline inline SafeFunction NIF void SetAddress(uintptr_t _Address) + __always_inline inline nsa NIF void SetAddress(uintptr_t _Address) { _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); } - __always_inline inline SafeFunction NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } + __always_inline inline nsa NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } }; struct __attribute__((packed)) PageDirectoryPointerTableEntryPtr @@ -140,14 +140,14 @@ union __attribute__((packed)) PageMapLevel4 }; uint64_t raw; - __always_inline inline SafeFunction NIF void SetAddress(uintptr_t _Address) + __always_inline inline nsa NIF void SetAddress(uintptr_t _Address) { _Address &= 0x000000FFFFFFFFFF; this->raw &= 0xFFF0000000000FFF; this->raw |= (_Address << 12); } - __always_inline inline SafeFunction NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } + __always_inline inline nsa NIF uintptr_t GetAddress() { return (this->raw & 0x000FFFFFFFFFF000) >> 12; } }; struct PageTable4 @@ -161,7 +161,7 @@ extern uintptr_t _kernel_start, _kernel_end; __attribute__((section(".bootstrap.data"))) static PageTable4 *BPTable = (PageTable4 *)BootPageTable; __attribute__((section(".bootstrap.data"))) static size_t BPT_Allocated = 0x4000; -__always_inline inline SafeFunction NIF void *RequestPage() +__always_inline inline nsa NIF void *RequestPage() { void *Page = (void *)(BootPageTable + BPT_Allocated); BPT_Allocated += 0x1000; @@ -180,7 +180,7 @@ public: uintptr_t PDPTEIndex = 0; uintptr_t PDEIndex = 0; uintptr_t PTEIndex = 0; - __always_inline inline SafeFunction NIF PageMapIndexer(uintptr_t VirtualAddress) + __always_inline inline nsa NIF PageMapIndexer(uintptr_t VirtualAddress) { uintptr_t Address = VirtualAddress; Address >>= 12; @@ -194,7 +194,7 @@ public: } }; -__attribute__((section(".bootstrap.text"))) SafeFunction NIF void MB2_64_Map(void *VirtualAddress, void *PhysicalAddress, uint64_t Flags) +__attribute__((section(".bootstrap.text"))) nsa NIF void MB2_64_Map(void *VirtualAddress, void *PhysicalAddress, uint64_t Flags) { PageMapIndexer Index = PageMapIndexer((uintptr_t)VirtualAddress); // Clear any flags that are not 1 << 0 (Present) - 1 << 5 (Accessed) because rest are for page table entries only @@ -280,7 +280,7 @@ __attribute__((section(".bootstrap.text"))) SafeFunction NIF void MB2_64_Map(voi : "memory"); } -EXTERNC __attribute__((section(".bootstrap.text"))) SafeFunction NIF __attribute__((section(".bootstrap.text"))) void UpdatePageTable64() +EXTERNC __attribute__((section(".bootstrap.text"))) nsa NIF __attribute__((section(".bootstrap.text"))) void UpdatePageTable64() { BPTable = (PageTable4 *)BootPageTable; diff --git a/arch/amd64/cpu/gdt.cpp b/arch/amd64/cpu/gdt.cpp index b1e0abc..a329a2d 100644 --- a/arch/amd64/cpu/gdt.cpp +++ b/arch/amd64/cpu/gdt.cpp @@ -120,7 +120,7 @@ namespace GlobalDescriptorTable void *CPUStackPointer[MAX_CPU]; - SafeFunction void Init(int Core) + nsa void Init(int Core) { GDTEntries[Core] = GDTEntriesTemplate; gdt[Core] = @@ -194,7 +194,7 @@ namespace GlobalDescriptorTable debug("Global Descriptor Table initialized"); } - SafeFunction void SetKernelStack(void *Stack) + nsa void SetKernelStack(void *Stack) { long CPUID = GetCurrentCPU()->ID; if (Stack != nullptr) diff --git a/arch/amd64/cpu/smp.cpp b/arch/amd64/cpu/smp.cpp index 6a83e88..93ff23c 100644 --- a/arch/amd64/cpu/smp.cpp +++ b/arch/amd64/cpu/smp.cpp @@ -46,9 +46,9 @@ std::atomic_bool CPUEnabled = false; #pragma GCC diagnostic ignored "-Wmissing-field-initializers" static __aligned(PAGE_SIZE) CPUData CPUs[MAX_CPU] = {0}; -SafeFunction CPUData *GetCPU(long id) { return &CPUs[id]; } +nsa CPUData *GetCPU(long id) { return &CPUs[id]; } -SafeFunction CPUData *GetCurrentCPU() +nsa CPUData *GetCurrentCPU() { if (unlikely(!Interrupts::apic[0])) return &CPUs[0]; /* No APIC means we are on the BSP. */ diff --git a/arch/i386/cpu/gdt.cpp b/arch/i386/cpu/gdt.cpp index a81cb5f..d231040 100644 --- a/arch/i386/cpu/gdt.cpp +++ b/arch/i386/cpu/gdt.cpp @@ -155,7 +155,7 @@ namespace GlobalDescriptorTable void *CPUStackPointer[MAX_CPU]; - SafeFunction void Init(int Core) + nsa void Init(int Core) { memcpy(&GDTEntries[Core], &GDTEntriesTemplate, sizeof(GlobalDescriptorTableEntries)); gdt[Core] = {.Length = sizeof(GlobalDescriptorTableEntries) - 1, .Entries = &GDTEntries[Core]}; @@ -253,7 +253,7 @@ namespace GlobalDescriptorTable debug("Global Descriptor Table initialized"); } - SafeFunction void SetKernelStack(void *Stack) + nsa void SetKernelStack(void *Stack) { stub; } diff --git a/arch/i386/cpu/smp.cpp b/arch/i386/cpu/smp.cpp index 78c2ea7..cf5dccd 100644 --- a/arch/i386/cpu/smp.cpp +++ b/arch/i386/cpu/smp.cpp @@ -43,9 +43,9 @@ std::atomic_bool CPUEnabled = false; #pragma GCC diagnostic ignored "-Wmissing-field-initializers" static __aligned(PAGE_SIZE) CPUData CPUs[MAX_CPU] = {0}; -SafeFunction CPUData *GetCPU(long id) { return &CPUs[id]; } +nsa CPUData *GetCPU(long id) { return &CPUs[id]; } -SafeFunction CPUData *GetCurrentCPU() +nsa CPUData *GetCurrentCPU() { if (unlikely(!Interrupts::apic[0])) return &CPUs[0]; /* No APIC means we are on the BSP. */ diff --git a/core/crash/crash_details.cpp b/core/crash/crash_details.cpp index 8476fbd..97de443 100644 --- a/core/crash/crash_details.cpp +++ b/core/crash/crash_details.cpp @@ -42,79 +42,79 @@ static const char *PageFaultDescriptions[8] = { "User process tried to write to a non-present page entry\n", "User process tried to write a page and caused a protection fault\n"}; -SafeFunction void DivideByZeroExceptionHandler(CPU::TrapFrame *Frame) +nsa void DivideByZeroExceptionHandler(CPU::TrapFrame *Frame) { fixme("Divide by zero exception\n"); UNUSED(Frame); } -SafeFunction void DebugExceptionHandler(CPU::TrapFrame *Frame) +nsa void DebugExceptionHandler(CPU::TrapFrame *Frame) { CrashHandler::EHPrint("Kernel triggered debug exception.\n"); UNUSED(Frame); } -SafeFunction void NonMaskableInterruptExceptionHandler(CPU::TrapFrame *Frame) +nsa void NonMaskableInterruptExceptionHandler(CPU::TrapFrame *Frame) { fixme("NMI exception"); UNUSED(Frame); } -SafeFunction void BreakpointExceptionHandler(CPU::TrapFrame *Frame) +nsa void BreakpointExceptionHandler(CPU::TrapFrame *Frame) { fixme("Breakpoint exception"); UNUSED(Frame); } -SafeFunction void OverflowExceptionHandler(CPU::TrapFrame *Frame) +nsa void OverflowExceptionHandler(CPU::TrapFrame *Frame) { fixme("Overflow exception"); UNUSED(Frame); } -SafeFunction void BoundRangeExceptionHandler(CPU::TrapFrame *Frame) +nsa void BoundRangeExceptionHandler(CPU::TrapFrame *Frame) { fixme("Bound range exception"); UNUSED(Frame); } -SafeFunction void InvalidOpcodeExceptionHandler(CPU::TrapFrame *Frame) +nsa void InvalidOpcodeExceptionHandler(CPU::TrapFrame *Frame) { CrashHandler::EHPrint("Kernel tried to execute an invalid opcode.\n"); UNUSED(Frame); } -SafeFunction void DeviceNotAvailableExceptionHandler(CPU::TrapFrame *Frame) +nsa void DeviceNotAvailableExceptionHandler(CPU::TrapFrame *Frame) { fixme("Device not available exception"); UNUSED(Frame); } -SafeFunction void DoubleFaultExceptionHandler(CPU::TrapFrame *Frame) +nsa void DoubleFaultExceptionHandler(CPU::TrapFrame *Frame) { fixme("Double fault exception"); UNUSED(Frame); } -SafeFunction void CoprocessorSegmentOverrunExceptionHandler(CPU::TrapFrame *Frame) +nsa void CoprocessorSegmentOverrunExceptionHandler(CPU::TrapFrame *Frame) { fixme("Coprocessor segment overrun exception"); UNUSED(Frame); } -SafeFunction void InvalidTSSExceptionHandler(CPU::TrapFrame *Frame) +nsa void InvalidTSSExceptionHandler(CPU::TrapFrame *Frame) { fixme("Invalid TSS exception"); UNUSED(Frame); } -SafeFunction void SegmentNotPresentExceptionHandler(CPU::TrapFrame *Frame) +nsa void SegmentNotPresentExceptionHandler(CPU::TrapFrame *Frame) { fixme("Segment not present exception"); UNUSED(Frame); } -SafeFunction void StackFaultExceptionHandler(CPU::TrapFrame *Frame) +nsa void StackFaultExceptionHandler(CPU::TrapFrame *Frame) { CPU::x64::SelectorErrorCode SelCode = {.raw = Frame->ErrorCode}; #if defined(a64) @@ -129,7 +129,7 @@ SafeFunction void StackFaultExceptionHandler(CPU::TrapFrame *Frame) CrashHandler::EHPrint("Error code: %#lx\n", Frame->ErrorCode); } -SafeFunction void GeneralProtectionExceptionHandler(CPU::TrapFrame *Frame) +nsa void GeneralProtectionExceptionHandler(CPU::TrapFrame *Frame) { CPU::x64::SelectorErrorCode SelCode = {.raw = Frame->ErrorCode}; // switch (SelCode.Table) @@ -156,7 +156,7 @@ SafeFunction void GeneralProtectionExceptionHandler(CPU::TrapFrame *Frame) CrashHandler::EHPrint("Index: %#x\n", SelCode.Idx); } -SafeFunction void PageFaultExceptionHandler(CPU::TrapFrame *Frame) +nsa void PageFaultExceptionHandler(CPU::TrapFrame *Frame) { CPU::x64::PageFaultErrorCode params = {.raw = (uint32_t)Frame->ErrorCode}; #if defined(a64) @@ -305,43 +305,43 @@ SafeFunction void PageFaultExceptionHandler(CPU::TrapFrame *Frame) #endif } -SafeFunction void x87FloatingPointExceptionHandler(CPU::TrapFrame *Frame) +nsa void x87FloatingPointExceptionHandler(CPU::TrapFrame *Frame) { fixme("x87 floating point exception"); UNUSED(Frame); } -SafeFunction void AlignmentCheckExceptionHandler(CPU::TrapFrame *Frame) +nsa void AlignmentCheckExceptionHandler(CPU::TrapFrame *Frame) { fixme("Alignment check exception"); UNUSED(Frame); } -SafeFunction void MachineCheckExceptionHandler(CPU::TrapFrame *Frame) +nsa void MachineCheckExceptionHandler(CPU::TrapFrame *Frame) { fixme("Machine check exception"); UNUSED(Frame); } -SafeFunction void SIMDFloatingPointExceptionHandler(CPU::TrapFrame *Frame) +nsa void SIMDFloatingPointExceptionHandler(CPU::TrapFrame *Frame) { fixme("SIMD floating point exception"); UNUSED(Frame); } -SafeFunction void VirtualizationExceptionHandler(CPU::TrapFrame *Frame) +nsa void VirtualizationExceptionHandler(CPU::TrapFrame *Frame) { fixme("Virtualization exception"); UNUSED(Frame); } -SafeFunction void SecurityExceptionHandler(CPU::TrapFrame *Frame) +nsa void SecurityExceptionHandler(CPU::TrapFrame *Frame) { fixme("Security exception"); UNUSED(Frame); } -SafeFunction void UnknownExceptionHandler(CPU::TrapFrame *Frame) +nsa void UnknownExceptionHandler(CPU::TrapFrame *Frame) { fixme("Unknown exception"); UNUSED(Frame); diff --git a/core/crash/crash_handler.cpp b/core/crash/crash_handler.cpp index 94b321c..65302f9 100644 --- a/core/crash/crash_handler.cpp +++ b/core/crash/crash_handler.cpp @@ -51,13 +51,13 @@ namespace CrashHandler int SBIdx = 255; CrashKeyboardDriver *kbd; - SafeFunction void printfWrapper(char c, void *unused) + nsa void printfWrapper(char c, void *unused) { Display->Print(c, SBIdx, true); UNUSED(unused); } - SafeFunction void EHPrint(const char *Format, ...) + nsa void EHPrint(const char *Format, ...) { va_list args; va_start(args, Format); @@ -65,7 +65,7 @@ namespace CrashHandler va_end(args); } - SafeFunction void EHDumpData(void *Address, unsigned long Length) + nsa void EHDumpData(void *Address, unsigned long Length) { EHPrint("-------------------------------------------------------------------------\n"); Display->SetBuffer(SBIdx); @@ -101,7 +101,7 @@ namespace CrashHandler Display->SetBuffer(SBIdx); } - SafeFunction char *TrimWhiteSpace(char *str) + nsa char *TrimWhiteSpace(char *str) { char *end; while (*str == ' ') @@ -117,7 +117,7 @@ namespace CrashHandler CRData crashdata{}; - SafeFunction void DisplayTopOverlay() + nsa void DisplayTopOverlay() { Video::ScreenBuffer *sb = Display->GetBuffer(SBIdx); Video::Font *f = Display->GetCurrentFont(); @@ -252,7 +252,7 @@ namespace CrashHandler } } - SafeFunction void DisplayBottomOverlay() + nsa void DisplayBottomOverlay() { Video::ScreenBuffer *sb = Display->GetBuffer(SBIdx); Video::Font *f = Display->GetCurrentFont(); @@ -266,7 +266,7 @@ namespace CrashHandler EHPrint("\eAAAAAA> \eFAFAFA"); } - SafeFunction void ArrowInput(uint8_t key) + nsa void ArrowInput(uint8_t key) { switch (key) { @@ -337,7 +337,7 @@ namespace CrashHandler Display->SetBuffer(SBIdx); } - SafeFunction void UserInput(char *Input) + nsa void UserInput(char *Input) { SmartCriticalSection(UserInputLock); Display->ClearBuffer(SBIdx); @@ -816,7 +816,7 @@ namespace CrashHandler Display->SetBuffer(SBIdx); } - SafeFunction void StopAllCores() + nsa void StopAllCores() { #if defined(a86) /* FIXME: Can't send IPIs to other cores @@ -862,7 +862,7 @@ namespace CrashHandler #endif } - SafeFunction inline bool Handle_x86_64(CPU::TrapFrame *Frame) + nsa inline bool Handle_x86_64(CPU::TrapFrame *Frame) { #ifdef a64 trace("Exception at %#lx(%s)", Frame->rip, @@ -960,7 +960,7 @@ namespace CrashHandler return false; } - SafeFunction inline bool Handle_x86_32(CPU::TrapFrame *Frame) + nsa inline bool Handle_x86_32(CPU::TrapFrame *Frame) { #ifdef a32 trace("Exception at %#lx(%s)", Frame->eip, @@ -1059,7 +1059,7 @@ namespace CrashHandler return false; } - SafeFunction inline void Print_x86_64(CPU::TrapFrame *Frame) + nsa inline void Print_x86_64(CPU::TrapFrame *Frame) { #ifdef a64 CPU::x64::CR0 cr0 = CPU::x64::readcr0(); @@ -1132,7 +1132,7 @@ namespace CrashHandler #endif } - SafeFunction inline void Print_x86_32(CPU::TrapFrame *Frame) + nsa inline void Print_x86_32(CPU::TrapFrame *Frame) { #ifdef a32 CPU::x32::CR0 cr0 = CPU::x32::readcr0(); @@ -1192,7 +1192,7 @@ namespace CrashHandler #endif } - SafeFunction void Handle(void *Data) + nsa void Handle(void *Data) { // TODO: SUPPORT SMP CPU::Interrupts(CPU::Disable); diff --git a/core/crash/kb_drv.cpp b/core/crash/kb_drv.cpp index 5409f72..8b50035 100644 --- a/core/crash/kb_drv.cpp +++ b/core/crash/kb_drv.cpp @@ -236,7 +236,7 @@ namespace CrashHandler int BackSpaceLimit = 0; static char UserInputBuffer[1024]; - SafeFunction void CrashKeyboardDriver::OnInterruptReceived(CPU::TrapFrame *Frame) + nsa void CrashKeyboardDriver::OnInterruptReceived(CPU::TrapFrame *Frame) { #if defined(a86) UNUSED(Frame); diff --git a/core/crash/screens/console.cpp b/core/crash/screens/console.cpp index 339c564..5bc3272 100644 --- a/core/crash/screens/console.cpp +++ b/core/crash/screens/console.cpp @@ -34,7 +34,7 @@ namespace CrashHandler { - SafeFunction void DisplayConsoleScreen(CRData data) + nsa void DisplayConsoleScreen(CRData data) { EHPrint("TODO"); UNUSED(data); diff --git a/core/crash/screens/details.cpp b/core/crash/screens/details.cpp index 317839b..0a0cc88 100644 --- a/core/crash/screens/details.cpp +++ b/core/crash/screens/details.cpp @@ -34,7 +34,7 @@ namespace CrashHandler { - SafeFunction void DisplayDetailsScreen(CRData data) + nsa void DisplayDetailsScreen(CRData data) { if (data.Process) EHPrint("\e7981FCCurrent Process: %s(%ld)\n", diff --git a/core/crash/screens/main.cpp b/core/crash/screens/main.cpp index 05aa2f5..fe5b488 100644 --- a/core/crash/screens/main.cpp +++ b/core/crash/screens/main.cpp @@ -44,7 +44,7 @@ static const char *PagefaultDescriptions[8] = { namespace CrashHandler { - SafeFunction void DisplayMainScreen(CRData data) + nsa void DisplayMainScreen(CRData data) { CPU::TrapFrame *Frame = data.Frame; diff --git a/core/crash/screens/stack_frame.cpp b/core/crash/screens/stack_frame.cpp index b1c28f0..529a0e5 100644 --- a/core/crash/screens/stack_frame.cpp +++ b/core/crash/screens/stack_frame.cpp @@ -35,7 +35,7 @@ namespace CrashHandler { - SafeFunction void DisplayStackFrameScreen(CRData data) + nsa void DisplayStackFrameScreen(CRData data) { EHPrint("\eFAFAFATracing 10 frames..."); TraceFrames(data, 10, KernelSymbolTable, true); diff --git a/core/crash/screens/tasks.cpp b/core/crash/screens/tasks.cpp index c0860f2..28a55b2 100644 --- a/core/crash/screens/tasks.cpp +++ b/core/crash/screens/tasks.cpp @@ -34,7 +34,7 @@ namespace CrashHandler { - SafeFunction void DisplayTasksScreen(CRData data) + nsa void DisplayTasksScreen(CRData data) { const char *StatusColor[] = { "FF0000", // Unknown diff --git a/core/crash/stack_frame.cpp b/core/crash/stack_frame.cpp index 76796ac..a579466 100644 --- a/core/crash/stack_frame.cpp +++ b/core/crash/stack_frame.cpp @@ -42,7 +42,7 @@ namespace CrashHandler uintptr_t rip; }; - SafeFunction void TraceFrames(CRData data, int Count, + nsa void TraceFrames(CRData data, int Count, SymbolResolver::Symbols *SymHandle, bool Kernel) { diff --git a/core/crash/user_handler.cpp b/core/crash/user_handler.cpp index 6e04c7e..4814545 100644 --- a/core/crash/user_handler.cpp +++ b/core/crash/user_handler.cpp @@ -32,7 +32,7 @@ #include "../../kernel.h" -SafeFunction bool UserModeExceptionHandler(CPU::TrapFrame *Frame) +nsa bool UserModeExceptionHandler(CPU::TrapFrame *Frame) { CPUData *CurCPU = GetCurrentCPU(); Tasking::PCB *CurProc = CurCPU->CurrentProcess; diff --git a/core/interrupts_manager.cpp b/core/interrupts_manager.cpp index 6195007..3cc7e1c 100644 --- a/core/interrupts_manager.cpp +++ b/core/interrupts_manager.cpp @@ -37,7 +37,7 @@ #include "crashhandler.hpp" #include "../kernel.h" -extern "C" SafeFunction void ExceptionHandler(void *Data) +extern "C" nsa void ExceptionHandler(void *Data) { CrashHandler::Handle(Data); } @@ -192,7 +192,7 @@ namespace Interrupts #endif } - SafeFunction void RemoveAll() + nsa void RemoveAll() { forItr(itr, RegisteredEvents) { @@ -280,7 +280,7 @@ namespace Interrupts warn("IRQ%d not found.", InterruptNumber); } - extern "C" SafeFunction void MainInterruptHandler(void *Data) + extern "C" nsa void MainInterruptHandler(void *Data) { #if defined(a64) CPU::x64::TrapFrame *Frame = (CPU::x64::TrapFrame *)Data; diff --git a/core/uart.cpp b/core/uart.cpp index 3460b8f..5f376a5 100644 --- a/core/uart.cpp +++ b/core/uart.cpp @@ -54,7 +54,7 @@ namespace UniversalAsynchronousReceiverTransmitter /* TODO: Serial Port implementation needs reword. https://wiki.osdev.org/Serial_Ports */ - SafeFunction NIF UART::UART(SerialPorts Port) + nsa NIF UART::UART(SerialPorts Port) { #if defined(a86) if (Port == COMNULL) @@ -132,9 +132,9 @@ namespace UniversalAsynchronousReceiverTransmitter #endif } - SafeFunction NIF UART::~UART() {} + nsa NIF UART::~UART() {} - SafeFunction NIF void UART::Write(uint8_t Char) + nsa NIF void UART::Write(uint8_t Char) { if (!this->IsAvailable) return; @@ -148,7 +148,7 @@ namespace UniversalAsynchronousReceiverTransmitter e->OnSent(Char); } - SafeFunction NIF uint8_t UART::Read() + nsa NIF uint8_t UART::Read() { if (!this->IsAvailable) return 0; @@ -168,13 +168,13 @@ namespace UniversalAsynchronousReceiverTransmitter } } - SafeFunction NIF Events::Events(SerialPorts Port) + nsa NIF Events::Events(SerialPorts Port) { this->Port = Port; RegisteredEvents.push_back(this); } - SafeFunction NIF Events::~Events() + nsa NIF Events::~Events() { forItr(itr, RegisteredEvents) { diff --git a/include/cpu.hpp b/include/cpu.hpp index 78825b6..93cd8f0 100644 --- a/include/cpu.hpp +++ b/include/cpu.hpp @@ -139,7 +139,7 @@ namespace CPU /** * @brief Pause the CPU */ - SafeFunction static __always_inline inline void Pause(bool Loop = false) + nsa static __always_inline inline void Pause(bool Loop = false) { do { @@ -154,7 +154,7 @@ namespace CPU /** * @brief Stop the CPU (infinite loop) */ - SafeFunction __noreturn __used inline void Stop() + nsa __noreturn __used inline void Stop() { #if defined(a86) asmv("CPUStopLoop:\n" @@ -174,7 +174,7 @@ namespace CPU /** * @brief Halt the CPU */ - SafeFunction static __always_inline inline void Halt(bool Loop = false) + nsa static __always_inline inline void Halt(bool Loop = false) { do { @@ -444,7 +444,7 @@ namespace CPU #endif } - SafeFunction static inline void lgdt(void *gdt) + nsa static inline void lgdt(void *gdt) { #ifdef a32 asmv("lgdt (%0)" @@ -455,7 +455,7 @@ namespace CPU #endif } - SafeFunction static inline void lidt(void *idt) + nsa static inline void lidt(void *idt) { #ifdef a32 asmv("lidt (%0)" @@ -466,7 +466,7 @@ namespace CPU #endif } - SafeFunction static inline void ltr(uint16_t Segment) + nsa static inline void ltr(uint16_t Segment) { #ifdef a32 asmv("ltr %0" @@ -477,7 +477,7 @@ namespace CPU #endif } - SafeFunction static inline void invlpg(void *Address) + nsa static inline void invlpg(void *Address) { #ifdef a32 asmv("invlpg (%0)" @@ -489,7 +489,7 @@ namespace CPU #endif } - SafeFunction static inline void fxsave(void *FXSaveArea) + nsa static inline void fxsave(void *FXSaveArea) { #ifdef a32 if (!FXSaveArea) @@ -504,7 +504,7 @@ namespace CPU #endif } - SafeFunction static inline void fxrstor(void *FXRstorArea) + nsa static inline void fxrstor(void *FXRstorArea) { #ifdef a32 if (!FXRstorArea) @@ -831,7 +831,7 @@ namespace CPU uint8_t xmm[16][16]; } __packed __aligned(16); - SafeFunction static inline void lgdt(void *gdt) + nsa static inline void lgdt(void *gdt) { #ifdef a64 asmv("lgdt (%0)" @@ -840,7 +840,7 @@ namespace CPU #endif } - SafeFunction static inline void lidt(void *idt) + nsa static inline void lidt(void *idt) { #ifdef a64 asmv("lidt (%0)" @@ -849,7 +849,7 @@ namespace CPU #endif } - SafeFunction static inline void ltr(uint16_t Segment) + nsa static inline void ltr(uint16_t Segment) { #ifdef a64 asmv("ltr %0" @@ -858,7 +858,7 @@ namespace CPU #endif } - SafeFunction static inline void invlpg(void *Address) + nsa static inline void invlpg(void *Address) { #ifdef a64 asmv("invlpg (%0)" @@ -877,7 +877,7 @@ namespace CPU * @param ecx ECX * @param edx EDX */ - SafeFunction static inline void cpuid(uint32_t Function, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) + nsa static inline void cpuid(uint32_t Function, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { #ifdef a64 asmv("cpuid" @@ -893,14 +893,14 @@ namespace CPU * * @return uint32_t */ - SafeFunction static inline uint32_t GetHighestLeaf() + nsa static inline uint32_t GetHighestLeaf() { uint32_t eax, ebx, ecx, edx; cpuid(0x0, &eax, &ebx, &ecx, &edx); return eax; } - SafeFunction static inline void fxsave(void *FXSaveArea) + nsa static inline void fxsave(void *FXSaveArea) { #ifdef a64 if (!FXSaveArea || FXSaveArea >= (char *)0xfffffffffffff000) @@ -913,7 +913,7 @@ namespace CPU #endif } - SafeFunction static inline void fxrstor(void *FXRstorArea) + nsa static inline void fxrstor(void *FXRstorArea) { #ifdef a64 if (!FXRstorArea || FXRstorArea >= (char *)0xfffffffffffff000) diff --git a/include/cpu/membar.hpp b/include/cpu/membar.hpp index 0390285..f8c1ec3 100644 --- a/include/cpu/membar.hpp +++ b/include/cpu/membar.hpp @@ -24,7 +24,7 @@ namespace CPU { namespace MemBar { - SafeFunction static inline void Barrier() + nsa static inline void Barrier() { #if defined(a86) asmv("" :: @@ -35,7 +35,7 @@ namespace CPU #endif } - SafeFunction static inline void Fence() + nsa static inline void Fence() { #if defined(a86) asmv("mfence" :: @@ -46,7 +46,7 @@ namespace CPU #endif } - SafeFunction static inline void StoreFence() + nsa static inline void StoreFence() { #if defined(a86) asmv("sfence" :: @@ -57,7 +57,7 @@ namespace CPU #endif } - SafeFunction static inline void LoadFence() + nsa static inline void LoadFence() { #if defined(a86) asmv("lfence" :: diff --git a/include/cpu/x86/x32/cr.hpp b/include/cpu/x86/x32/cr.hpp index 1cf42ba..840ff74 100644 --- a/include/cpu/x86/x32/cr.hpp +++ b/include/cpu/x86/x32/cr.hpp @@ -152,7 +152,7 @@ namespace CPU uint32_t raw; } CR8; #if defined(a32) - SafeFunction static inline CR0 readcr0() + nsa static inline CR0 readcr0() { uint32_t Result = 0; asmv("mov %%cr0, %[Result]" @@ -160,7 +160,7 @@ namespace CPU return (CR0){.raw = Result}; } - SafeFunction static inline CR2 readcr2() + nsa static inline CR2 readcr2() { uint32_t Result = 0; asmv("mov %%cr2, %[Result]" @@ -168,7 +168,7 @@ namespace CPU return (CR2){.raw = Result}; } - SafeFunction static inline CR3 readcr3() + nsa static inline CR3 readcr3() { uint32_t Result = 0; asmv("mov %%cr3, %[Result]" @@ -176,7 +176,7 @@ namespace CPU return (CR3){.raw = Result}; } - SafeFunction static inline CR4 readcr4() + nsa static inline CR4 readcr4() { uint32_t Result = 0; asmv("mov %%cr4, %[Result]" @@ -184,7 +184,7 @@ namespace CPU return (CR4){.raw = Result}; } - SafeFunction static inline CR8 readcr8() + nsa static inline CR8 readcr8() { uint32_t Result = 0; asmv("mov %%cr8, %[Result]" @@ -192,7 +192,7 @@ namespace CPU return (CR8){.raw = Result}; } - SafeFunction static inline void writecr0(CR0 ControlRegister) + nsa static inline void writecr0(CR0 ControlRegister) { asmv("mov %[ControlRegister], %%cr0" : @@ -200,7 +200,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr2(CR2 ControlRegister) + nsa static inline void writecr2(CR2 ControlRegister) { asmv("mov %[ControlRegister], %%cr2" : @@ -208,7 +208,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr3(CR3 ControlRegister) + nsa static inline void writecr3(CR3 ControlRegister) { asmv("mov %[ControlRegister], %%cr3" : @@ -216,7 +216,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr4(CR4 ControlRegister) + nsa static inline void writecr4(CR4 ControlRegister) { asmv("mov %[ControlRegister], %%cr4" : @@ -224,7 +224,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr8(CR8 ControlRegister) + nsa static inline void writecr8(CR8 ControlRegister) { asmv("mov %[ControlRegister], %%cr8" : diff --git a/include/cpu/x86/x32/msr.hpp b/include/cpu/x86/x32/msr.hpp index 174b7ad..1266279 100644 --- a/include/cpu/x86/x32/msr.hpp +++ b/include/cpu/x86/x32/msr.hpp @@ -401,7 +401,7 @@ namespace CPU }; #if defined(a32) - SafeFunction static inline uint64_t rdmsr(uint32_t msr) + nsa static inline uint64_t rdmsr(uint32_t msr) { uint32_t Low, High; asmv("rdmsr" @@ -411,7 +411,7 @@ namespace CPU return ((uint64_t)Low) | (((uint64_t)High) << 32); } - SafeFunction static inline void wrmsr(uint32_t msr, uint64_t Value) + nsa static inline void wrmsr(uint32_t msr, uint64_t Value) { uint32_t Low = (uint32_t)Value, High = (uint32_t)(Value >> 32); asmv("wrmsr" diff --git a/include/cpu/x86/x64/cr.hpp b/include/cpu/x86/x64/cr.hpp index 2f770c2..dd3dde2 100644 --- a/include/cpu/x86/x64/cr.hpp +++ b/include/cpu/x86/x64/cr.hpp @@ -190,7 +190,7 @@ namespace CPU } XCR0; #if defined(a64) - SafeFunction static inline CR0 readcr0() + nsa static inline CR0 readcr0() { uint64_t Result = 0; asmv("mov %%cr0, %[Result]" @@ -198,7 +198,7 @@ namespace CPU return (CR0){.raw = Result}; } - SafeFunction static inline CR2 readcr2() + nsa static inline CR2 readcr2() { uint64_t Result = 0; asmv("mov %%cr2, %[Result]" @@ -206,7 +206,7 @@ namespace CPU return (CR2){.raw = Result}; } - SafeFunction static inline CR3 readcr3() + nsa static inline CR3 readcr3() { uint64_t Result = 0; asmv("mov %%cr3, %[Result]" @@ -214,7 +214,7 @@ namespace CPU return (CR3){.raw = Result}; } - SafeFunction static inline CR4 readcr4() + nsa static inline CR4 readcr4() { uint64_t Result = 0; asmv("mov %%cr4, %[Result]" @@ -222,7 +222,7 @@ namespace CPU return (CR4){.raw = Result}; } - SafeFunction static inline CR8 readcr8() + nsa static inline CR8 readcr8() { uint64_t Result = 0; asmv("mov %%cr8, %[Result]" @@ -230,7 +230,7 @@ namespace CPU return (CR8){.raw = Result}; } - SafeFunction static inline XCR0 readxcr0() + nsa static inline XCR0 readxcr0() { uint64_t Result = 0; asmv("xgetbv" @@ -240,7 +240,7 @@ namespace CPU return (XCR0){.raw = Result}; } - SafeFunction static inline void writecr0(CR0 ControlRegister) + nsa static inline void writecr0(CR0 ControlRegister) { asmv("mov %[ControlRegister], %%cr0" : @@ -248,7 +248,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr2(CR2 ControlRegister) + nsa static inline void writecr2(CR2 ControlRegister) { asmv("mov %[ControlRegister], %%cr2" : @@ -256,7 +256,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr3(CR3 ControlRegister) + nsa static inline void writecr3(CR3 ControlRegister) { asmv("mov %[ControlRegister], %%cr3" : @@ -264,7 +264,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr4(CR4 ControlRegister) + nsa static inline void writecr4(CR4 ControlRegister) { asmv("mov %[ControlRegister], %%cr4" : @@ -272,7 +272,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writecr8(CR8 ControlRegister) + nsa static inline void writecr8(CR8 ControlRegister) { asmv("mov %[ControlRegister], %%cr8" : @@ -280,7 +280,7 @@ namespace CPU : "memory"); } - SafeFunction static inline void writexcr0(XCR0 ControlRegister) + nsa static inline void writexcr0(XCR0 ControlRegister) { asmv("xsetbv" : diff --git a/include/cpu/x86/x64/msr.hpp b/include/cpu/x86/x64/msr.hpp index 3950116..2fb7033 100644 --- a/include/cpu/x86/x64/msr.hpp +++ b/include/cpu/x86/x64/msr.hpp @@ -402,7 +402,7 @@ namespace CPU }; #if defined(a64) - SafeFunction static inline uint64_t rdmsr(uint32_t msr) + nsa static inline uint64_t rdmsr(uint32_t msr) { uint32_t Low, High; asmv("rdmsr" @@ -412,7 +412,7 @@ namespace CPU return ((uint64_t)Low) | (((uint64_t)High) << 32); } - SafeFunction static inline void wrmsr(uint32_t msr, uint64_t Value) + nsa static inline void wrmsr(uint32_t msr, uint64_t Value) { uint32_t Low = s_cst(uint32_t, Value), High = s_cst(uint32_t, Value >> 32); asmv("wrmsr" diff --git a/include/types.h b/include/types.h index 570f1c2..0ee02da 100644 --- a/include/types.h +++ b/include/types.h @@ -413,7 +413,8 @@ typedef uint48_t uint_fast48_t; #define PUBLIC __visibility("default") #define PRIVATE __visibility("hidden") -#define SafeFunction __no_stack_protector __no_sanitize_address __no_sanitize_undefined __no_address_safety_analysis __no_sanitize_thread +#define NoSecurityAnalysis __no_stack_protector __no_sanitize_address __no_sanitize_undefined __no_address_safety_analysis __no_sanitize_thread +#define nsa NoSecurityAnalysis #define NIF __no_instrument_function diff --git a/include/uart.hpp b/include/uart.hpp index 8755ddf..a218ef7 100644 --- a/include/uart.hpp +++ b/include/uart.hpp @@ -69,7 +69,7 @@ namespace UniversalAsynchronousReceiverTransmitter * @brief Get the Registered Port object * @return SerialPorts */ - SafeFunction NIF SerialPorts GetRegisteredPort() { return this->Port; } + nsa NIF SerialPorts GetRegisteredPort() { return this->Port; } /** * @brief Called when a character is sent. diff --git a/profiling/cyg.cpp b/profiling/cyg.cpp index 841d7e0..bdea154 100644 --- a/profiling/cyg.cpp +++ b/profiling/cyg.cpp @@ -28,7 +28,7 @@ unsigned int Level = 0; using namespace UniversalAsynchronousReceiverTransmitter; UART com2(COM2); -static inline SafeFunction NIF void profiler_uart_wrapper(char c, void *unused) +static inline nsa NIF void profiler_uart_wrapper(char c, void *unused) { bool renable = EnableProfiler; EnableProfiler = false; @@ -38,7 +38,7 @@ static inline SafeFunction NIF void profiler_uart_wrapper(char c, void *unused) EnableProfiler = true; } -EXTERNC SafeFunction NIF void __cyg_profile_func_enter(void *Function, void *CallSite) +EXTERNC nsa NIF void __cyg_profile_func_enter(void *Function, void *CallSite) { if (!EnableProfiler) return; @@ -75,7 +75,7 @@ EXTERNC SafeFunction NIF void __cyg_profile_func_enter(void *Function, void *Cal Wait = false; } -EXTERNC SafeFunction NIF void __cyg_profile_func_exit(void *Function, void *CallSite) +EXTERNC nsa NIF void __cyg_profile_func_exit(void *Function, void *CallSite) { if (!EnableProfiler) return; diff --git a/profiling/gcov.cpp b/profiling/gcov.cpp index 8a47261..7bb47ee 100644 --- a/profiling/gcov.cpp +++ b/profiling/gcov.cpp @@ -55,7 +55,7 @@ struct gcov_info struct gcov_ctr_info counts[0]; }; -static inline SafeFunction NIF void gcov_uart_wrapper(char c, void *unused) +static inline nsa NIF void gcov_uart_wrapper(char c, void *unused) { UART(COM2).Write(c); UNUSED(unused); @@ -63,25 +63,25 @@ static inline SafeFunction NIF void gcov_uart_wrapper(char c, void *unused) // TODO: Implement -EXTERNC SafeFunction NIF void __gcov_init(gcov_info *p __unused) +EXTERNC nsa NIF void __gcov_init(gcov_info *p __unused) { } -EXTERNC SafeFunction NIF void __gcov_exit(void) +EXTERNC nsa NIF void __gcov_exit(void) { } -EXTERNC SafeFunction NIF void __gcov_flush(void) +EXTERNC nsa NIF void __gcov_flush(void) { } -EXTERNC SafeFunction NIF void __gcov_merge_add(gcov_type *counters, unsigned int n_counters) +EXTERNC nsa NIF void __gcov_merge_add(gcov_type *counters, unsigned int n_counters) { UNUSED(counters); UNUSED(n_counters); } -EXTERNC SafeFunction NIF void __gcov_merge_single(gcov_type *counters, unsigned int n_counters) +EXTERNC nsa NIF void __gcov_merge_single(gcov_type *counters, unsigned int n_counters) { UNUSED(counters); UNUSED(n_counters); diff --git a/profiling/gprof.cpp b/profiling/gprof.cpp index da5a3ba..3f20ffd 100644 --- a/profiling/gprof.cpp +++ b/profiling/gprof.cpp @@ -23,13 +23,13 @@ using namespace UniversalAsynchronousReceiverTransmitter; -static inline SafeFunction NIF void gprof_uart_wrapper(char c, void *unused) +static inline nsa NIF void gprof_uart_wrapper(char c, void *unused) { UART(COM2).Write(c); UNUSED(unused); } -EXTERNC SafeFunction NIF void mcount(unsigned long frompc, unsigned long selfpc) +EXTERNC nsa NIF void mcount(unsigned long frompc, unsigned long selfpc) { // TODO: Implement /* https://docs.kernel.org/trace/ftrace-design.html */ diff --git a/tasking/scheduler.cpp b/tasking/scheduler.cpp index a39db10..edbb361 100644 --- a/tasking/scheduler.cpp +++ b/tasking/scheduler.cpp @@ -106,7 +106,7 @@ #define wut_schedbg(m, ...) #endif -extern "C" SafeFunction NIF void TaskingScheduler_OneShot(int TimeSlice) +extern "C" nsa NIF void TaskingScheduler_OneShot(int TimeSlice) { if (TimeSlice == 0) TimeSlice = Tasking::TaskPriority::Normal; @@ -125,7 +125,7 @@ extern "C" SafeFunction NIF void TaskingScheduler_OneShot(int TimeSlice) namespace Tasking { #if defined(a86) - SafeFunction NIF bool Task::FindNewProcess(void *CPUDataPointer) + nsa NIF bool Task::FindNewProcess(void *CPUDataPointer) { CPUData *CurrentCPU = (CPUData *)CPUDataPointer; fnp_schedbg("%d processes", ProcessList.size()); @@ -178,7 +178,7 @@ namespace Tasking return false; } - SafeFunction NIF bool Task::GetNextAvailableThread(void *CPUDataPointer) + nsa NIF bool Task::GetNextAvailableThread(void *CPUDataPointer) { CPUData *CurrentCPU = (CPUData *)CPUDataPointer; @@ -237,7 +237,7 @@ namespace Tasking return false; } - SafeFunction NIF bool Task::GetNextAvailableProcess(void *CPUDataPointer) + nsa NIF bool Task::GetNextAvailableProcess(void *CPUDataPointer) { CPUData *CurrentCPU = (CPUData *)CPUDataPointer; @@ -297,7 +297,7 @@ namespace Tasking return false; } - SafeFunction NIF bool Task::SchedulerSearchProcessThread(void *CPUDataPointer) + nsa NIF bool Task::SchedulerSearchProcessThread(void *CPUDataPointer) { CPUData *CurrentCPU = (CPUData *)CPUDataPointer; @@ -342,7 +342,7 @@ namespace Tasking return false; } - SafeFunction NIF void Task::UpdateProcessState() + nsa NIF void Task::UpdateProcessState() { foreach (auto process in ProcessList) { @@ -378,7 +378,7 @@ namespace Tasking } } - SafeFunction NIF void Task::WakeUpThreads() + nsa NIF void Task::WakeUpThreads() { foreach (auto process in ProcessList) { @@ -418,7 +418,7 @@ namespace Tasking } } - SafeFunction NIF void Task::CleanupTerminated() + nsa NIF void Task::CleanupTerminated() { foreach (auto pcb in ProcessList) { @@ -473,7 +473,7 @@ namespace Tasking "SchedulerSearchProcessThread", }; - SafeFunction NIF void OnScreenTaskManagerUpdate() + nsa NIF void OnScreenTaskManagerUpdate() { TimeManager->Sleep(10, Time::Units::Milliseconds); Video::ScreenBuffer *sb = Display->GetBuffer(0); @@ -513,7 +513,7 @@ namespace Tasking } #endif - SafeFunction NIF void Task::Schedule(CPU::TrapFrame *Frame) + nsa NIF void Task::Schedule(CPU::TrapFrame *Frame) { if (unlikely(StopScheduler)) { @@ -725,37 +725,37 @@ namespace Tasking CurrentCPU->CurrentProcess->PageTable->Update(); } - SafeFunction NIF void Task::OnInterruptReceived(CPU::TrapFrame *Frame) + nsa NIF void Task::OnInterruptReceived(CPU::TrapFrame *Frame) { SmartCriticalSection(SchedulerLock); this->Schedule(Frame); } #elif defined(aa64) - SafeFunction bool Task::FindNewProcess(void *CPUDataPointer) + nsa bool Task::FindNewProcess(void *CPUDataPointer) { fixme("unimplemented"); } - SafeFunction bool Task::GetNextAvailableThread(void *CPUDataPointer) + nsa bool Task::GetNextAvailableThread(void *CPUDataPointer) { fixme("unimplemented"); } - SafeFunction bool Task::GetNextAvailableProcess(void *CPUDataPointer) + nsa bool Task::GetNextAvailableProcess(void *CPUDataPointer) { fixme("unimplemented"); } - SafeFunction bool Task::SchedulerSearchProcessThread(void *CPUDataPointer) + nsa bool Task::SchedulerSearchProcessThread(void *CPUDataPointer) { fixme("unimplemented"); } - SafeFunction void Task::Schedule(CPU::TrapFrame *Frame) + nsa void Task::Schedule(CPU::TrapFrame *Frame) { fixme("unimplemented"); } - SafeFunction void Task::OnInterruptReceived(CPU::TrapFrame *Frame) { this->Schedule(Frame); } + nsa void Task::OnInterruptReceived(CPU::TrapFrame *Frame) { this->Schedule(Frame); } #endif } diff --git a/tasking/task.cpp b/tasking/task.cpp index 8adb773..f4572bc 100644 --- a/tasking/task.cpp +++ b/tasking/task.cpp @@ -61,7 +61,7 @@ namespace Tasking #endif } - SafeFunction bool Task::InvalidPCB(PCB *pcb) + nsa bool Task::InvalidPCB(PCB *pcb) { if (!pcb) return true; @@ -81,7 +81,7 @@ namespace Tasking return false; } - SafeFunction bool Task::InvalidTCB(TCB *tcb) + nsa bool Task::InvalidTCB(TCB *tcb) { if (!tcb) return true; @@ -101,7 +101,7 @@ namespace Tasking return false; } - SafeFunction bool Task::RemoveThread(TCB *Thread) + nsa bool Task::RemoveThread(TCB *Thread) { debug("Thread \"%s\"(%d) removed from process \"%s\"(%d)", Thread->Name, Thread->ID, Thread->Parent->Name, @@ -111,7 +111,7 @@ namespace Tasking return true; } - SafeFunction bool Task::RemoveProcess(PCB *Process) + nsa bool Task::RemoveProcess(PCB *Process) { if (unlikely(InvalidPCB(Process))) return false; @@ -131,7 +131,7 @@ namespace Tasking return true; } - SafeFunction void Task::UpdateUsage(TaskInfo *Info, TaskExecutionMode Mode, int Core) + nsa void Task::UpdateUsage(TaskInfo *Info, TaskExecutionMode Mode, int Core) { UNUSED(Core); uint64_t CurrentTime = TimeManager->GetCounter();