summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/KernelKit
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/KernelKit')
-rw-r--r--dev/kernel/KernelKit/CodeMgr.h3
-rw-r--r--dev/kernel/KernelKit/CoreProcessScheduler.h3
-rw-r--r--dev/kernel/KernelKit/DriveMgr.h24
-rw-r--r--dev/kernel/KernelKit/FileMgr.h10
-rw-r--r--dev/kernel/KernelKit/HardwareThreadScheduler.h2
-rw-r--r--dev/kernel/KernelKit/IFS.h4
-rw-r--r--dev/kernel/KernelKit/ILoader.h (renamed from dev/kernel/KernelKit/LoaderInterface.h)8
-rw-r--r--dev/kernel/KernelKit/KernelTaskScheduler.h6
-rw-r--r--dev/kernel/KernelKit/PECodeMgr.h77
-rw-r--r--dev/kernel/KernelKit/PEF.h2
-rw-r--r--dev/kernel/KernelKit/PEFCodeMgr.h2
-rw-r--r--dev/kernel/KernelKit/UserMgr.h6
-rw-r--r--dev/kernel/KernelKit/UserProcessScheduler.h6
-rw-r--r--dev/kernel/KernelKit/ZXD.h4
14 files changed, 41 insertions, 116 deletions
diff --git a/dev/kernel/KernelKit/CodeMgr.h b/dev/kernel/KernelKit/CodeMgr.h
index c733bc47..fc737a90 100644
--- a/dev/kernel/KernelKit/CodeMgr.h
+++ b/dev/kernel/KernelKit/CodeMgr.h
@@ -14,9 +14,10 @@
#pragma once
+#ifdef __NE_USE_PEF__
#include <KernelKit/IPEFDylibObject.h>
-#include <KernelKit/PECodeMgr.h>
#include <KernelKit/PEFCodeMgr.h>
+#endif
/// @file CodeMgr.h
/// @brief Code Manager header file.
diff --git a/dev/kernel/KernelKit/CoreProcessScheduler.h b/dev/kernel/KernelKit/CoreProcessScheduler.h
index f40ffc81..49e9363e 100644
--- a/dev/kernel/KernelKit/CoreProcessScheduler.h
+++ b/dev/kernel/KernelKit/CoreProcessScheduler.h
@@ -147,7 +147,8 @@ enum class ProcessSubsystem : Int32 {
kProcessSubsystemUser,
kProcessSubsystemService,
kProcessSubsystemDriver,
- kProcessSubsystemCount = kProcessSubsystemDriver - kProcessSubsystemSecurity + 1,
+ kProcessSubsystemKernel,
+ kProcessSubsystemCount = kProcessSubsystemKernel - kProcessSubsystemSecurity + 1,
kProcessSubsystemInvalid = 0xFFFFFFF,
};
diff --git a/dev/kernel/KernelKit/DriveMgr.h b/dev/kernel/KernelKit/DriveMgr.h
index 69df1cec..6340d966 100644
--- a/dev/kernel/KernelKit/DriveMgr.h
+++ b/dev/kernel/KernelKit/DriveMgr.h
@@ -52,9 +52,9 @@ enum {
/// @brief Media drive trait type.
struct DriveTrait final {
- Char fName[kDriveNameLen]; // /System, /boot, //./Devices/USB...
- Int32 fKind; // fMassStorage, fFloppy, fOpticalDrive.
- Int32 fFlags; // fReadOnly, fEPMDrive...
+ Char fName[kDriveNameLen] = {0}; // /System, /boot, //./Devices/USB...
+ UInt32 fKind{}; // fMassStorage, fFloppy, fOpticalDrive.
+ UInt32 fFlags{}; // fReadOnly, fEPMDrive...
/// @brief Packet drive (StorageKit compilant.)
struct DrivePacket final {
@@ -70,11 +70,11 @@ struct DriveTrait final {
Lba fLbaStart{0}, fLbaEnd{0};
SizeT fSectorSz{kDriveSectorSz};
- Void (*fInput)(DrivePacket& packet);
- Void (*fOutput)(DrivePacket& packet);
- Void (*fVerify)(DrivePacket& packet);
- Void (*fInit)(DrivePacket& packet);
- const Char* (*fProtocol)(Void);
+ Void (*fInput)(DrivePacket& packet){};
+ Void (*fOutput)(DrivePacket& packet){};
+ Void (*fVerify)(DrivePacket& packet){};
+ Void (*fInit)(DrivePacket& packet){};
+ const Char* (*fProtocol)(Void){};
};
namespace Detail {
@@ -89,12 +89,12 @@ typedef DriveTrait* DriveTraitPtr;
* @note This class has all of it's drive set to nullptr, allocate them using
* GetAddressOf(index).
*/
-class MountpointInterface final {
+class IMountpoint final {
public:
- explicit MountpointInterface() = default;
- ~MountpointInterface() = default;
+ explicit IMountpoint() = default;
+ ~IMountpoint() = default;
- NE_COPY_DEFAULT(MountpointInterface)
+ NE_COPY_DEFAULT(IMountpoint)
public:
DriveTrait& A() { return mA; }
diff --git a/dev/kernel/KernelKit/FileMgr.h b/dev/kernel/KernelKit/FileMgr.h
index bad6cf85..ff290780 100644
--- a/dev/kernel/KernelKit/FileMgr.h
+++ b/dev/kernel/KernelKit/FileMgr.h
@@ -23,12 +23,12 @@
#define INC_FILEMGR_H
/// @file FileMgr.h
-/// @brief File Manager.
+/// @brief File Manager System.
/// @author Amlal El Mahrouss (amlal@nekernel.org)
//! Include filesystems that NeKernel supports.
#include <FSKit/Ext2+IFS.h>
-#include <FSKit/HeFS.h>
+#include <FSKit/OpenHeFS.h>
#include <FSKit/NeFS.h>
#include <CompilerKit/CompilerKit.h>
@@ -71,7 +71,7 @@ enum {
kFileIOCnt = (kFileFlagData - kFileWriteAll) + 1,
};
-typedef VoidPtr NodePtr;
+using NodePtr = VoidPtr;
/**
@brief Filesystem Mgr Interface class
@@ -298,7 +298,7 @@ class FileStream final {
if (man) {
man->Write(offset, fFile, data, len);
- return ErrorOr<Int64>(0);
+ return ErrorOr<Int64>(kErrorSuccess);
}
return ErrorOr<Int64>(kErrorInvalidData);
@@ -317,7 +317,7 @@ class FileStream final {
if (man) {
man->Write(name, fFile, data, 0, len);
- return ErrorOr<Int64>(0);
+ return ErrorOr<Int64>(kErrorSuccess);
}
return ErrorOr<Int64>(kErrorInvalidData);
diff --git a/dev/kernel/KernelKit/HardwareThreadScheduler.h b/dev/kernel/KernelKit/HardwareThreadScheduler.h
index 76327a93..e26a353a 100644
--- a/dev/kernel/KernelKit/HardwareThreadScheduler.h
+++ b/dev/kernel/KernelKit/HardwareThreadScheduler.h
@@ -120,7 +120,7 @@ class HardwareThreadScheduler final : public ISchedulable {
private:
Array<HardwareThread, kMaxAPInsideSched> fThreadList;
- ThreadID fCurrentThread{0};
+ ThreadID fCurrentThreadIdx{0};
};
/// @brief wakes up thread.
diff --git a/dev/kernel/KernelKit/IFS.h b/dev/kernel/KernelKit/IFS.h
index ed1d87b5..b1dd2001 100644
--- a/dev/kernel/KernelKit/IFS.h
+++ b/dev/kernel/KernelKit/IFS.h
@@ -14,12 +14,12 @@ namespace Kernel {
/// @param DrvTrait drive info
/// @param DrvIndex drive index.
/// @return
-Int32 fs_ifs_read(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex);
+Int32 fs_ifs_read(IMountpoint* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex);
/// @brief Write to IFS disk.
/// @param Mnt mounted interface.
/// @param DrvTrait drive info
/// @param DrvIndex drive index.
/// @return
-Int32 fs_ifs_write(MountpointInterface* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex);
+Int32 fs_ifs_write(IMountpoint* Mnt, DriveTrait& DrvTrait, Int32 DrvIndex);
} // namespace Kernel
diff --git a/dev/kernel/KernelKit/LoaderInterface.h b/dev/kernel/KernelKit/ILoader.h
index 1f9b1e56..ec8ee1bc 100644
--- a/dev/kernel/KernelKit/LoaderInterface.h
+++ b/dev/kernel/KernelKit/ILoader.h
@@ -14,12 +14,12 @@
namespace Kernel {
/// @brief This interface is used to make loader contracts (MSCOFF, PEF).
/// @author @Amlal-El-Mahrouss
-class LoaderInterface {
+class ILoader {
public:
- explicit LoaderInterface() = default;
- virtual ~LoaderInterface() = default;
+ explicit ILoader() = default;
+ virtual ~ILoader() = default;
- NE_COPY_DEFAULT(LoaderInterface)
+ NE_COPY_DEFAULT(ILoader)
public:
virtual _Output ErrorOr<VoidPtr> GetBlob() = 0;
diff --git a/dev/kernel/KernelKit/KernelTaskScheduler.h b/dev/kernel/KernelKit/KernelTaskScheduler.h
index ce0ff30d..2029ae7b 100644
--- a/dev/kernel/KernelKit/KernelTaskScheduler.h
+++ b/dev/kernel/KernelKit/KernelTaskScheduler.h
@@ -24,7 +24,7 @@ typedef ProcessID KID;
class KERNEL_TASK final {
public:
Char Name[kSchedNameLen] = {"KERNEL_TASK"};
- ProcessSubsystem SubSystem{ProcessSubsystem::kProcessSubsystemDriver};
+ ProcessSubsystem SubSystem{ProcessSubsystem::kProcessSubsystemKernel};
HAL::StackFramePtr StackFrame{nullptr};
UInt8* StackReserve{nullptr};
SizeT StackSize{kSchedMaxStackSz};
@@ -40,7 +40,7 @@ class KernelTaskHelper final {
public:
STATIC Bool Switch(HAL::StackFramePtr frame_ptr, ProcessID new_kid);
STATIC Bool CanBeScheduled(const KERNEL_TASK& process);
- STATIC ErrorOr<ProcessID> TheCurrentKID();
- STATIC SizeT StartScheduling();
+ STATIC ErrorOr<KID> TheCurrentKID();
+ STATIC SizeT StartScheduling();
};
} // namespace Kernel \ No newline at end of file
diff --git a/dev/kernel/KernelKit/PECodeMgr.h b/dev/kernel/KernelKit/PECodeMgr.h
deleted file mode 100644
index 15c2b7ee..00000000
--- a/dev/kernel/KernelKit/PECodeMgr.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* -------------------------------------------
-
- Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
-
- File: PECodeMgr.h
- Purpose: PE32+ Code Mgr and Dylib mgr.
-
- Revision History:
-
- 12/02/24: Added file (amlel)
-
-------------------------------------------- */
-
-#pragma once
-
-////////////////////////////////////////////////////
-
-// LAST REV: Mon Feb 12 13:52:01 CET 2024
-
-////////////////////////////////////////////////////
-
-#include <KernelKit/FileMgr.h>
-#include <KernelKit/LoaderInterface.h>
-#include <KernelKit/PE.h>
-#include <NeKit/ErrorOr.h>
-#include <NeKit/KString.h>
-
-#ifndef INC_PROCESS_SCHEDULER_H
-#include <KernelKit/ProcessScheduler.h>
-#endif
-
-#define kPeApplicationMime "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;
- ErrorOr<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/PEF.h b/dev/kernel/KernelKit/PEF.h
index f0ba9ef9..0410c63a 100644
--- a/dev/kernel/KernelKit/PEF.h
+++ b/dev/kernel/KernelKit/PEF.h
@@ -15,7 +15,7 @@
#define __KERNELKIT_PEF_H__
#include <CompilerKit/CompilerKit.h>
-#include <KernelKit/LoaderInterface.h>
+#include <KernelKit/ILoader.h>
#include <NeKit/Defines.h>
#define kPefMagic "Open"
diff --git a/dev/kernel/KernelKit/PEFCodeMgr.h b/dev/kernel/KernelKit/PEFCodeMgr.h
index d61aa863..3ed9c097 100644
--- a/dev/kernel/KernelKit/PEFCodeMgr.h
+++ b/dev/kernel/KernelKit/PEFCodeMgr.h
@@ -27,7 +27,7 @@ namespace Kernel {
/// \name PEFLoader
/// \brief PEF loader class.
///
-class PEFLoader : public LoaderInterface {
+class PEFLoader : public ILoader {
private:
explicit PEFLoader() = delete;
diff --git a/dev/kernel/KernelKit/UserMgr.h b/dev/kernel/KernelKit/UserMgr.h
index 6fa8ba14..c660025b 100644
--- a/dev/kernel/KernelKit/UserMgr.h
+++ b/dev/kernel/KernelKit/UserMgr.h
@@ -22,9 +22,9 @@
///! We got the MGMT, STD (%s format) and GUEST users,
///! all are used to make authorized operations.
-#define kSuperUser "OS AUTHORITY/MGMT/%s"
-#define kGuestUser "OS AUTHORITY/GUEST/%s"
-#define kStdUser "OS AUTHORITY/STD/%s"
+#define kSuperUser "NEKERNEL/MGMT/%s"
+#define kGuestUser "NEKERNEL/GUEST/%s"
+#define kStdUser "NEKERNEL/STD/%s"
#define kUsersDir "/users/"
diff --git a/dev/kernel/KernelKit/UserProcessScheduler.h b/dev/kernel/KernelKit/UserProcessScheduler.h
index e5b81f76..2cf65fe0 100644
--- a/dev/kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/kernel/KernelKit/UserProcessScheduler.h
@@ -86,7 +86,7 @@ class USER_PROCESS final {
/***********************************************************************************/
//! @brief boolean operator, check status.
/***********************************************************************************/
- operator bool();
+ explicit operator bool();
/***********************************************************************************/
///! @brief Crashes the app, exits with code ~0.
@@ -192,8 +192,8 @@ class UserProcessScheduler final : public ISchedulable {
NE_MOVE_DELETE(UserProcessScheduler)
public:
- operator bool();
- bool operator!();
+ explicit operator bool();
+ bool operator!();
public:
UserProcessTeam& TheCurrentTeam();
diff --git a/dev/kernel/KernelKit/ZXD.h b/dev/kernel/KernelKit/ZXD.h
index 966c54c7..bae47258 100644
--- a/dev/kernel/KernelKit/ZXD.h
+++ b/dev/kernel/KernelKit/ZXD.h
@@ -23,7 +23,7 @@ enum ZXD_FLAGS {
/// @brief ZXD executable header
/// @details This header is used to identify ZXD executable files.
-struct PACKED ZXD_EXEC_HEADER {
+struct PACKED ZXD_EXEC_HEADER final {
UInt32 fMagic;
UInt32 fVersion;
UInt32 fFlags;
@@ -42,7 +42,7 @@ struct PACKED ZXD_EXEC_HEADER {
/// @brief ZXD stub header
/// @details This header is used to identify ZXD stub files. It contains the size of the stub, the
/// offset of the stub, and the CRC32 checksum of the stub.
-struct PACKED ZXD_STUB_HEADER {
+struct PACKED ZXD_STUB_HEADER final {
UInt32 fStubSize;
UInt32 fStubOffset;
UInt32 fStubCRC32;