diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-27 20:03:26 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-27 20:06:13 +0200 |
| commit | 1a44b4385b3250cd90e255d7d787ae69e987544b (patch) | |
| tree | fb637575951b8cc98834bed59daf4072583d5a17 /dev | |
| parent | bdc831c1df0dd2af95f09fd1b86b4472c40d12b7 (diff) | |
feat: generic_kits: Add X64Chrono inside BenchKit.
refactor: libSystem: Refactored as a whole.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/boot/amd64-desktop.make | 2 | ||||
| -rw-r--r-- | dev/generic_kits/BenchKit/HardwareChrono.h | 9 | ||||
| -rw-r--r-- | dev/generic_kits/BenchKit/X64Chrono.h | 54 | ||||
| -rw-r--r-- | dev/kernel/HALKit/AMD64/HalKernelMain.cc | 1 | ||||
| -rw-r--r-- | dev/kernel/KernelKit/UserMgr.h | 2 | ||||
| -rw-r--r-- | dev/libSystem/AsmProc.h (renamed from dev/user/AsmProc.h) | 2 | ||||
| -rw-r--r-- | dev/libSystem/Codes.h (renamed from dev/user/SystemCodes.h) | 4 | ||||
| -rw-r--r-- | dev/libSystem/Macros.h (renamed from dev/user/Macros.h) | 2 | ||||
| -rw-r--r-- | dev/libSystem/SecurityPolicy.h (renamed from dev/user/SecurityPolicy.h) | 2 | ||||
| -rw-r--r-- | dev/libSystem/System.h (renamed from dev/user/SystemCalls.h) | 11 | ||||
| -rw-r--r-- | dev/libSystem/docs/SPECIFICATION_SYSCALLS.md (renamed from dev/user/docs/SPECIFICATION_SYSCALLS.md) | 0 | ||||
| -rw-r--r-- | dev/libSystem/libSystem.json (renamed from dev/user/user.json) | 6 | ||||
| -rw-r--r-- | dev/libSystem/obj/.keep (renamed from dev/user/obj/.keep) | 0 | ||||
| -rw-r--r-- | dev/libSystem/src/GNUmakefile (renamed from dev/user/src/GNUmakefile) | 0 | ||||
| -rw-r--r-- | dev/libSystem/src/System.cc (renamed from dev/user/src/SystemCalls.cc) | 4 | ||||
| -rw-r--r-- | dev/libSystem/src/SystemCalls+IO.asm (renamed from dev/user/src/SystemCalls+IO.asm) | 0 |
16 files changed, 75 insertions, 24 deletions
diff --git a/dev/boot/amd64-desktop.make b/dev/boot/amd64-desktop.make index 113c6295..d39c3bcd 100644 --- a/dev/boot/amd64-desktop.make +++ b/dev/boot/amd64-desktop.make @@ -92,7 +92,7 @@ all: compile-amd64 $(COPY) ../kernel/$(KERNEL) src/root/$(KERNEL) $(COPY) ./modules/SysChk/$(SYSCHK) src/root/$(SYSCHK) $(COPY) ./modules/BootNet/$(BOOTNET) src/root/$(BOOTNET) - $(COPY) ../user/$(SCIKIT) src/root/$(SCIKIT) + $(COPY) ../libSystem/$(SCIKIT) src/root/$(SCIKIT) $(COPY) src/$(BOOTLOADER) src/root/$(BOOTLOADER) $(COPY) ../ddk/$(DDK) src/root/$(DDK) diff --git a/dev/generic_kits/BenchKit/HardwareChrono.h b/dev/generic_kits/BenchKit/HardwareChrono.h deleted file mode 100644 index f6f6fd8c..00000000 --- a/dev/generic_kits/BenchKit/HardwareChrono.h +++ /dev/null @@ -1,9 +0,0 @@ -/* ------------------------------------------- - -Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. - -------------------------------------------- */ - -#pragma once - -#include <BenchKit/Chrono.h> diff --git a/dev/generic_kits/BenchKit/X64Chrono.h b/dev/generic_kits/BenchKit/X64Chrono.h new file mode 100644 index 00000000..192d1697 --- /dev/null +++ b/dev/generic_kits/BenchKit/X64Chrono.h @@ -0,0 +1,54 @@ +/* ------------------------------------------- + +Copyright (C) 2025, Amlal El Mahrouss, all rights reserved. + +------------------------------------------- */ + +#pragma once + +#include <generic_kits/BenchKit/Chrono.h> + +#if defined(__NE_AMD64__) + +namespace Kernel { +class X64Chrono; +struct X64ChronoTraits; + +struct X64ChronoTraits { +private: + STATIC UInt64 TickImpl_(void) { + UInt64 a = 0, d = 0; + __asm__ volatile("rdtsc" : "=a"(a), "=d"(d)); + return (d << 32) | a; + } + + friend X64Chrono; +}; + +/// @brief X86_64 hardware chrono implementation using the `rdtsc` instruction. +class X64Chrono : public ChronoInterface { + public: + X64Chrono() = default; + ~X64Chrono() override = default; + + NE_COPY_DEFAULT(X64Chrono); + + public: + void Start() override { fStart = X64ChronoTraits::TickImpl_(); } + + void Stop() override { fStop = X64ChronoTraits::TickImpl_(); } + + void Reset() override { + fStart = 0; + fStop = 0; + } + + UInt64 GetElapsedTime() const override { return fStart - fStop; } + + private: + UInt64 fStart = 0; + UInt64 fStop = 0; +}; +} // namespace Kernel + +#endif // defined(__NE_AMD64__)
\ No newline at end of file diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc index e7337e62..446a1e85 100644 --- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc @@ -14,6 +14,7 @@ #include <KernelKit/Timer.h> #include <NetworkKit/IPC.h> #include <StorageKit/AHCI.h> +#include <generic_kits/BenchKit/X64Chrono.h> #include <modules/ACPI/ACPIFactoryInterface.h> #include <modules/CoreGfx/TextGfx.h> diff --git a/dev/kernel/KernelKit/UserMgr.h b/dev/kernel/KernelKit/UserMgr.h index b7e7ac1d..82f8ca66 100644 --- a/dev/kernel/KernelKit/UserMgr.h +++ b/dev/kernel/KernelKit/UserMgr.h @@ -11,7 +11,7 @@ Revision History: - 04/03/25: Set users directory as /user/ instead of /usr/ + 04/03/25: Set users directory as /libSystem/ instead of /usr/ ------------------------------------------- */ diff --git a/dev/user/AsmProc.h b/dev/libSystem/AsmProc.h index 4b3b63c1..b707d533 100644 --- a/dev/user/AsmProc.h +++ b/dev/libSystem/AsmProc.h @@ -6,7 +6,7 @@ #pragma once -#include <user/SystemCalls.h> +#include <libSystem/System.h> #include <cstdarg> IMPORT_C VoidPtr sci_syscall_arg_1(SizeT id); diff --git a/dev/user/SystemCodes.h b/dev/libSystem/Codes.h index 90457944..0451df64 100644 --- a/dev/user/SystemCodes.h +++ b/dev/libSystem/Codes.h @@ -6,9 +6,9 @@ #pragma once -#include <user/Macros.h> +#include <libSystem/Macros.h> -/// @file ProcessCodes.h +/// @file Codes.h /// @brief Process Codes type and values. /// @author Amlal El Mahrouss (amlal@nekernel.org) diff --git a/dev/user/Macros.h b/dev/libSystem/Macros.h index 71957208..52dc904c 100644 --- a/dev/user/Macros.h +++ b/dev/libSystem/Macros.h @@ -10,7 +10,7 @@ Purpose: libsci Macros header. #pragma once /***********************************************************************************/ -/// @file user/Macros.h +/// @file libSystem/Macros.h /// @brief Macros and Core types of the SCI (System Call Interface). /***********************************************************************************/ diff --git a/dev/user/SecurityPolicy.h b/dev/libSystem/SecurityPolicy.h index a03c928b..812f52e2 100644 --- a/dev/user/SecurityPolicy.h +++ b/dev/libSystem/SecurityPolicy.h @@ -6,7 +6,7 @@ #pragma once -#include <user/SystemCalls.h> +#include <libSystem/System.h> /// @file SecurityPolicy.h /// @brief Hardened Security Policy, used to restrict access to certain system calls.
\ No newline at end of file diff --git a/dev/user/SystemCalls.h b/dev/libSystem/System.h index d77c0b8f..920ea2b2 100644 --- a/dev/user/SystemCalls.h +++ b/dev/libSystem/System.h @@ -2,7 +2,7 @@ Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
-File: SystemCalls.h
+File: System.h
Purpose: System Call Interface.
------------------------------------------- */
@@ -10,13 +10,18 @@ Purpose: System Call Interface. #ifndef SCI_SYSTEM_CALLS_H
#define SCI_SYSTEM_CALLS_H
-#include <user/Macros.h>
+#include <libSystem/Macros.h>
// ------------------------------------------------------------------------------------------ //
/// @brief Types API.
// ------------------------------------------------------------------------------------------ //
-typedef VoidPtr Ref;
+struct RefType {
+ UInt32 __hash;
+ VoidPtr __self;
+};
+
+typedef RefType* Ref;
typedef Ref IORef;
typedef Ref FSRef;
diff --git a/dev/user/docs/SPECIFICATION_SYSCALLS.md b/dev/libSystem/docs/SPECIFICATION_SYSCALLS.md index b4b11c8c..b4b11c8c 100644 --- a/dev/user/docs/SPECIFICATION_SYSCALLS.md +++ b/dev/libSystem/docs/SPECIFICATION_SYSCALLS.md diff --git a/dev/user/user.json b/dev/libSystem/libSystem.json index 2267175e..fdcd2a56 100644 --- a/dev/user/user.json +++ b/dev/libSystem/libSystem.json @@ -13,8 +13,8 @@ "-Wl,--subsystem=17" ], "cpp_macros": [ - "kSCIVersion=0x0100", - "kSCIVersionHighest=0x0100", - "kSCIVersionLowest=0x0100" + "kLibSystemVersion=0x0100", + "kLibSystemVersionHighest=0x0100", + "kLibSystemVersionLowest=0x0100" ] } diff --git a/dev/user/obj/.keep b/dev/libSystem/obj/.keep index e69de29b..e69de29b 100644 --- a/dev/user/obj/.keep +++ b/dev/libSystem/obj/.keep diff --git a/dev/user/src/GNUmakefile b/dev/libSystem/src/GNUmakefile index 9b901f9f..9b901f9f 100644 --- a/dev/user/src/GNUmakefile +++ b/dev/libSystem/src/GNUmakefile diff --git a/dev/user/src/SystemCalls.cc b/dev/libSystem/src/System.cc index f004718c..1c28303d 100644 --- a/dev/user/src/SystemCalls.cc +++ b/dev/libSystem/src/System.cc @@ -4,8 +4,8 @@ ------------------------------------------- */
-#include <user/AsmProc.h>
-#include <user/SystemCalls.h>
+#include <libSystem/AsmProc.h>
+#include <libSystem/System.h>
/// @file SystemCalls.cc
/// @brief Source file for the memory functions/syscalls for libSystem.sys
diff --git a/dev/user/src/SystemCalls+IO.asm b/dev/libSystem/src/SystemCalls+IO.asm index 097046af..097046af 100644 --- a/dev/user/src/SystemCalls+IO.asm +++ b/dev/libSystem/src/SystemCalls+IO.asm |
