summaryrefslogtreecommitdiffhomepage
path: root/Kernel/KernelKit
diff options
context:
space:
mode:
authorAmlal <amlalelmahrouss@icloud.com>2024-06-06 10:27:55 +0000
committerAmlal <amlalelmahrouss@icloud.com>2024-06-06 10:27:55 +0000
commit4e75e05a20ddd0dbca982e8f3bc2ea8043ed3a3f (patch)
tree95409c0e32b644578b94a5c230417da684d79dc9 /Kernel/KernelKit
parentf5081a8f9a8537ad5be5d639955cd1d0e68a9e1d (diff)
parent9994b8f3f88131f41be1061fb0947177e66dc7b0 (diff)
Merged in MHR-23 (pull request #14)
Draft: MHR-23
Diffstat (limited to 'Kernel/KernelKit')
-rw-r--r--Kernel/KernelKit/DebugOutput.hpp18
-rw-r--r--Kernel/KernelKit/DeviceManager.hpp4
-rw-r--r--Kernel/KernelKit/DriveManager.hxx8
-rw-r--r--Kernel/KernelKit/Framebuffer.hpp1
-rw-r--r--Kernel/KernelKit/KernelHeap.hpp5
-rw-r--r--Kernel/KernelKit/PEF.hpp2
-rw-r--r--Kernel/KernelKit/ProcessScheduler.hxx (renamed from Kernel/KernelKit/ProcessScheduler.hpp)10
-rw-r--r--Kernel/KernelKit/SMPManager.hpp2
-rw-r--r--Kernel/KernelKit/ThreadLocalStorage.inl10
-rw-r--r--Kernel/KernelKit/XCOFF.hxx24
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__