diff options
Diffstat (limited to 'dev/ZKA/KernelKit')
| -rw-r--r-- | dev/ZKA/KernelKit/CodeMgr.hxx (renamed from dev/ZKA/KernelKit/CodeManager.hxx) | 10 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/DebugOutput.hxx | 24 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/DeviceMgr.hxx (renamed from dev/ZKA/KernelKit/DeviceManager.hxx) | 6 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/DriveMgr.hxx (renamed from dev/ZKA/KernelKit/DriveManager.hxx) | 6 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/FileMgr.hxx (renamed from dev/ZKA/KernelKit/FileManager.hxx) | 50 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/HardwareThreadScheduler.hxx (renamed from dev/ZKA/KernelKit/MP.hxx) | 2 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/Heap.hxx | 8 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/IDLLObject.hxx (renamed from dev/ZKA/KernelKit/DLLInterface.hxx) | 13 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/IPEFDLLObject.hxx (renamed from dev/ZKA/KernelKit/PEFDLLInterface.hxx) | 18 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/PCI/Dma.hxx | 2 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/PECodeMgr.hxx (renamed from dev/ZKA/KernelKit/PECodeManager.hxx) | 4 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/PEFCodeMgr.hxx (renamed from dev/ZKA/KernelKit/PEFCodeManager.hxx) | 8 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/UserProcessScheduler.hxx | 47 |
13 files changed, 107 insertions, 91 deletions
diff --git a/dev/ZKA/KernelKit/CodeManager.hxx b/dev/ZKA/KernelKit/CodeMgr.hxx index ef9d18f4..c8f9cca9 100644 --- a/dev/ZKA/KernelKit/CodeManager.hxx +++ b/dev/ZKA/KernelKit/CodeMgr.hxx @@ -2,8 +2,8 @@ Copyright ZKA Technologies. - File: CodeManager.hpp - Purpose: Code Manager and Shared Objects. + File: CodeMgr.hpp + Purpose: Code Mgr and Shared Objects. Revision History: @@ -14,9 +14,9 @@ #pragma once -#include <KernelKit/PECodeManager.hxx> -#include <KernelKit/PEFCodeManager.hxx> -#include <KernelKit/PEFDLLInterface.hxx> +#include <KernelKit/PECodeMgr.hxx> +#include <KernelKit/PEFCodeMgr.hxx> +#include <KernelKit/IPEFDLLObject.hxx> namespace Kernel { diff --git a/dev/ZKA/KernelKit/DebugOutput.hxx b/dev/ZKA/KernelKit/DebugOutput.hxx index fcf18bff..70f920d1 100644 --- a/dev/ZKA/KernelKit/DebugOutput.hxx +++ b/dev/ZKA/KernelKit/DebugOutput.hxx @@ -6,7 +6,7 @@ #pragma once -#include <KernelKit/DeviceManager.hxx> +#include <KernelKit/DeviceMgr.hxx> #include <CompilerKit/CompilerKit.hxx> #include <NewKit/OwnPtr.hxx> #include <NewKit/Stream.hxx> @@ -59,21 +59,24 @@ namespace Kernel inline TerminalDevice end_line() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\r"; + + selfTerm.operator<<("\r"); return selfTerm; } inline TerminalDevice carriage_return() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\r"; + + selfTerm.operator<<("\r"); return selfTerm; } inline TerminalDevice tabulate() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\t"; + + selfTerm.operator<<("\t"); return selfTerm; } @@ -81,7 +84,8 @@ namespace Kernel inline TerminalDevice bell() { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "\a"; + + selfTerm.operator<<("\a"); return selfTerm; } @@ -111,7 +115,7 @@ namespace Kernel buf[0] = cNumbers[h]; buf[1] = 0; - term << buf; + term.operator<<(buf); return term; } @@ -139,7 +143,7 @@ namespace Kernel buf[0] = cNumbers[h]; buf[1] = 0; - term << buf; + term.operator<<(buf); return term; } } // namespace Detail @@ -148,7 +152,7 @@ namespace Kernel { TerminalDevice selfTerm = TerminalDevice::The(); - selfTerm << "0x"; + selfTerm.operator<<("0x"); Detail::_write_number_hex(x, selfTerm); return selfTerm; @@ -186,5 +190,5 @@ namespace Kernel #undef kcout #endif // ifdef kcout -#define kcout TerminalDevice::The() -#define endl kcout << Kernel::end_line() +#define kcout (Kernel::TerminalDevice::The() << "\e[0;31m [ " << __FILE__ << ": LINE: " << Kernel::number(__LINE__)); (Kernel::TerminalDevice::The() << " ] \e[0m" << ": ") +#define endl Kernel::TerminalDevice::The() << Kernel::end_line() diff --git a/dev/ZKA/KernelKit/DeviceManager.hxx b/dev/ZKA/KernelKit/DeviceMgr.hxx index 5164ae28..473af601 100644 --- a/dev/ZKA/KernelKit/DeviceManager.hxx +++ b/dev/ZKA/KernelKit/DeviceMgr.hxx @@ -14,13 +14,15 @@ #pragma once -/* Kernel device interface manager. */ -/* @file KernelKit/DeviceManager.hpp */ +/* Device manager. */ +/* @file KernelKit/DeviceMgr.hpp */ /* @brief Device abstraction and I/O buffer. */ #include <NewKit/ErrorOr.hxx> #include <NewKit/Ref.hxx> +#define cDevicePath "\\Mount\\" + // Last Rev // Wed, Apr 3, 2024 9:09:41 AM diff --git a/dev/ZKA/KernelKit/DriveManager.hxx b/dev/ZKA/KernelKit/DriveMgr.hxx index 96fbd95d..8cec098c 100644 --- a/dev/ZKA/KernelKit/DriveManager.hxx +++ b/dev/ZKA/KernelKit/DriveMgr.hxx @@ -10,12 +10,12 @@ #include <KernelKit/UserProcessScheduler.hxx> #include <CompilerKit/CompilerKit.hxx> #include <KernelKit/DebugOutput.hxx> -#include <KernelKit/DeviceManager.hxx> +#include <KernelKit/DeviceMgr.hxx> #include <KernelKit/LPC.hxx> #include <NewKit/Defines.hxx> #include <NewKit/String.hxx> -#define kDriveManagerCount (4U) +#define kDriveMgrCount (4U) #define kDriveInvalidID (-1) #define kDriveNameLen (32) @@ -116,7 +116,7 @@ namespace Kernel return &mD; default: { ErrLocal() = kErrorNoSuchDisk; - kcout << "newoskrnl.exe: No such disk.\n"; + kcout << "No such disk.\n"; break; } diff --git a/dev/ZKA/KernelKit/FileManager.hxx b/dev/ZKA/KernelKit/FileMgr.hxx index 05f74a63..86eade6a 100644 --- a/dev/ZKA/KernelKit/FileManager.hxx +++ b/dev/ZKA/KernelKit/FileMgr.hxx @@ -2,7 +2,7 @@ Copyright ZKA Technologies. - File: FileManager.hxx + File: FileMgr.hxx Purpose: Kernel file manager. ------------------------------------------- */ @@ -12,16 +12,16 @@ Revision History: 31/01/24: Update documentation (amlel) - 05/07/24: NewFS support, and fork support, updated constants and specs + 05/07/24: NeFS support, and fork support, updated constants and specs as well. ------------------------------------------- */ #pragma once -#ifdef __FSKIT_USE_NEWFS__ -#include <FSKit/NewFS.hxx> -#endif // __FSKIT_USE_NEWFS__ +#ifdef __FSKIT_USE_NEFS__ +#include <FSKit/NeFS.hxx> +#endif // __FSKIT_USE_NEFS__ #include <CompilerKit/CompilerKit.hxx> #include <HintKit/CompilerHint.hxx> @@ -71,31 +71,31 @@ namespace Kernel typedef VoidPtr NodePtr; /** - @brief Filesystem Manager Interface class + @brief Filesystem Mgr Interface class @brief Used to provide common I/O for a specific filesystem. */ - class FilesystemManagerInterface + class FilesystemMgrInterface { public: - explicit FilesystemManagerInterface() = default; - virtual ~FilesystemManagerInterface() = default; + explicit FilesystemMgrInterface() = default; + virtual ~FilesystemMgrInterface() = default; public: - ZKA_COPY_DEFAULT(FilesystemManagerInterface); + ZKA_COPY_DEFAULT(FilesystemMgrInterface); public: /// @brief Mounts a new filesystem into an active state. /// @param interface the filesystem interface /// @return - static bool Mount(FilesystemManagerInterface* interface); + static bool Mount(FilesystemMgrInterface* interface); /// @brief Unmounts the active filesystem /// @return - static FilesystemManagerInterface* Unmount(); + static FilesystemMgrInterface* Unmount(); /// @brief Getter, gets the active filesystem. /// @return - static FilesystemManagerInterface* GetMounted(); + static FilesystemMgrInterface* GetMounted(); public: virtual NodePtr Create(_Input const Char* path) = 0; @@ -135,19 +135,19 @@ namespace Kernel virtual bool Rewind(_Input NodePtr node) = 0; }; -#ifdef __FSKIT_USE_NEWFS__ +#ifdef __FSKIT_USE_NEFS__ /** - * @brief Based of FilesystemManagerInterface, takes care of managing NewFS + * @brief Based of FilesystemMgrInterface, takes care of managing NeFS * disks. */ - class NewFilesystemManager final : public FilesystemManagerInterface + class NewFilesystemMgr final : public FilesystemMgrInterface { public: - explicit NewFilesystemManager(); - ~NewFilesystemManager() override; + explicit NewFilesystemMgr(); + ~NewFilesystemMgr() override; public: - ZKA_COPY_DEFAULT(NewFilesystemManager); + ZKA_COPY_DEFAULT(NewFilesystemMgr); public: NodePtr Create(const Char* path) override; @@ -176,15 +176,15 @@ namespace Kernel _Input SizeT sz) override; public: - /// @brief Get NewFS parser class. + /// @brief Get NeFS parser class. /// @return The filesystem parser class. - NewFSParser* GetParser() noexcept; + NeFSParser* GetParser() noexcept; private: - NewFSParser* fImpl{nullptr}; + NeFSParser* fImpl{nullptr}; }; -#endif // ifdef __FSKIT_USE_NEWFS__ +#endif // ifdef __FSKIT_USE_NEFS__ /** * Usable FileStream @@ -192,7 +192,7 @@ namespace Kernel * @tparam FSClass Filesystem contract who takes care of it. */ template <typename Encoding = Char, - typename FSClass = FilesystemManagerInterface> + typename FSClass = FilesystemMgrInterface> class FileStream final { public: @@ -408,7 +408,7 @@ namespace Kernel } } - kcout << "newoskrnl.exe: new file: " << path << ".\r"; + kcout << "new file: " << path << ".\r"; } /// @brief destructor diff --git a/dev/ZKA/KernelKit/MP.hxx b/dev/ZKA/KernelKit/HardwareThreadScheduler.hxx index 51f3472a..cf5d6754 100644 --- a/dev/ZKA/KernelKit/MP.hxx +++ b/dev/ZKA/KernelKit/HardwareThreadScheduler.hxx @@ -103,7 +103,7 @@ namespace Kernel operator bool() noexcept; public: - /// @brief Shared instance of the MP Manager. + /// @brief Shared instance of the MP Mgr. /// @return the reference to the mp manager class. STATIC HardwareThreadScheduler& The(); diff --git a/dev/ZKA/KernelKit/Heap.hxx b/dev/ZKA/KernelKit/Heap.hxx index 65b71774..27c79c83 100644 --- a/dev/ZKA/KernelKit/Heap.hxx +++ b/dev/ZKA/KernelKit/Heap.hxx @@ -30,10 +30,10 @@ namespace Kernel /// @return if it exists. Boolean mm_is_valid_heap(VoidPtr heap_ptr); - /// @brief allocate chunk of memory. - /// @param sz size of pointer - /// @param rw read write (true to enable it) - /// @param user is it accesible by user processes? + /// @brief Allocate chunk of memory. + /// @param sz Size of pointer + /// @param rw Read Write bit. + /// @param user User enable bit. /// @return The newly allocated pointer. VoidPtr mm_new_ke_heap(const SizeT sz, const Bool rw, const Bool user); diff --git a/dev/ZKA/KernelKit/DLLInterface.hxx b/dev/ZKA/KernelKit/IDLLObject.hxx index 370363b7..39580307 100644 --- a/dev/ZKA/KernelKit/DLLInterface.hxx +++ b/dev/ZKA/KernelKit/IDLLObject.hxx @@ -13,11 +13,11 @@ namespace Kernel { - class DLLInterface + class IDLLObject { public: - explicit DLLInterface() = default; - virtual ~DLLInterface() = default; + explicit IDLLObject() = default; + virtual ~IDLLObject() = default; struct DLL_TRAITS final { @@ -30,13 +30,14 @@ namespace Kernel } }; - ZKA_COPY_DEFAULT(DLLInterface); + ZKA_COPY_DEFAULT(IDLLObject); virtual DLL_TRAITS** GetAddressOf() = 0; virtual DLL_TRAITS* Get() = 0; - virtual void Mount(DLL_TRAITS* to_mount) = 0; - virtual void Unmount() = 0; + virtual Void Mount(DLL_TRAITS* to_mount) = 0; + virtual Void Unmount() = 0; + }; /// @brief Pure implementation, missing method/function handler. diff --git a/dev/ZKA/KernelKit/PEFDLLInterface.hxx b/dev/ZKA/KernelKit/IPEFDLLObject.hxx index ef1a844f..013173d1 100644 --- a/dev/ZKA/KernelKit/PEFDLLInterface.hxx +++ b/dev/ZKA/KernelKit/IPEFDLLObject.hxx @@ -11,9 +11,9 @@ #define __KERNELKIT_SHARED_OBJECT_HXX__ #include <KernelKit/PEF.hxx> -#include <KernelKit/PEFCodeManager.hxx> #include <NewKit/Defines.hxx> -#include <KernelKit/DLLInterface.hxx> +#include <KernelKit/PEFCodeMgr.hxx> +#include <KernelKit/IDLLObject.hxx> namespace Kernel { @@ -21,14 +21,14 @@ namespace Kernel * @brief Shared Library class * Load library from this class */ - class PEFDLLInterface final : public DLLInterface + class IPEFDLLObject final : public IDLLObject { public: - explicit PEFDLLInterface() = default; - ~PEFDLLInterface() = default; + explicit IPEFDLLObject() = default; + ~IPEFDLLObject() = default; public: - ZKA_COPY_DEFAULT(PEFDLLInterface); + ZKA_COPY_DEFAULT(IPEFDLLObject); private: DLL_TRAITS* fMounted{nullptr}; @@ -96,10 +96,10 @@ namespace Kernel PEFLoader* fLoader{nullptr}; }; - typedef PEFDLLInterface* DLLInterfacePtr; + typedef IPEFDLLObject* IDLL; - EXTERN_C DLLInterfacePtr rtl_init_shared_object(UserProcess* header); - EXTERN_C Void rtl_fini_shared_object(UserProcess* header, DLLInterfacePtr lib, Bool* successful); + EXTERN_C IDLL rtl_init_shared_object(UserProcess* header); + EXTERN_C Void rtl_fini_shared_object(UserProcess* header, IDLL lib, Bool* successful); } // namespace Kernel #endif /* ifndef __KERNELKIT_SHARED_OBJECT_HXX__ */ diff --git a/dev/ZKA/KernelKit/PCI/Dma.hxx b/dev/ZKA/KernelKit/PCI/Dma.hxx index 43df13f0..8e51bc45 100644 --- a/dev/ZKA/KernelKit/PCI/Dma.hxx +++ b/dev/ZKA/KernelKit/PCI/Dma.hxx @@ -6,7 +6,7 @@ #pragma once -#include <KernelKit/DeviceManager.hxx> +#include <KernelKit/DeviceMgr.hxx> #include <KernelKit/PCI/Device.hxx> #include <NewKit/Array.hxx> #include <NewKit/OwnPtr.hxx> diff --git a/dev/ZKA/KernelKit/PECodeManager.hxx b/dev/ZKA/KernelKit/PECodeMgr.hxx index f42c7c21..7b84fbc1 100644 --- a/dev/ZKA/KernelKit/PECodeManager.hxx +++ b/dev/ZKA/KernelKit/PECodeMgr.hxx @@ -2,8 +2,8 @@ Copyright ZKA Technologies. - File: PECodeManager.hxx - Purpose: PE32+ Code Manager and Shared Objects. + File: PECodeMgr.hxx + Purpose: PE32+ Code Mgr and Shared Objects. Revision History: diff --git a/dev/ZKA/KernelKit/PEFCodeManager.hxx b/dev/ZKA/KernelKit/PEFCodeMgr.hxx index dd6daca5..c2938fae 100644 --- a/dev/ZKA/KernelKit/PEFCodeManager.hxx +++ b/dev/ZKA/KernelKit/PEFCodeMgr.hxx @@ -10,7 +10,7 @@ #include <KernelKit/PEF.hxx> #include <NewKit/ErrorOr.hxx> #include <NewKit/String.hxx> -#include <KernelKit/FileManager.hxx> +#include <KernelKit/FileMgr.hxx> #define kPefApplicationMime "application/x-newos-exec" @@ -46,11 +46,11 @@ namespace Kernel bool IsLoaded() noexcept; private: -#ifdef __FSKIT_USE_NEWFS__ - OwnPtr<FileStream<Char, NewFilesystemManager>> fFile; +#ifdef __FSKIT_USE_NEFS__ + OwnPtr<FileStream<Char, NewFilesystemMgr>> fFile; #else OwnPtr<FileStream<Char>> fFile; -#endif // __FSKIT_USE_NEWFS__ +#endif // __FSKIT_USE_NEFS__ Ref<StringView> fPath; VoidPtr fCachedBlob; diff --git a/dev/ZKA/KernelKit/UserProcessScheduler.hxx b/dev/ZKA/KernelKit/UserProcessScheduler.hxx index 809dbb7f..9585da29 100644 --- a/dev/ZKA/KernelKit/UserProcessScheduler.hxx +++ b/dev/ZKA/KernelKit/UserProcessScheduler.hxx @@ -14,7 +14,6 @@ #define kSchedMinMicroTime (AffinityKind::kStandard) #define kSchedInvalidPID (-1) -#define kSchedMaxStackSz (4096) /* Max stack sz */ #define kSchedProcessLimitPerTeam (16U) //////////////////////////////////////////////////// @@ -28,7 +27,7 @@ namespace Kernel //! @note Forward declarations. class UserProcess; - class PEFDLLInterface; + class IPEFDLLObject; class UserProcessTeam; class UserProcessScheduler; class UserProcessHelper; @@ -53,12 +52,12 @@ namespace Kernel //! to run. enum class AffinityKind : Int32 { - kRealTime = 0500, - kVeryHigh = 2500, - kHigh = 2000, - kStandard = 1500, - kLowUsage = 1000, - kVeryLowUsage = 5000, + kRealTime = 500, + kVeryHigh = 250, + kHigh = 200, + kStandard = 1000, + kLowUsage = 1500, + kVeryLowUsage = 2000, }; // operator overloading. @@ -147,24 +146,33 @@ namespace Kernel User* Owner{nullptr}; HAL::StackFramePtr StackFrame{nullptr}; AffinityKind Affinity{AffinityKind::kStandard}; - ProcessStatusKind Status{ProcessStatusKind::kDead}; + ProcessStatusKind Status{ProcessStatusKind::kDead}; UInt8* StackReserve{nullptr}; // Memory, images pointers. - HeapPtrKind HeapCursor{nullptr}; ImagePtr Image{nullptr}; - HeapPtrKind HeapPtr{nullptr}; SizeT StackSize{mib_cast(8)}; - // shared library handle, reserved for kDLLKind types of executables only. - PEFDLLInterface* DLLPtr{nullptr}; - UserProcess* Parent{nullptr}; + //! @brief Shared library handle, reserved for kDLLKind types of executables only. + IPEFDLLObject* DLLPtr{nullptr}; + + /// @brief Parent process, reserved for threads only. + UserProcess* Parent{nullptr}; // Memory usage. - SizeT UsedMemory{0}; - SizeT FreeMemory{0}; - SizeT SizeMemory{gib_cast(4)}; + SizeT MemoryCursor{0}; + SizeT MemoryLimit{gib_cast(128)}; + + struct PROCESS_MEMORY_ENTRY + { + VoidPtr MemoryEntry; + + struct PROCESS_MEMORY_ENTRY *MemoryPrev; + struct PROCESS_MEMORY_ENTRY *MemoryNext; + } * MemoryEntryList{nullptr}; + + SizeT MemoryPD{0}; enum { @@ -212,9 +220,9 @@ namespace Kernel //! @return Int32 local error code. Int32& GetLocalCode() noexcept; - const User* GetOwner() noexcept; + const User* GetOwner() noexcept; const ProcessStatusKind& GetStatus() noexcept; - const AffinityKind& GetAffinity() noexcept; + const AffinityKind& GetAffinity() noexcept; private: UInt32 fLastExitCode{0}; @@ -290,6 +298,7 @@ namespace Kernel STATIC bool CanBeScheduled(UserProcess& process); STATIC PID& TheCurrentPID(); STATIC SizeT StartScheduling(); + STATIC Void Init(); }; const UInt32& sched_get_exit_code(void) noexcept; |
