From 650fee520f526d9cd5ffa75735bd94d5140dd247 Mon Sep 17 00:00:00 2001 From: Amlal Date: Sat, 20 Jul 2024 08:43:16 +0200 Subject: [IMP] See below. - Revoke OTA flag for now inside bootloader (newosldr #4) - Rework Comm as SCI (System Call Interface) (newoskrnl #3) - Rework and fix some parts of the scheduler (newoskrnl #2) - Return from thread when region is zero (newosldr #1) - Separate allocation functions and c++ runtime from each other. (DDK #5) - Rename kHartStandard to kStandard (newoskrnl #6) Signed-off-by: Amlal --- Drivers/Hello/Hello.c | 131 ------------------------------------ Drivers/Hello/Main.c | 131 ++++++++++++++++++++++++++++++++++++ Drivers/Hello/x86_64.mk | 2 +- Drivers/SampleDriver/Main.c | 20 ++++++ Drivers/SampleDriver/SampleDriver.c | 20 ------ Drivers/VideoDrv/Main.cxx | 22 ++++++ Drivers/VideoDrv/VideoDrv.cxx | 22 ------ 7 files changed, 174 insertions(+), 174 deletions(-) delete mode 100644 Drivers/Hello/Hello.c create mode 100644 Drivers/Hello/Main.c create mode 100644 Drivers/SampleDriver/Main.c delete mode 100644 Drivers/SampleDriver/SampleDriver.c create mode 100644 Drivers/VideoDrv/Main.cxx delete mode 100644 Drivers/VideoDrv/VideoDrv.cxx (limited to 'Drivers') diff --git a/Drivers/Hello/Hello.c b/Drivers/Hello/Hello.c deleted file mode 100644 index 10feda48..00000000 --- a/Drivers/Hello/Hello.c +++ /dev/null @@ -1,131 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies - -------------------------------------------- */ - -#include -#include -#include - -struct HelloMasterConfigHeader; -struct HelloMasterConfigHeaderInput; - -struct HelloMasterConfigHeaderInput -{ - size_t fSizeOfOutput; - struct HelloMasterConfigHeader* fOutput; -}; - -/// @file Hello.c -/// @brief Zero configuration protocol, a much more better protocol for zero configuration. - -#define cHMCHMaxDataLength (1024) - -typedef struct HelloMasterConfigHeader -{ - int64_t fMagic; - int64_t fVersion; - int64_t fSourceAddress; - size_t fDataLength; - wchar_t fUTF16Data[cHMCHMaxDataLength]; -} __attribute__((packed)) HelloMasterConfigHeader; - -#define cHMCHDeviceLen 255 - -static kernelDeviceRef cDev = nil; -static char* cDeviceUUID = nil; // 3ed40738-c7d6-4b59-afdf-3c104b05fbf -static HelloMasterConfigHeader* cHeader = nil; - -/// @brief Link to master device to attribute DHCP lease. -static void __hello_link_device(void* a0) -{ - kernelPrintStr("Hello: linking...\r"); - - if (!cDev) - { - // open raw network device. - cDev = kernelOpenDevice("BROADCAST:\\"); - } - - cDev->write("+LINK", kernelStringLength("+LINK")); - cDev->wait(); - - cDev->write((void*)cDeviceUUID, kernelStringLength(cDeviceUUID)); - cDev->wait(); - - if (cHeader) - { - kernelFree(cHeader); - cHeader = nil; - } - - cHeader = cDev->read(nil, sizeof(HelloMasterConfigHeader)); -} - -static void __hello_get_hmch(void* a0) -{ - if (a0 == nil) - return; - - kernelPrintStr("Hello: returning header...\r"); - - struct HelloMasterConfigHeaderInput* in = a0; - in->fOutput = cHeader; - in->fSizeOfOutput = sizeof(in->fOutput); -} - -static void __hello_unlink_device(void* a0) -{ - kernelPrintStr("Hello: unlinking...\r"); - - if (cDev) - { - cDev->write("+UNLINK", kernelStringLength("+UNLINK")); - cDev->wait(); - - /// here is my uuid and my config header. Please disconnect me. - cDev->write((void*)cDeviceUUID, kernelStringLength(cDeviceUUID)); - cDev->write(cHeader, sizeof(cHeader)); - - cDev->wait(); - - kernelCloseDevice(cDev); - cDev = nil; - } - - if (cDeviceUUID) - { - kernelFree((void*)cDeviceUUID); - cDeviceUUID = nil; - } - - cDev = nil; -} - -int __at_enter(void) -{ - kernelPrintStr("Hello: starting up Helloconf...\r"); - - cDeviceUUID = kernelAlloc(sizeof(char) * cHMCHDeviceLen); - - kernelAddSyscall(0, __hello_link_device); - kernelAddSyscall(1, __hello_unlink_device); - kernelAddSyscall(2, __hello_get_hmch); - - return 0; -} - -int __at_exit(void) -{ - kernelPrintStr("Hello: starting up Helloconf...\r"); - - // first unlink. - __hello_unlink_device(nil); - - // then unregister syscalls. - kernelAddSyscall(0, nil); - kernelAddSyscall(1, nil); - - return 0; -} diff --git a/Drivers/Hello/Main.c b/Drivers/Hello/Main.c new file mode 100644 index 00000000..10feda48 --- /dev/null +++ b/Drivers/Hello/Main.c @@ -0,0 +1,131 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies + +------------------------------------------- */ + +#include +#include +#include + +struct HelloMasterConfigHeader; +struct HelloMasterConfigHeaderInput; + +struct HelloMasterConfigHeaderInput +{ + size_t fSizeOfOutput; + struct HelloMasterConfigHeader* fOutput; +}; + +/// @file Hello.c +/// @brief Zero configuration protocol, a much more better protocol for zero configuration. + +#define cHMCHMaxDataLength (1024) + +typedef struct HelloMasterConfigHeader +{ + int64_t fMagic; + int64_t fVersion; + int64_t fSourceAddress; + size_t fDataLength; + wchar_t fUTF16Data[cHMCHMaxDataLength]; +} __attribute__((packed)) HelloMasterConfigHeader; + +#define cHMCHDeviceLen 255 + +static kernelDeviceRef cDev = nil; +static char* cDeviceUUID = nil; // 3ed40738-c7d6-4b59-afdf-3c104b05fbf +static HelloMasterConfigHeader* cHeader = nil; + +/// @brief Link to master device to attribute DHCP lease. +static void __hello_link_device(void* a0) +{ + kernelPrintStr("Hello: linking...\r"); + + if (!cDev) + { + // open raw network device. + cDev = kernelOpenDevice("BROADCAST:\\"); + } + + cDev->write("+LINK", kernelStringLength("+LINK")); + cDev->wait(); + + cDev->write((void*)cDeviceUUID, kernelStringLength(cDeviceUUID)); + cDev->wait(); + + if (cHeader) + { + kernelFree(cHeader); + cHeader = nil; + } + + cHeader = cDev->read(nil, sizeof(HelloMasterConfigHeader)); +} + +static void __hello_get_hmch(void* a0) +{ + if (a0 == nil) + return; + + kernelPrintStr("Hello: returning header...\r"); + + struct HelloMasterConfigHeaderInput* in = a0; + in->fOutput = cHeader; + in->fSizeOfOutput = sizeof(in->fOutput); +} + +static void __hello_unlink_device(void* a0) +{ + kernelPrintStr("Hello: unlinking...\r"); + + if (cDev) + { + cDev->write("+UNLINK", kernelStringLength("+UNLINK")); + cDev->wait(); + + /// here is my uuid and my config header. Please disconnect me. + cDev->write((void*)cDeviceUUID, kernelStringLength(cDeviceUUID)); + cDev->write(cHeader, sizeof(cHeader)); + + cDev->wait(); + + kernelCloseDevice(cDev); + cDev = nil; + } + + if (cDeviceUUID) + { + kernelFree((void*)cDeviceUUID); + cDeviceUUID = nil; + } + + cDev = nil; +} + +int __at_enter(void) +{ + kernelPrintStr("Hello: starting up Helloconf...\r"); + + cDeviceUUID = kernelAlloc(sizeof(char) * cHMCHDeviceLen); + + kernelAddSyscall(0, __hello_link_device); + kernelAddSyscall(1, __hello_unlink_device); + kernelAddSyscall(2, __hello_get_hmch); + + return 0; +} + +int __at_exit(void) +{ + kernelPrintStr("Hello: starting up Helloconf...\r"); + + // first unlink. + __hello_unlink_device(nil); + + // then unregister syscalls. + kernelAddSyscall(0, nil); + kernelAddSyscall(1, nil); + + return 0; +} diff --git a/Drivers/Hello/x86_64.mk b/Drivers/Hello/x86_64.mk index 07f41807..4ddb7e5b 100644 --- a/Drivers/Hello/x86_64.mk +++ b/Drivers/Hello/x86_64.mk @@ -20,7 +20,7 @@ REM=rm REM_FLAG=-f FLAG_ASM=-f win64 -FLAG_GNU=-fshort-wchar -fno-rtti -fno-exceptions -D__DDK_AMD64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ \ +FLAG_GNU=-fshort-wchar -D__DDK_AMD64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ \ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ .PHONY: invalid-recipe diff --git a/Drivers/SampleDriver/Main.c b/Drivers/SampleDriver/Main.c new file mode 100644 index 00000000..6b54742f --- /dev/null +++ b/Drivers/SampleDriver/Main.c @@ -0,0 +1,20 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies + +------------------------------------------- */ + +#include +#include + +int __ImageStart(void) +{ + kernelPrintStr("SampleDriver: Starting up...\r"); + return 0; +} + +int __ImageEnd(void) +{ + kernelPrintStr("SampleDriver: Shutting down...\r"); + return 0; +} diff --git a/Drivers/SampleDriver/SampleDriver.c b/Drivers/SampleDriver/SampleDriver.c deleted file mode 100644 index 6b54742f..00000000 --- a/Drivers/SampleDriver/SampleDriver.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies - -------------------------------------------- */ - -#include -#include - -int __ImageStart(void) -{ - kernelPrintStr("SampleDriver: Starting up...\r"); - return 0; -} - -int __ImageEnd(void) -{ - kernelPrintStr("SampleDriver: Shutting down...\r"); - return 0; -} diff --git a/Drivers/VideoDrv/Main.cxx b/Drivers/VideoDrv/Main.cxx new file mode 100644 index 00000000..25c13b8e --- /dev/null +++ b/Drivers/VideoDrv/Main.cxx @@ -0,0 +1,22 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies + +------------------------------------------- */ + +#include +#include + +#include + +DK_EXTERN int __at_enter(void) +{ + kernelPrintStr("VideoDrv: Starting GPU...\r"); + return 0; +} + +DK_EXTERN int __at_exit(void) +{ + kernelPrintStr("VideoDrv: Shutting GPU...\r"); + return 0; +} diff --git a/Drivers/VideoDrv/VideoDrv.cxx b/Drivers/VideoDrv/VideoDrv.cxx deleted file mode 100644 index 25c13b8e..00000000 --- a/Drivers/VideoDrv/VideoDrv.cxx +++ /dev/null @@ -1,22 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies - -------------------------------------------- */ - -#include -#include - -#include - -DK_EXTERN int __at_enter(void) -{ - kernelPrintStr("VideoDrv: Starting GPU...\r"); - return 0; -} - -DK_EXTERN int __at_exit(void) -{ - kernelPrintStr("VideoDrv: Shutting GPU...\r"); - return 0; -} -- cgit v1.2.3