diff options
| author | Amlal <amlalelmahrouss@icloud.com> | 2024-06-06 10:27:55 +0000 |
|---|---|---|
| committer | Amlal <amlalelmahrouss@icloud.com> | 2024-06-06 10:27:55 +0000 |
| commit | 4e75e05a20ddd0dbca982e8f3bc2ea8043ed3a3f (patch) | |
| tree | 95409c0e32b644578b94a5c230417da684d79dc9 /Kernel/KernelKit | |
| parent | f5081a8f9a8537ad5be5d639955cd1d0e68a9e1d (diff) | |
| parent | 9994b8f3f88131f41be1061fb0947177e66dc7b0 (diff) | |
Merged in MHR-23 (pull request #14)
Draft: MHR-23
Diffstat (limited to 'Kernel/KernelKit')
| -rw-r--r-- | Kernel/KernelKit/DebugOutput.hpp | 18 | ||||
| -rw-r--r-- | Kernel/KernelKit/DeviceManager.hpp | 4 | ||||
| -rw-r--r-- | Kernel/KernelKit/DriveManager.hxx | 8 | ||||
| -rw-r--r-- | Kernel/KernelKit/Framebuffer.hpp | 1 | ||||
| -rw-r--r-- | Kernel/KernelKit/KernelHeap.hpp | 5 | ||||
| -rw-r--r-- | Kernel/KernelKit/PEF.hpp | 2 | ||||
| -rw-r--r-- | Kernel/KernelKit/ProcessScheduler.hxx (renamed from Kernel/KernelKit/ProcessScheduler.hpp) | 10 | ||||
| -rw-r--r-- | Kernel/KernelKit/SMPManager.hpp | 2 | ||||
| -rw-r--r-- | Kernel/KernelKit/ThreadLocalStorage.inl | 10 | ||||
| -rw-r--r-- | Kernel/KernelKit/XCOFF.hxx | 24 |
10 files changed, 51 insertions, 33 deletions
diff --git a/Kernel/KernelKit/DebugOutput.hpp b/Kernel/KernelKit/DebugOutput.hpp index 594ca701..3acee338 100644 --- a/Kernel/KernelKit/DebugOutput.hpp +++ b/Kernel/KernelKit/DebugOutput.hpp @@ -73,26 +73,26 @@ namespace NewOS NEWOS_COPY_DEFAULT(TerminalDevice); - static TerminalDevice& Shared() noexcept; + static TerminalDevice& The() noexcept; }; inline TerminalDevice& end_line() { - TerminalDevice& selfTerm = TerminalDevice::Shared(); + TerminalDevice& selfTerm = TerminalDevice::The(); selfTerm << "\r"; return selfTerm; } inline TerminalDevice& carriage_return() { - TerminalDevice& selfTerm = TerminalDevice::Shared(); + TerminalDevice& selfTerm = TerminalDevice::The(); selfTerm << "\r"; return selfTerm; } inline TerminalDevice& tabulate() { - TerminalDevice& selfTerm = TerminalDevice::Shared(); + TerminalDevice& selfTerm = TerminalDevice::The(); selfTerm << "\t"; return selfTerm; } @@ -100,7 +100,7 @@ namespace NewOS /// @brief emulate a terminal bell, like the VT100 does. inline TerminalDevice& bell() { - TerminalDevice& selfTerm = TerminalDevice::Shared(); + TerminalDevice& selfTerm = TerminalDevice::The(); selfTerm << "\a"; return selfTerm; } @@ -166,7 +166,7 @@ namespace NewOS inline TerminalDevice& hex_number(const Long& x) { - TerminalDevice& selfTerm = TerminalDevice::Shared(); + TerminalDevice& selfTerm = TerminalDevice::The(); selfTerm << "0x"; Detail::_write_number_hex(x, selfTerm); @@ -176,7 +176,7 @@ namespace NewOS inline TerminalDevice& number(const Long& x) { - TerminalDevice& selfTerm = TerminalDevice::Shared(); + TerminalDevice& selfTerm = TerminalDevice::The(); Detail::_write_number(x, selfTerm); @@ -185,7 +185,7 @@ namespace NewOS inline TerminalDevice& get_console_in(Char* buf) { - TerminalDevice& selfTerm = TerminalDevice::Shared(); + TerminalDevice& selfTerm = TerminalDevice::The(); selfTerm >> buf; return selfTerm; } @@ -204,5 +204,5 @@ namespace NewOS #undef kcout #endif // ifdef kcout -#define kcout TerminalDevice::Shared() +#define kcout TerminalDevice::The() #define endl end_line() diff --git a/Kernel/KernelKit/DeviceManager.hpp b/Kernel/KernelKit/DeviceManager.hpp index 6e2a803f..dc53fed5 100644 --- a/Kernel/KernelKit/DeviceManager.hpp +++ b/Kernel/KernelKit/DeviceManager.hpp @@ -21,8 +21,6 @@ #include <NewKit/ErrorOr.hpp> #include <NewKit/Ref.hpp> -#define kDriveManagerCount 4U - // Last Rev // Wed, Apr 3, 2024 9:09:41 AM @@ -70,7 +68,7 @@ namespace NewOS } bool operator!() { - return !fOut && !fIn; + return !fOut || !fIn; } private: diff --git a/Kernel/KernelKit/DriveManager.hxx b/Kernel/KernelKit/DriveManager.hxx index 7978221a..01058d00 100644 --- a/Kernel/KernelKit/DriveManager.hxx +++ b/Kernel/KernelKit/DriveManager.hxx @@ -14,8 +14,10 @@ #include <NewKit/Defines.hpp> #include <NewKit/String.hpp> -#define kDriveInvalidID -1 -#define kDriveNameLen 32 +#define kDriveManagerCount (4U) + +#define kDriveInvalidID (-1) +#define kDriveNameLen (32) namespace NewOS { @@ -111,7 +113,7 @@ namespace NewOS return &mD; default: { DbgLastError() = kErrorNoSuchDisk; - kcout << "New OS: No such disk.\n"; + kcout << "newoskrnl: No such disk.\n"; break; } diff --git a/Kernel/KernelKit/Framebuffer.hpp b/Kernel/KernelKit/Framebuffer.hpp index fd4eff04..1f189e77 100644 --- a/Kernel/KernelKit/Framebuffer.hpp +++ b/Kernel/KernelKit/Framebuffer.hpp @@ -39,6 +39,7 @@ namespace NewOS : fFrameBufferAddr(addr) { } + ~Framebuffer() { } diff --git a/Kernel/KernelKit/KernelHeap.hpp b/Kernel/KernelKit/KernelHeap.hpp index c7b898ed..e2ab19b5 100644 --- a/Kernel/KernelKit/KernelHeap.hpp +++ b/Kernel/KernelKit/KernelHeap.hpp @@ -36,4 +36,9 @@ namespace NewOS /// @param heapPtr HIB pointer. /// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr); + + /// @brief Makes a kernel heap page. + /// @param heapPtr + /// @return + Int32 ke_make_ke_page(VoidPtr heapPtr); } // namespace NewOS diff --git a/Kernel/KernelKit/PEF.hpp b/Kernel/KernelKit/PEF.hpp index 1874aa4e..98a413aa 100644 --- a/Kernel/KernelKit/PEF.hpp +++ b/Kernel/KernelKit/PEF.hpp @@ -44,7 +44,7 @@ namespace NewOS { kPefSubArchAMD, kPefSubArchIntel, - kPefSubArchARM, + kPefSubArchGeneric, kPefSubArchIBM, }; diff --git a/Kernel/KernelKit/ProcessScheduler.hpp b/Kernel/KernelKit/ProcessScheduler.hxx index 8670691f..bd8cb628 100644 --- a/Kernel/KernelKit/ProcessScheduler.hpp +++ b/Kernel/KernelKit/ProcessScheduler.hxx @@ -14,7 +14,7 @@ #include <KernelKit/UserHeap.hpp> #include <NewKit/MutableArray.hpp> -#define kSchedMinMicroTime AffinityKind::kHartStandard +#define kSchedMinMicroTime (AffinityKind::kHartStandard) #define kSchedInvalidPID (-1) #define kSchedProcessLimitPerTeam (100U) @@ -163,9 +163,9 @@ namespace NewOS enum { - kAppKind = 3, - kLibKind = 3, - kDriverKind = 0, + kAppKind = 1, + kShLibKind = 2, + kDriverKind = 3, kKindCount, }; @@ -270,7 +270,7 @@ namespace NewOS SizeT Run() noexcept; public: - static Ref<ProcessScheduler&> Shared(); + static Ref<ProcessScheduler&> The(); private: ProcessTeam mTeam; diff --git a/Kernel/KernelKit/SMPManager.hpp b/Kernel/KernelKit/SMPManager.hpp index 12260a33..eb8c908a 100644 --- a/Kernel/KernelKit/SMPManager.hpp +++ b/Kernel/KernelKit/SMPManager.hpp @@ -105,7 +105,7 @@ namespace NewOS public: /// @brief Shared instance of the SMP Manager. /// @return the reference to the smp manager. - static Ref<SMPManager> Shared(); + static Ref<SMPManager> The(); public: /// @brief Returns the amount of threads present in the system. diff --git a/Kernel/KernelKit/ThreadLocalStorage.inl b/Kernel/KernelKit/ThreadLocalStorage.inl index 6407900f..a8269a14 100644 --- a/Kernel/KernelKit/ThreadLocalStorage.inl +++ b/Kernel/KernelKit/ThreadLocalStorage.inl @@ -7,7 +7,7 @@ //! @brief Allocates a pointer from the process's tls. #ifndef __PROCESS_MANAGER__ -#include <KernelKit/ProcessScheduler.hpp> +#include <KernelKit/ProcessScheduler.hxx> #endif template <typename T> @@ -15,9 +15,9 @@ inline T* tls_new_ptr(void) { using namespace NewOS; - MUST_PASS(ProcessScheduler::Shared().Leak().GetCurrent()); + MUST_PASS(ProcessScheduler::The().Leak().GetCurrent()); - auto ref_process = ProcessScheduler::Shared().Leak().GetCurrent(); + auto ref_process = ProcessScheduler::The().Leak().GetCurrent(); T* pointer = (T*)ref_process.Leak().New(sizeof(T)); return pointer; @@ -32,9 +32,9 @@ inline bool tls_delete_ptr(T* ptr) using namespace NewOS; - MUST_PASS(ProcessScheduler::Shared().Leak().GetCurrent()); + MUST_PASS(ProcessScheduler::The().Leak().GetCurrent()); - auto ref_process = ProcessScheduler::Shared().Leak().GetCurrent(); + auto ref_process = ProcessScheduler::The().Leak().GetCurrent(); return ref_process.Leak().Delete(ptr, sizeof(T)); } diff --git a/Kernel/KernelKit/XCOFF.hxx b/Kernel/KernelKit/XCOFF.hxx index f2e49c4c..55e37bfd 100644 --- a/Kernel/KernelKit/XCOFF.hxx +++ b/Kernel/KernelKit/XCOFF.hxx @@ -16,12 +16,15 @@ #include <NewKit/Defines.hpp> -#define kXCOFF64Magic (0x01F7) +#define cXCOFF64Magic (0x01F7) -#define kXCOFFRelFlg (0x0001) -#define kXCOFFExecutable (0x0002) -#define kXCOFFLnno (0x0004) -#define kXCOFFLSyms (0x0008) +#define cXCOFFRelFlg (0x0001) +#define cXCOFFExecutable (0x0002) +#define cXCOFFLnno (0x0004) +#define cXCOFFLSyms (0x0008) + +struct XCoffFileHeader; +struct XCoffForkHeader; /// @brief XCoff file header, meant for POWER apps. typedef struct XCoffFileHeader @@ -33,6 +36,15 @@ typedef struct XCoffFileHeader NewOS::UIntPtr fSymPtr; NewOS::UInt32 fNumSyms; NewOS::UInt16 fOptHdr; // ?: Number of bytes in optional header -} XCoffFileHeader; +} XCoffFileHeader32, XCoffFileHeader64; + +#define cForkNameLen (255) + +/// @brief This the executable manifest fork. +typedef struct XCoffForkHeader { + NewOS::Char fPropertiesXMLFork[cForkNameLen]; + NewOS::Char fDynamicLoaderFork[cForkNameLen]; + NewOS::Char fCodeSignFork[cForkNameLen]; +} XCoffForkHeader; #endif // ifndef __XCOFF__ |
