summaryrefslogtreecommitdiffhomepage
path: root/Kernel/KernelKit
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/KernelKit')
-rw-r--r--Kernel/KernelKit/DriveManager.hxx11
-rw-r--r--Kernel/KernelKit/HError.hpp10
-rw-r--r--Kernel/KernelKit/ProcessScheduler.hxx16
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*;