From eba5dbf36b5c96ce8d3e2c46cf9d798c3fb7ec89 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 22 Mar 2025 20:21:08 +0100 Subject: kernel(general): Refactor AHCI driver and clean up project structure - Reworked AHCI command setup: fixed command slot indexing and clarified memory setup - Updated AHCI disk initialization to use reference for ATAPI flag - Cleaned up verbose logging in scheduler and IRQ handler for a quieter kernel log - Updated boot image target from fat32.img to neos.img - Renamed and moved documentation files from `doc/` to `docs/` for consistency - Renamed `make_docs.sh` to `osx_docs.sh` to reflect platform-specific intent - Minor formatting improvements in DiskImage struct - Revised ReadMe: clarified mount instructions and removed outdated screenshots Signed-off-by: Amlal El Mahrouss --- ReadMe.md | 15 +---- dev/Boot/amd64-desktop.make | 2 +- .../HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc | 1 - dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc | 11 +++- dev/Kernel/src/UserProcessScheduler.cc | 3 - doc/AHCI_DESIGN.drawio | 40 ------------ doc/DDK.pdf | Bin 24997 -> 0 bytes doc/EPM.pdf | Bin 12517 -> 0 bytes doc/GUI_DESIGN.drawio | 34 ---------- doc/MBCI.drawio | 70 --------------------- doc/MFlash.pdf | Bin 25005 -> 0 bytes doc/NeFS.pdf | Bin 13466 -> 0 bytes doc/OS_DESIGN.drawio | 22 ------- doc/ROUND_ROBIN.drawio | 25 -------- doc/SCHED_DESIGN.drawio | 34 ---------- doc/TIMER_DESIGN.drawio | 49 --------------- doc/ZXD.drawio | 31 --------- doc/apic.png | Bin 203155 -> 0 bytes doc/filesystem.png | Bin 174261 -> 0 bytes docs/AHCI_DESIGN.drawio | 40 ++++++++++++ docs/DDK.pdf | Bin 0 -> 24997 bytes docs/EPM.pdf | Bin 0 -> 12517 bytes docs/GUI_DESIGN.drawio | 34 ++++++++++ docs/MBCI.drawio | 70 +++++++++++++++++++++ docs/MFlash.pdf | Bin 0 -> 25005 bytes docs/NeFS.pdf | Bin 0 -> 13466 bytes docs/OS_DESIGN.drawio | 22 +++++++ docs/ROUND_ROBIN.drawio | 25 ++++++++ docs/SCHED_DESIGN.drawio | 34 ++++++++++ docs/TIMER_DESIGN.drawio | 49 +++++++++++++++ docs/ZXD.drawio | 31 +++++++++ docs/apic.png | Bin 0 -> 203155 bytes docs/filesystem.png | Bin 0 -> 174261 bytes make_docs.sh | 5 -- osx_docs.sh | 5 ++ .../frameworks/DiskImage.fwrk/headers/DiskImage.h | 16 ++--- 36 files changed, 331 insertions(+), 337 deletions(-) delete mode 100644 doc/AHCI_DESIGN.drawio delete mode 100644 doc/DDK.pdf delete mode 100644 doc/EPM.pdf delete mode 100644 doc/GUI_DESIGN.drawio delete mode 100644 doc/MBCI.drawio delete mode 100644 doc/MFlash.pdf delete mode 100644 doc/NeFS.pdf delete mode 100644 doc/OS_DESIGN.drawio delete mode 100644 doc/ROUND_ROBIN.drawio delete mode 100644 doc/SCHED_DESIGN.drawio delete mode 100644 doc/TIMER_DESIGN.drawio delete mode 100644 doc/ZXD.drawio delete mode 100644 doc/apic.png delete mode 100644 doc/filesystem.png create mode 100644 docs/AHCI_DESIGN.drawio create mode 100644 docs/DDK.pdf create mode 100644 docs/EPM.pdf create mode 100644 docs/GUI_DESIGN.drawio create mode 100644 docs/MBCI.drawio create mode 100644 docs/MFlash.pdf create mode 100644 docs/NeFS.pdf create mode 100644 docs/OS_DESIGN.drawio create mode 100644 docs/ROUND_ROBIN.drawio create mode 100644 docs/SCHED_DESIGN.drawio create mode 100644 docs/TIMER_DESIGN.drawio create mode 100644 docs/ZXD.drawio create mode 100644 docs/apic.png create mode 100644 docs/filesystem.png delete mode 100755 make_docs.sh create mode 100755 osx_docs.sh diff --git a/ReadMe.md b/ReadMe.md index 45e9ba17..bef76a5c 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -10,13 +10,10 @@ - [GIT](https://git-scm.com/) - [BTB](https://github.com/ne-gh/btb) -## Builders's Notice: +## Notice for Contributors: -You must mount the contents to the fat32.img prior running! Otherwise the emulator won't find a valid ESP. - -## Contributors's Notice: - -Always use `run_format.sh` before commiting and pushing your code! +- You must mount the contents to the neos.img prior running! Otherwise the emulator won't find a valid ESP. +- Always use `run_format.sh` before commiting and pushing your code! ## Quick Install: @@ -29,10 +26,4 @@ cd kernel ./debug_ata.sh # Generic ATA PIO target ``` -## Screenshots: - -![FS](doc/filesystem.png) - -![APIC](doc/apic.png) - ###### Copyright (C) 2024-2025 Amlal EL Mahrouss, All rights reserved. diff --git a/dev/Boot/amd64-desktop.make b/dev/Boot/amd64-desktop.make index c1564b77..bf61b24e 100644 --- a/dev/Boot/amd64-desktop.make +++ b/dev/Boot/amd64-desktop.make @@ -28,7 +28,7 @@ BIOS=OVMF.fd IMG=epm-master-1.img IMG_2=epm-master-2.img -BOOT=./src/fat32.img +BOOT=./src/neos.img DISK_DRV = diff --git a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc index bc4bd330..05326ecb 100644 --- a/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc +++ b/dev/Kernel/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc @@ -74,7 +74,6 @@ EXTERN_C void idt_handle_scheduler(NeOS::UIntPtr rsp) try_count_before_brute = 100000UL; kIsScheduling = YES; - kout << "Kernel: Timer IRQ (Scheduler Notification).\r"; NeOS::UserProcessHelper::StartScheduling(); kIsScheduling = NO; diff --git a/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc index 27a57a93..a17f3843 100644 --- a/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc +++ b/dev/Kernel/HALKit/AMD64/Storage/AHCI+Generic.cc @@ -115,6 +115,8 @@ STATIC Void drv_std_input_output(UInt64 lba, UInt8* buffer, SizeT sector_sz, Siz volatile HbaCmdHeader* command_header = ((HbaCmdHeader*)(((UInt64)kSATAHba->Ports[kSATAIndex].Clb))); + command_header += slot; + MUST_PASS(command_header); command_header->Cfl = sizeof(FisRegH2D) / sizeof(UInt32); @@ -122,6 +124,7 @@ STATIC Void drv_std_input_output(UInt64 lba, UInt8* buffer, SizeT sector_sz, Siz command_header->Prdtl = (UInt16)((size_buffer - 1) >> 4) + 1; HbaCmdTbl* command_table = (HbaCmdTbl*)((VoidPtr)((UInt64)command_header->Ctba)); + rt_set_memory(command_table, 0, sizeof(HbaCmdTbl) + (command_header->Prdtl - 1) * sizeof(HbaPrdtEntry)); MUST_PASS(command_table); @@ -166,7 +169,9 @@ STATIC Void drv_std_input_output(UInt64 lba, UInt8* buffer, SizeT sector_sz, Siz h2d_fis->CountHigh = (size_buffer >> 8) & 0xFF; while (kSATAHba->Ports[kSATAIndex].Tfd & (kSATASRBsy | kSATASRDrq)) + { ; + } kSATAHba->Ports[kSATAIndex].Ci = (1 << slot); @@ -232,8 +237,9 @@ STATIC Void ahci_enable_and_probe() /// @brief Initializes an AHCI disk. /// @param pi the amount of ports that have been detected. +/// @param atapi reference value, tells whether we should detect ATAPI instead of SATA. /// @return if the disk was successfully initialized or not. -STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL atapi) +STATIC Bool drv_std_init_ahci(UInt16& pi, BOOL& atapi) { PCI::Iterator iterator(Types::PciDeviceKind::MassStorageController); @@ -390,7 +396,8 @@ Void drv_std_read(UInt64 lba, Char* buffer, SizeT sector_sz, SizeT size_buffer) Bool drv_std_init(UInt16& pi) { - return drv_std_init_ahci(pi, NO); + BOOL atapi = NO; + return drv_std_init_ahci(pi, atapi); } Bool drv_std_detected(Void) diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc index 95885ee5..1087ac6b 100644 --- a/dev/Kernel/src/UserProcessScheduler.cc +++ b/dev/Kernel/src/UserProcessScheduler.cc @@ -436,9 +436,6 @@ namespace NeOS kout << "UserProcessScheduler::Run(): This team doesn't have any process!\r"; return 0UL; } - - kout << "UserProcessScheduler::Run(): This team has a process capacity of: " << hex_number(mTeam.mProcessList.Capacity()) << kendl; - for (; process_index < mTeam.AsArray().Capacity(); ++process_index) { auto& process = mTeam.AsArray()[process_index]; diff --git a/doc/AHCI_DESIGN.drawio b/doc/AHCI_DESIGN.drawio deleted file mode 100644 index 73029de7..00000000 --- a/doc/AHCI_DESIGN.drawio +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/DDK.pdf b/doc/DDK.pdf deleted file mode 100644 index 7029e0cc..00000000 Binary files a/doc/DDK.pdf and /dev/null differ diff --git a/doc/EPM.pdf b/doc/EPM.pdf deleted file mode 100644 index d9eeebc9..00000000 Binary files a/doc/EPM.pdf and /dev/null differ diff --git a/doc/GUI_DESIGN.drawio b/doc/GUI_DESIGN.drawio deleted file mode 100644 index 3ada69be..00000000 --- a/doc/GUI_DESIGN.drawio +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/MBCI.drawio b/doc/MBCI.drawio deleted file mode 100644 index 9a8f4283..00000000 --- a/doc/MBCI.drawio +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/MFlash.pdf b/doc/MFlash.pdf deleted file mode 100644 index 2e6d7d42..00000000 Binary files a/doc/MFlash.pdf and /dev/null differ diff --git a/doc/NeFS.pdf b/doc/NeFS.pdf deleted file mode 100644 index 1b804346..00000000 Binary files a/doc/NeFS.pdf and /dev/null differ diff --git a/doc/OS_DESIGN.drawio b/doc/OS_DESIGN.drawio deleted file mode 100644 index d704b481..00000000 --- a/doc/OS_DESIGN.drawio +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/ROUND_ROBIN.drawio b/doc/ROUND_ROBIN.drawio deleted file mode 100644 index 46c6304b..00000000 --- a/doc/ROUND_ROBIN.drawio +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/SCHED_DESIGN.drawio b/doc/SCHED_DESIGN.drawio deleted file mode 100644 index ab75d000..00000000 --- a/doc/SCHED_DESIGN.drawio +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/TIMER_DESIGN.drawio b/doc/TIMER_DESIGN.drawio deleted file mode 100644 index ca081fd3..00000000 --- a/doc/TIMER_DESIGN.drawio +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/ZXD.drawio b/doc/ZXD.drawio deleted file mode 100644 index 7452d3f9..00000000 --- a/doc/ZXD.drawio +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/apic.png b/doc/apic.png deleted file mode 100644 index 33954dce..00000000 Binary files a/doc/apic.png and /dev/null differ diff --git a/doc/filesystem.png b/doc/filesystem.png deleted file mode 100644 index 9e3599a9..00000000 Binary files a/doc/filesystem.png and /dev/null differ diff --git a/docs/AHCI_DESIGN.drawio b/docs/AHCI_DESIGN.drawio new file mode 100644 index 00000000..73029de7 --- /dev/null +++ b/docs/AHCI_DESIGN.drawio @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/DDK.pdf b/docs/DDK.pdf new file mode 100644 index 00000000..7029e0cc Binary files /dev/null and b/docs/DDK.pdf differ diff --git a/docs/EPM.pdf b/docs/EPM.pdf new file mode 100644 index 00000000..d9eeebc9 Binary files /dev/null and b/docs/EPM.pdf differ diff --git a/docs/GUI_DESIGN.drawio b/docs/GUI_DESIGN.drawio new file mode 100644 index 00000000..3ada69be --- /dev/null +++ b/docs/GUI_DESIGN.drawio @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/MBCI.drawio b/docs/MBCI.drawio new file mode 100644 index 00000000..9a8f4283 --- /dev/null +++ b/docs/MBCI.drawio @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/MFlash.pdf b/docs/MFlash.pdf new file mode 100644 index 00000000..2e6d7d42 Binary files /dev/null and b/docs/MFlash.pdf differ diff --git a/docs/NeFS.pdf b/docs/NeFS.pdf new file mode 100644 index 00000000..1b804346 Binary files /dev/null and b/docs/NeFS.pdf differ diff --git a/docs/OS_DESIGN.drawio b/docs/OS_DESIGN.drawio new file mode 100644 index 00000000..d704b481 --- /dev/null +++ b/docs/OS_DESIGN.drawio @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/ROUND_ROBIN.drawio b/docs/ROUND_ROBIN.drawio new file mode 100644 index 00000000..46c6304b --- /dev/null +++ b/docs/ROUND_ROBIN.drawio @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/SCHED_DESIGN.drawio b/docs/SCHED_DESIGN.drawio new file mode 100644 index 00000000..ab75d000 --- /dev/null +++ b/docs/SCHED_DESIGN.drawio @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/TIMER_DESIGN.drawio b/docs/TIMER_DESIGN.drawio new file mode 100644 index 00000000..ca081fd3 --- /dev/null +++ b/docs/TIMER_DESIGN.drawio @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/ZXD.drawio b/docs/ZXD.drawio new file mode 100644 index 00000000..7452d3f9 --- /dev/null +++ b/docs/ZXD.drawio @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/apic.png b/docs/apic.png new file mode 100644 index 00000000..33954dce Binary files /dev/null and b/docs/apic.png differ diff --git a/docs/filesystem.png b/docs/filesystem.png new file mode 100644 index 00000000..9e3599a9 Binary files /dev/null and b/docs/filesystem.png differ diff --git a/make_docs.sh b/make_docs.sh deleted file mode 100755 index 2d9a0a22..00000000 --- a/make_docs.sh +++ /dev/null @@ -1,5 +0,0 @@ -# !/bin/zsh - -mkdir -p html - -XSDocgen --source ./dev/ --output ./html --undocumented --project-name "NeKernel MicroKernel" --enable-c++ --project-copyright "Amlal EL Mahrouss © %Y - All rights Reserved" --project-version "930.2024.1" --company-name "Amlal EL Mahrouss" diff --git a/osx_docs.sh b/osx_docs.sh new file mode 100755 index 00000000..2d9a0a22 --- /dev/null +++ b/osx_docs.sh @@ -0,0 +1,5 @@ +# !/bin/zsh + +mkdir -p html + +XSDocgen --source ./dev/ --output ./html --undocumented --project-name "NeKernel MicroKernel" --enable-c++ --project-copyright "Amlal EL Mahrouss © %Y - All rights Reserved" --project-version "930.2024.1" --company-name "Amlal EL Mahrouss" diff --git a/public/frameworks/DiskImage.fwrk/headers/DiskImage.h b/public/frameworks/DiskImage.fwrk/headers/DiskImage.h index 704776a4..fb05154d 100644 --- a/public/frameworks/DiskImage.fwrk/headers/DiskImage.h +++ b/public/frameworks/DiskImage.fwrk/headers/DiskImage.h @@ -14,19 +14,19 @@ #define kDISectorSz (512) #define kDIMinDiskSz (1024 * 1024 * 1024) #define kDIDefaultOutputName "disk.eimg" -#define kDIDefaultDiskName "Disk" -#define kDISuccessStatus (0) -#define kDIFailureStatus (1) +#define kDIDefaultDiskName "Disk" +#define kDISuccessStatus (0) +#define kDIFailureStatus (1) struct DI_DISK_IMAGE; struct DI_DISK_IMAGE { - Char disk_name[512] = kDIDefaultDiskName; - SInt32 sector_sz = kDISectorSz; - SInt32 block_cnt = 0; - SizeT disk_sz = kDIMinDiskSz; - Char out_name[256] = kDIDefaultOutputName; + Char disk_name[512] = kDIDefaultDiskName; + SInt32 sector_sz = kDISectorSz; + SInt32 block_cnt = 0; + SizeT disk_sz = kDIMinDiskSz; + Char out_name[256] = kDIDefaultOutputName; }; /// @brief Format with an EPM partition. -- cgit v1.2.3