From b8f7ef086d1d1b1cd686fff04d0a587f8fd39d81 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 27 Mar 2025 17:24:21 +0100 Subject: add: new driver device kit API. (DDK) refactor: rename SCIKit -> user (then libuser.dylib) boot/modules/netboot: fixed compilation for amd64. Signed-off-by: Amlal El Mahrouss --- dev/boot/amd64-desktop.make | 4 ++-- dev/boot/modules/NetBoot/NetBoot.cc | 8 +++++--- dev/boot/modules/NetBoot/NetBoot.h | 2 +- dev/boot/modules/NetBoot/build.json | 4 ++-- dev/boot/src/HEL/AMD64/BootEFI.cc | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) (limited to 'dev/boot') diff --git a/dev/boot/amd64-desktop.make b/dev/boot/amd64-desktop.make index 22023923..5a827643 100644 --- a/dev/boot/amd64-desktop.make +++ b/dev/boot/amd64-desktop.make @@ -75,7 +75,7 @@ BOOTLOADER=bootz.exe KERNEL=neoskrnl.exe SYSCHK=syschk.sys STARTUP=startup.sys -SCIKIT=libSCIKit.dylib +SCIKIT=libuser.dylib .PHONY: invalid-recipe invalid-recipe: @@ -90,7 +90,7 @@ all: compile-amd64 $(COPY) src/$(BOOTLOADER) src/Root/EFI/BOOT/BOOTZ.EFI $(COPY) ../kernel/$(KERNEL) src/Root/$(KERNEL) $(COPY) ./modules/SysChk/$(SYSCHK) src/Root/$(SYSCHK) - $(COPY) ../SCIKit/$(SCIKIT) src/Root/$(SCIKIT) + $(COPY) ../user/$(SCIKIT) src/Root/$(SCIKIT) $(COPY) src/$(BOOTLOADER) src/Root/$(BOOTLOADER) .PHONY: disk diff --git a/dev/boot/modules/NetBoot/NetBoot.cc b/dev/boot/modules/NetBoot/NetBoot.cc index 16a9ae1e..1787045e 100644 --- a/dev/boot/modules/NetBoot/NetBoot.cc +++ b/dev/boot/modules/NetBoot/NetBoot.cc @@ -15,7 +15,7 @@ EXTERN_C Int32 ModuleMain(NeOS::HEL::BootInfoHeader* handover) { NETBOOT_INTERNET_HEADER inet{}; - /// TODO: Read Packet from localhost + /// TODO: Read packet from JSON file 'netboot.json' if (inet.PatchLength < 0) { @@ -27,7 +27,7 @@ EXTERN_C Int32 ModuleMain(NeOS::HEL::BootInfoHeader* handover) if (!inet.EEPROM) { - Boot::BootThread thread(inet.Data); + Boot::BootThread thread(inet.PatchData); if (thread.IsValid()) return thread.Start(handover, YES); @@ -35,7 +35,9 @@ EXTERN_C Int32 ModuleMain(NeOS::HEL::BootInfoHeader* handover) else { Boot::BootTextWriter writer; - writer.Write("NetBootLauncher: EEPROM flash not available for now.\r"); + writer.Write("NetBootLauncher: EEPROM flash is not available as of right now.\r"); + + /// TODO: Program new firmware to EEPROM (if crc and size matches) return kEfiFail; // TODO: Add support for EEPROM firmware update. } diff --git a/dev/boot/modules/NetBoot/NetBoot.h b/dev/boot/modules/NetBoot/NetBoot.h index aeeaf18b..e250ef27 100644 --- a/dev/boot/modules/NetBoot/NetBoot.h +++ b/dev/boot/modules/NetBoot/NetBoot.h @@ -29,5 +29,5 @@ typedef struct NETBOOT_INTERNET_HEADER NeOS::Char PatchTarget[kNetBootNameLen]; /// the target file. NeOS::Boolean EEPROM : 1; /// does it imply an EEPROM reprogram? NeOS::Boolean Preflight : 1; /// is it a preflight packet. - NeOS::Char Data[]; /// non preflight packet has a patch blob for a **PatchTarget** + NeOS::Char PatchData[]; /// non preflight packet has a patch blob for a **PatchTarget** } ATTRIBUTE(packed) NETBOOT_INTERNET_HEADER; diff --git a/dev/boot/modules/NetBoot/build.json b/dev/boot/modules/NetBoot/build.json index 2c92567d..db035094 100644 --- a/dev/boot/modules/NetBoot/build.json +++ b/dev/boot/modules/NetBoot/build.json @@ -2,10 +2,9 @@ "compiler_path": "x86_64-w64-mingw32-g++", "compiler_std": "c++20", "headers_path": ["../", "../../", "../../../kernel", "../../../", "./"], - "sources_path": [".cc", "*.S"], + "sources_path": ["*.cc", "*.S", "../../src/HEL/AMD64/*.cc", "../../src/HEL/AMD64/*.S", "../../src/*.cc"], "output_name": "netboot.sys", "compiler_flags": [ - "-ffreestanding", "-nostdlib", "-std=c++20", "-fPIC", @@ -16,6 +15,7 @@ "cpp_macros": [ "__NEOSKRNL__", "__BOOTZ__", + "__BOOTLDR_STANDALONE__", "__NE_AMD64__", "kNetBootVersionHighest=0x0100", "kNetBootVersionLowest=0x0100", diff --git a/dev/boot/src/HEL/AMD64/BootEFI.cc b/dev/boot/src/HEL/AMD64/BootEFI.cc index 5af3643b..0840bc31 100644 --- a/dev/boot/src/HEL/AMD64/BootEFI.cc +++ b/dev/boot/src/HEL/AMD64/BootEFI.cc @@ -280,7 +280,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr image_handle, } UInt32 sz_ver = sizeof(UInt64); - UInt64 ver = KERNEL_VERSION_BCD; + UInt64 ver = KERNEL_VERSION_BCD; ST->RuntimeServices->GetVariable(L"/props/kern_ver", kEfiGlobalNamespaceVarGUID, nullptr, &sz_ver, &ver); -- cgit v1.2.3