diff options
Diffstat (limited to 'src/kernel/KernelKit')
| -rw-r--r-- | src/kernel/KernelKit/CoreProcessScheduler.h | 50 | ||||
| -rw-r--r-- | src/kernel/KernelKit/DriveMgr.h | 2 | ||||
| -rw-r--r-- | src/kernel/KernelKit/HardwareThreadScheduler.h | 6 | ||||
| -rw-r--r-- | src/kernel/KernelKit/ILoader.h | 6 | ||||
| -rw-r--r-- | src/kernel/KernelKit/PCI/DMA.h | 2 | ||||
| -rw-r--r-- | src/kernel/KernelKit/Semaphore.h | 4 | ||||
| -rw-r--r-- | src/kernel/KernelKit/ThreadLocalStorage.h | 1 | ||||
| -rw-r--r-- | src/kernel/KernelKit/Timer.h | 1 | ||||
| -rw-r--r-- | src/kernel/KernelKit/UserMgr+User.h | 101 | ||||
| -rw-r--r-- | src/kernel/KernelKit/UserMgr.h | 97 | ||||
| -rw-r--r-- | src/kernel/KernelKit/UserProcessScheduler.h | 2 |
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> //////////////////////////////////////////////////// |
