summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/KernelKit
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/KernelKit')
-rw-r--r--src/kernel/KernelKit/CoreProcessScheduler.h50
-rw-r--r--src/kernel/KernelKit/DriveMgr.h2
-rw-r--r--src/kernel/KernelKit/HardwareThreadScheduler.h6
-rw-r--r--src/kernel/KernelKit/ILoader.h6
-rw-r--r--src/kernel/KernelKit/PCI/DMA.h2
-rw-r--r--src/kernel/KernelKit/Semaphore.h4
-rw-r--r--src/kernel/KernelKit/ThreadLocalStorage.h1
-rw-r--r--src/kernel/KernelKit/Timer.h1
-rw-r--r--src/kernel/KernelKit/UserMgr+User.h101
-rw-r--r--src/kernel/KernelKit/UserMgr.h97
-rw-r--r--src/kernel/KernelKit/UserProcessScheduler.h2
11 files changed, 154 insertions, 118 deletions
diff --git a/src/kernel/KernelKit/CoreProcessScheduler.h b/src/kernel/KernelKit/CoreProcessScheduler.h
index a6f817f7..c87e4cec 100644
--- a/src/kernel/KernelKit/CoreProcessScheduler.h
+++ b/src/kernel/KernelKit/CoreProcessScheduler.h
@@ -59,11 +59,19 @@ struct ProcessHeapTree {
TreeKind Color{TreeKind::kBlackTreeKind};
- struct ProcessHeapTree<T>* Parent{nullptr};
- struct ProcessHeapTree<T>* Child{nullptr};
-
- struct ProcessHeapTree<T>* Prev{nullptr};
- struct ProcessHeapTree<T>* Next{nullptr};
+ struct ProcessHeapTree<T>* Parent {
+ nullptr
+ };
+ struct ProcessHeapTree<T>* Child {
+ nullptr
+ };
+
+ struct ProcessHeapTree<T>* Prev {
+ nullptr
+ };
+ struct ProcessHeapTree<T>* Next {
+ nullptr
+ };
};
template <typename T>
@@ -78,13 +86,21 @@ struct ProcessFileTree {
TreeKind Color{TreeKind::kBlackTreeKind};
- struct ProcessFileTree<T>* Parent{nullptr};
+ struct ProcessFileTree<T>* Parent {
+ nullptr
+ };
- struct ProcessFileTree<T>* Child{nullptr};
+ struct ProcessFileTree<T>* Child {
+ nullptr
+ };
- struct ProcessFileTree<T>* Prev{nullptr};
+ struct ProcessFileTree<T>* Prev {
+ nullptr
+ };
- struct ProcessFileTree<T>* Next{nullptr};
+ struct ProcessFileTree<T>* Next {
+ nullptr
+ };
};
template <typename T>
@@ -105,13 +121,21 @@ struct ProcessSpecialTree {
TreeKind Color{TreeKind::kBlackTreeKind};
- struct ProcessSpecialTree<T>* Parent{nullptr};
+ struct ProcessSpecialTree<T>* Parent {
+ nullptr
+ };
- struct ProcessSpecialTree<T>* Child{nullptr};
+ struct ProcessSpecialTree<T>* Child {
+ nullptr
+ };
- struct ProcessSpecialTree<T>* Prev{nullptr};
+ struct ProcessSpecialTree<T>* Prev {
+ nullptr
+ };
- struct ProcessSpecialTree<T>* Next{nullptr};
+ struct ProcessSpecialTree<T>* Next {
+ nullptr
+ };
};
/***********************************************************************************/
diff --git a/src/kernel/KernelKit/DriveMgr.h b/src/kernel/KernelKit/DriveMgr.h
index 5c13460b..ad17c5a6 100644
--- a/src/kernel/KernelKit/DriveMgr.h
+++ b/src/kernel/KernelKit/DriveMgr.h
@@ -72,7 +72,7 @@ struct DriveTrait final {
Void (*fOutput)(DrivePacket& packet){nullptr};
Void (*fVerify)(DrivePacket& packet){nullptr};
Void (*fInit)(DrivePacket& packet){nullptr};
- const Char* (*fProtocol)(Void) {nullptr};
+ const Char* (*fProtocol)(Void){nullptr};
};
namespace Probe {
diff --git a/src/kernel/KernelKit/HardwareThreadScheduler.h b/src/kernel/KernelKit/HardwareThreadScheduler.h
index 6813fcfe..ec03d7c2 100644
--- a/src/kernel/KernelKit/HardwareThreadScheduler.h
+++ b/src/kernel/KernelKit/HardwareThreadScheduler.h
@@ -63,10 +63,10 @@ class HardwareThread final {
BOOL IsWakeup();
public:
- HAL::StackFramePtr StackFrame();
+ HAL::StackFramePtr StackFrame();
_Output const ThreadKind& Kind();
BOOL IsBusy();
- _Output const ThreadID& ID();
+ _Output const ThreadID& ID();
private:
HAL::StackFramePtr fStack{};
@@ -101,7 +101,7 @@ class HardwareThreadScheduler final : public ISchedulable {
public:
Ref<HardwareThread*> operator[](SizeT idx);
bool operator!();
- operator bool();
+ operator bool();
Bool IsUser() override { return Yes; }
diff --git a/src/kernel/KernelKit/ILoader.h b/src/kernel/KernelKit/ILoader.h
index 8399e1ea..786cf3ee 100644
--- a/src/kernel/KernelKit/ILoader.h
+++ b/src/kernel/KernelKit/ILoader.h
@@ -22,9 +22,9 @@ class ILoader {
public:
virtual _Output ErrorOr<VoidPtr> GetBlob() { return ErrorOr<VoidPtr>{}; }
- virtual _Output const Char* AsString() { return ""; }
- virtual _Output const Char* MIME() { return ""; }
- virtual _Output const Char* Path() { return ""; }
+ virtual _Output const Char* AsString() { return ""; }
+ virtual _Output const Char* MIME() { return ""; }
+ virtual _Output const Char* Path() { return ""; }
virtual _Output ErrorOr<VoidPtr> FindStart() { return ErrorOr<VoidPtr>{}; }
virtual _Output ErrorOr<VoidPtr> FindSymbol(_Input const Char*, _Input Int32) {
return ErrorOr<VoidPtr>{};
diff --git a/src/kernel/KernelKit/PCI/DMA.h b/src/kernel/KernelKit/PCI/DMA.h
index 38854f31..11b044cd 100644
--- a/src/kernel/KernelKit/PCI/DMA.h
+++ b/src/kernel/KernelKit/PCI/DMA.h
@@ -46,7 +46,7 @@ class DMAWrapper final {
T* Get(UIntPtr off = 0);
public:
- operator bool();
+ operator bool();
bool operator!();
public:
diff --git a/src/kernel/KernelKit/Semaphore.h b/src/kernel/KernelKit/Semaphore.h
index 0a74a771..523d184f 100644
--- a/src/kernel/KernelKit/Semaphore.h
+++ b/src/kernel/KernelKit/Semaphore.h
@@ -18,8 +18,8 @@
#define kSemaphoreCount (2U)
-#define kSemaphoreIncrementOwner(sem) (sem[kSemaphoreOwnerIndex]++)
-#define kSemaphoreDecrementOwner(sem) (sem[kSemaphoreOwnerIndex]--)
+#define kSemaphoreIncrementOwner(sem) (++sem[kSemaphoreOwnerIndex])
+#define kSemaphoreDecrementOwner(sem) (--sem[kSemaphoreOwnerIndex])
namespace Kernel {
diff --git a/src/kernel/KernelKit/ThreadLocalStorage.h b/src/kernel/KernelKit/ThreadLocalStorage.h
index 42310d87..a314ba38 100644
--- a/src/kernel/KernelKit/ThreadLocalStorage.h
+++ b/src/kernel/KernelKit/ThreadLocalStorage.h
@@ -29,6 +29,7 @@ struct THREAD_INFORMATION_BLOCK;
struct PACKED THREAD_INFORMATION_BLOCK final {
Kernel::Char Cookie[kCookieMagLen]{0}; //! Thread Magic Number.
Kernel::VoidPtr UserData{nullptr}; //! Thread Information Record (User defined canary structure)
+ Char Pad{};
};
///! @brief Cookie Sanity check.
diff --git a/src/kernel/KernelKit/Timer.h b/src/kernel/KernelKit/Timer.h
index 77437f01..4e6b866d 100644
--- a/src/kernel/KernelKit/Timer.h
+++ b/src/kernel/KernelKit/Timer.h
@@ -11,6 +11,7 @@
namespace Kernel {
class SoftwareTimer;
+class HardwareTimer;
class ITimer;
inline constexpr Int16 kTimeUnit = 1000;
diff --git a/src/kernel/KernelKit/UserMgr+User.h b/src/kernel/KernelKit/UserMgr+User.h
new file mode 100644
index 00000000..c14d609e
--- /dev/null
+++ b/src/kernel/KernelKit/UserMgr+User.h
@@ -0,0 +1,101 @@
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
+// Licensed under the Apache License, Version 2.0 (see LICENSE file)
+// Official repository: https://github.com/nekernel-org/nekernel
+
+#ifndef KERNELKIT_USERMGR_USER_H
+#define KERNELKIT_USERMGR_USER_H
+
+/* ========================================
+
+ Revision History:
+
+ 04/03/25: Set users directory as /users/ instead of /usr/
+
+ ======================================== */
+
+#include <CompilerKit/CompilerKit.h>
+#include <KernelKit/KPC.h>
+#include <NeKit/Config.h>
+#include <NeKit/KString.h>
+
+///! We got the MGMT, STD (%s format) and GUEST users,
+///! all are used to make authorized operations.
+#define kMgmtUser "NEKERNEL/MGMT/%s"
+#define kGuestUser "NEKERNEL/GUEST/%s"
+#define kStdUser "NEKERNEL/STD/%s"
+
+#define kUsersDir "/users/"
+
+#define kMaxUserNameLen (256U)
+#define kMaxUserTokenLen (256U)
+
+namespace Kernel {
+
+class User;
+
+enum struct UserRingKind : Int32 {
+ kRingInvalid = 0,
+ kRingStdUser = 444,
+ kRingSuperUser = 666,
+ kRingGuestUser = 777,
+ kRingCount = 3,
+};
+
+using UserPublicKey = Char*;
+using UserPublicKeyType = Char;
+
+/// @brief System User class.
+class User final {
+ public:
+ User() = delete;
+
+ User(const Int32& sel, const Char* username);
+ User(const UserRingKind& kind, const Char* username);
+
+ ~User();
+
+ public:
+ NE_COPY_DEFAULT(User)
+
+ public:
+ bool operator==(const User& lhs);
+ bool operator!=(const User& lhs);
+
+ public:
+ /// @brief Get software ring
+ const UserRingKind& Ring();
+
+ /// @brief Get user name
+ Char* Name();
+
+ /// @brief Is he a standard user?
+ Bool IsStdUser();
+
+ /// @brief Is she a super user?
+ Bool IsSuperUser();
+
+ /// @brief Saves a password from the public key.
+ Bool Save(const UserPublicKey password);
+
+ /// @brief Checks if a password matches the **password**.
+ /// @param password the password to check.
+ Bool Login(const UserPublicKey password);
+
+ private:
+ UserRingKind mUserRing{UserRingKind::kRingStdUser};
+ Char mUserName[kMaxUserNameLen] = {0};
+ UInt64 mUserFNV{0UL};
+};
+
+/// \brief Alias for user ptr.
+using UserPtr = User*;
+
+/// \brief Current user pointer.
+inline UserPtr kCurrentUser = nullptr;
+
+/// \brief Supervisor pointer.
+inline UserPtr kRootUser = nullptr;
+
+} // namespace Kernel
+
+#endif /* ifndef KERNELKIT_USERMGR_USER_H */
diff --git a/src/kernel/KernelKit/UserMgr.h b/src/kernel/KernelKit/UserMgr.h
index e568dd45..66f5a129 100644
--- a/src/kernel/KernelKit/UserMgr.h
+++ b/src/kernel/KernelKit/UserMgr.h
@@ -1,101 +1,10 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/nekernel-org/nekernel
#ifndef KERNELKIT_USERMGR_H
#define KERNELKIT_USERMGR_H
-/* ========================================
+#include <KernelKit/UserMgr+User.h>
- Revision History:
-
- 04/03/25: Set users directory as /users/ instead of /usr/
-
- ======================================== */
-
-#include <CompilerKit/CompilerKit.h>
-#include <KernelKit/KPC.h>
-#include <NeKit/Config.h>
-#include <NeKit/KString.h>
-
-///! We got the MGMT, STD (%s format) and GUEST users,
-///! all are used to make authorized operations.
-#define kMgmtUser "NEKERNEL/MGMT/%s"
-#define kGuestUser "NEKERNEL/GUEST/%s"
-#define kStdUser "NEKERNEL/STD/%s"
-
-#define kUsersDir "/users/"
-
-#define kMaxUserNameLen (256U)
-#define kMaxUserTokenLen (256U)
-
-namespace Kernel {
-
-class User;
-
-enum struct UserRingKind : Int32 {
- kRingInvalid = 0,
- kRingStdUser = 444,
- kRingSuperUser = 666,
- kRingGuestUser = 777,
- kRingCount = 3,
-};
-
-using UserPublicKey = Char*;
-using UserPublicKeyType = Char;
-
-/// @brief System User class.
-class User final {
- public:
- User() = delete;
-
- User(const Int32& sel, const Char* username);
- User(const UserRingKind& kind, const Char* username);
-
- ~User();
-
- public:
- NE_COPY_DEFAULT(User)
-
- public:
- bool operator==(const User& lhs);
- bool operator!=(const User& lhs);
-
- public:
- /// @brief Get software ring
- const UserRingKind& Ring();
-
- /// @brief Get user name
- Char* Name();
-
- /// @brief Is he a standard user?
- Bool IsStdUser();
-
- /// @brief Is she a super user?
- Bool IsSuperUser();
-
- /// @brief Saves a password from the public key.
- Bool Save(const UserPublicKey password);
-
- /// @brief Checks if a password matches the **password**.
- /// @param password the password to check.
- Bool Login(const UserPublicKey password);
-
- private:
- UserRingKind mUserRing{UserRingKind::kRingStdUser};
- Char mUserName[kMaxUserNameLen] = {0};
- UInt64 mUserFNV{0UL};
-};
-
-/// \brief Alias for user ptr.
-using UserPtr = User*;
-
-/// \brief Current running user.
-inline UserPtr kCurrentUser = nullptr;
-
-/// \brief Super user.
-inline UserPtr kRootUser = nullptr;
-
-} // namespace Kernel
-
-#endif /* ifndef KERNELKIT_USERMGR_H */
+#endif \ No newline at end of file
diff --git a/src/kernel/KernelKit/UserProcessScheduler.h b/src/kernel/KernelKit/UserProcessScheduler.h
index 79513b83..6db304f8 100644
--- a/src/kernel/KernelKit/UserProcessScheduler.h
+++ b/src/kernel/KernelKit/UserProcessScheduler.h
@@ -12,7 +12,7 @@
#include <ArchKit/ArchKit.h>
#include <KernelKit/CoreProcessScheduler.h>
#include <KernelKit/LockDelegate.h>
-#include <KernelKit/UserMgr.h>
+#include <KernelKit/UserMgr+User.h>
#include <NeKit/MutableArray.h>
////////////////////////////////////////////////////