summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/KernelKit
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/KernelKit')
-rw-r--r--dev/kernel/KernelKit/CoreProcessScheduler.h (renamed from dev/kernel/KernelKit/ProcessSchedulerCore.h)0
-rw-r--r--dev/kernel/KernelKit/HardwareThreadScheduler.h8
-rw-r--r--dev/kernel/KernelKit/IPEFDylibObject.h4
-rw-r--r--dev/kernel/KernelKit/PE.h13
-rw-r--r--dev/kernel/KernelKit/PECodeMgr.h55
-rw-r--r--dev/kernel/KernelKit/PEFCodeMgr.h4
-rw-r--r--dev/kernel/KernelKit/UserProcessScheduler.h2
-rw-r--r--dev/kernel/KernelKit/UserProcessScheduler.inl6
8 files changed, 73 insertions, 19 deletions
diff --git a/dev/kernel/KernelKit/ProcessSchedulerCore.h b/dev/kernel/KernelKit/CoreProcessScheduler.h
index bd493140..bd493140 100644
--- a/dev/kernel/KernelKit/ProcessSchedulerCore.h
+++ b/dev/kernel/KernelKit/CoreProcessScheduler.h
diff --git a/dev/kernel/KernelKit/HardwareThreadScheduler.h b/dev/kernel/KernelKit/HardwareThreadScheduler.h
index 9af22715..4d2ebc73 100644
--- a/dev/kernel/KernelKit/HardwareThreadScheduler.h
+++ b/dev/kernel/KernelKit/HardwareThreadScheduler.h
@@ -57,12 +57,12 @@ namespace Kernel
operator bool();
public:
- void Wake(const bool wakeup = false) noexcept;
- void Busy(const bool busy = false) noexcept;
+ void Wake(const BOOL wakeup = false) noexcept;
+ void Busy(const BOOL busy = false) noexcept;
public:
- bool Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid);
- bool IsWakeup() noexcept;
+ BOOL Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid);
+ BOOL IsWakeup() noexcept;
public:
HAL::StackFramePtr StackFrame() noexcept;
diff --git a/dev/kernel/KernelKit/IPEFDylibObject.h b/dev/kernel/KernelKit/IPEFDylibObject.h
index 82f08932..a708fb6c 100644
--- a/dev/kernel/KernelKit/IPEFDylibObject.h
+++ b/dev/kernel/KernelKit/IPEFDylibObject.h
@@ -99,8 +99,8 @@ namespace Kernel
typedef IPEFDylibObject* IDylibRef;
- EXTERN_C IDylibRef rtl_init_dylib(USER_PROCESS& header);
- EXTERN_C Void rtl_fini_dylib(USER_PROCESS& header, IDylibRef lib, Bool* successful);
+ EXTERN_C IDylibRef rtl_init_dylib_pef(USER_PROCESS& header);
+ EXTERN_C Void rtl_fini_dylib_pef(USER_PROCESS& header, IDylibRef lib, Bool* successful);
} // namespace Kernel
#endif /* ifndef __KERNELKIT_SHARED_OBJECT_H__ */
diff --git a/dev/kernel/KernelKit/PE.h b/dev/kernel/KernelKit/PE.h
index fbf8fc20..e2184918 100644
--- a/dev/kernel/KernelKit/PE.h
+++ b/dev/kernel/KernelKit/PE.h
@@ -16,16 +16,13 @@
#include <NewKit/Defines.h>
-#define kPeSignature 0x00004550
+#define kPeSignature (0x00004550)
-#define kPeDLLBase 0x4000000
-#define kPeEXEBase 0x1000000
+#define kPeMagic32 (0x010b)
+#define kPeMagic64 (0x020b)
-#define kPeMagic32 0x010b
-#define kPeMagic64 0x020b
-
-#define kPeMachineAMD64 0x8664
-#define kPeMachineARM64 0xaa64
+#define kPeMachineAMD64 (0x8664)
+#define kPeMachineARM64 (0xaa64)
typedef struct LDR_EXEC_HEADER final
{
diff --git a/dev/kernel/KernelKit/PECodeMgr.h b/dev/kernel/KernelKit/PECodeMgr.h
index e666c501..23ef4ecf 100644
--- a/dev/kernel/KernelKit/PECodeMgr.h
+++ b/dev/kernel/KernelKit/PECodeMgr.h
@@ -22,3 +22,58 @@
#include <KernelKit/PE.h>
#include <NewKit/ErrorOr.h>
#include <NewKit/KString.h>
+#include <KernelKit/FileMgr.h>
+#include <KernelKit/LoaderInterface.h>
+
+#ifndef INC_PROCESS_SCHEDULER_H
+#include <KernelKit/ProcessScheduler.h>
+#endif
+
+#define kPefApplicationMime "application/vnd-portable-executable"
+
+namespace Kernel
+{
+ ///
+ /// \name PE32Loader
+ /// \brief PE32+ loader class.
+ ///
+ class PE32Loader : public LoaderInterface
+ {
+ private:
+ explicit PE32Loader() = delete;
+
+ public:
+ explicit PE32Loader(const VoidPtr blob);
+ explicit PE32Loader(const Char* path);
+ ~PE32Loader() override;
+
+ public:
+ NE_COPY_DEFAULT(PE32Loader)
+
+ public:
+ const Char* Path() override;
+ const Char* AsString() override;
+ const Char* MIME() override;
+
+ public:
+ ErrorOr<VoidPtr> FindStart() override;
+ VoidPtr FindSymbol(const Char* name, Int32 kind) override;
+ ErrorOr<VoidPtr> GetBlob() override;
+
+ public:
+ bool IsLoaded() noexcept;
+
+ private:
+#ifdef __FSKIT_INCLUDES_NEFS__
+ OwnPtr<FileStream<Char, NeFileSystemMgr>> fFile;
+#elif defined(__FSKIT_INCLUDES_HEFS__)
+ OwnPtr<FileStream<Char, HeFileSystemMgr>> fFile;
+#else
+ OwnPtr<FileStream<Char>> fFile;
+#endif // __FSKIT_INCLUDES_NEFS__
+
+ Ref<KString> fPath;
+ VoidPtr fCachedBlob;
+ bool fBad;
+ };
+} // namespace Kernel \ No newline at end of file
diff --git a/dev/kernel/KernelKit/PEFCodeMgr.h b/dev/kernel/KernelKit/PEFCodeMgr.h
index 9adab8f6..389774fd 100644
--- a/dev/kernel/KernelKit/PEFCodeMgr.h
+++ b/dev/kernel/KernelKit/PEFCodeMgr.h
@@ -16,7 +16,7 @@
#include <KernelKit/ProcessScheduler.h>
#endif
-#define kPefApplicationMime "application/vnd-amlal-executable"
+#define kPefApplicationMime "application/vnd-nekernel-executable"
namespace Kernel
{
@@ -53,6 +53,8 @@ namespace Kernel
private:
#ifdef __FSKIT_INCLUDES_NEFS__
OwnPtr<FileStream<Char, NeFileSystemMgr>> fFile;
+#elif defined(__FSKIT_INCLUDES_HEFS__)
+ OwnPtr<FileStream<Char, HeFileSystemMgr>> fFile;
#else
OwnPtr<FileStream<Char>> fFile;
#endif // __FSKIT_INCLUDES_NEFS__
diff --git a/dev/kernel/KernelKit/UserProcessScheduler.h b/dev/kernel/KernelKit/UserProcessScheduler.h
index 6e1ca146..19818213 100644
--- a/dev/kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/kernel/KernelKit/UserProcessScheduler.h
@@ -15,7 +15,7 @@
#include <KernelKit/LockDelegate.h>
#include <KernelKit/User.h>
#include <NewKit/MutableArray.h>
-#include <KernelKit/ProcessSchedulerCore.h>
+#include <KernelKit/CoreProcessScheduler.h>
#define kSchedMinMicroTime (AffinityKind::kStandard)
#define kSchedInvalidPID (-1)
diff --git a/dev/kernel/KernelKit/UserProcessScheduler.inl b/dev/kernel/KernelKit/UserProcessScheduler.inl
index a18af9c1..e31b5462 100644
--- a/dev/kernel/KernelKit/UserProcessScheduler.inl
+++ b/dev/kernel/KernelKit/UserProcessScheduler.inl
@@ -3,11 +3,11 @@
Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
FILE: UserProcessScheduler.inl
- PURPOSE: Low level/Ring-3 USER_PROCESS scheduler.
+ PURPOSE: Low level/Ring-3 process scheduler.
------------------------------------------- */
-/// @brief USER_PROCESS scheduler inline definitions.
+/// @brief USER_PROCESS inline definitions.
/// @author Amlal El Mahrouss (amlal@nekernel.org)
/// @date Tue Apr 22 22:01:07 CEST 2025
@@ -57,7 +57,7 @@ namespace Kernel
entry = entry->MemoryNext;
}
- kout << "Invalid Pointer: Trying to free a pointer which doesn't exist.\r";
+ kout << "USER_PROCESS: Trying to free a pointer which doesn't exist.\r";
this->Crash();