diff options
Diffstat (limited to 'Kernel/KernelKit')
| -rw-r--r-- | Kernel/KernelKit/DriveManager.hxx | 11 | ||||
| -rw-r--r-- | Kernel/KernelKit/HError.hpp | 10 | ||||
| -rw-r--r-- | Kernel/KernelKit/ProcessScheduler.hxx | 16 |
3 files changed, 23 insertions, 14 deletions
diff --git a/Kernel/KernelKit/DriveManager.hxx b/Kernel/KernelKit/DriveManager.hxx index df7d5f28..d4ccb50f 100644 --- a/Kernel/KernelKit/DriveManager.hxx +++ b/Kernel/KernelKit/DriveManager.hxx @@ -4,9 +4,10 @@ ------------------------------------------- */ -#ifndef __DRIVE_MANAGER__ -#define __DRIVE_MANAGER__ +#ifndef __INC_DRIVE_MANAGER_HXX__ +#define __INC_DRIVE_MANAGER_HXX__ +#include <KernelKit/ProcessScheduler.hxx> #include <CompilerKit/CompilerKit.hxx> #include <KernelKit/DebugOutput.hpp> #include <KernelKit/DeviceManager.hpp> @@ -99,7 +100,7 @@ namespace NewOS DriveTraitPtr GetAddressOf(Int32 index) { - DbgLastError() = kErrorSuccess; + ErrLocal() = kErrorSuccess; switch (index) { @@ -112,7 +113,7 @@ namespace NewOS case 3: return &mD; default: { - DbgLastError() = kErrorNoSuchDisk; + ErrLocal() = kErrorNoSuchDisk; kcout << "newoskrnl: No such disk.\n"; break; @@ -145,4 +146,4 @@ namespace NewOS DriveTrait construct_main_drive(void) noexcept; } // namespace NewOS -#endif /* ifndef __DRIVE_MANAGER__ */ +#endif /* ifndef __INC_DRIVE_MANAGER_HXX__ */ diff --git a/Kernel/KernelKit/HError.hpp b/Kernel/KernelKit/HError.hpp index a160508d..a61d84d4 100644 --- a/Kernel/KernelKit/HError.hpp +++ b/Kernel/KernelKit/HError.hpp @@ -8,9 +8,12 @@ #include <NewKit/Defines.hpp> -#define DbgOk() (kLastError == NewOS::kErrorSuccess) -#define DbgFailed() (kLastError != NewOS::kErrorSuccess) -#define DbgLastError() kLastError +/// @file HError.hpp +/// @brief Local Process Codes. + +#define ErrLocalIsOk() (NewOS::ProcessScheduler::The().Leak().TheCurrent().Leak().GetLocalCode() == NewOS::kErrorSuccess) +#define ErrLocalFailed() (NewOS::ProcessScheduler::The().Leak().TheCurrent().Leak().GetLocalCode() != NewOS::kErrorSuccess) +#define ErrLocal() NewOS::ProcessScheduler::The().Leak().TheCurrent().Leak().GetLocalCode() namespace NewOS { @@ -48,4 +51,3 @@ namespace NewOS Boolean ke_bug_check(void) noexcept; } // namespace NewOS -inline NewOS::HError kLastError = 0; diff --git a/Kernel/KernelKit/ProcessScheduler.hxx b/Kernel/KernelKit/ProcessScheduler.hxx index 11555b1d..51a1563f 100644 --- a/Kernel/KernelKit/ProcessScheduler.hxx +++ b/Kernel/KernelKit/ProcessScheduler.hxx @@ -8,7 +8,6 @@ #define _INC_PROCESS_SCHEDULER_HXX_ #include <ArchKit/ArchKit.hpp> -#include <KernelKit/FileManager.hpp> #include <KernelKit/LockDelegate.hpp> #include <KernelKit/PermissionSelector.hxx> #include <KernelKit/UserHeap.hpp> @@ -197,14 +196,19 @@ namespace NewOS // ProcessHeader getters. public: //! @brief ProcessHeader name getter, example: "C RunTime" - const Char* GetName(); + const Char* GetName() noexcept; - const ProcessSelector& GetSelector(); - const ProcessStatus& GetStatus(); - const AffinityKind& GetAffinity(); + //! @brief return local error code of process. + //! @return Int32 local error code. + Int32& GetLocalCode() noexcept; + + const ProcessSelector& GetSelector() noexcept; + const ProcessStatus& GetStatus() noexcept; + const AffinityKind& GetAffinity() noexcept; private: Int32 fLastExitCode{0}; + Int32 fLocalCode{0}; friend ProcessScheduler; friend ProcessHelper; @@ -222,10 +226,12 @@ namespace NewOS MutableArray<Ref<ProcessHeader>>& AsArray(); Ref<ProcessHeader>& AsRef(); + UInt64& Id() noexcept; public: MutableArray<Ref<ProcessHeader>> mProcessList; Ref<ProcessHeader> mCurrentProcess; + UInt64 mTeamId{0}; }; using ProcessHeaderRef = ProcessHeader*; |
