summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel
diff options
context:
space:
mode:
Diffstat (limited to 'dev/Kernel')
-rw-r--r--dev/Kernel/HALKit/AMD64/HalKernelMain.cc7
-rw-r--r--dev/Kernel/KernelKit/UserProcessScheduler.h4
-rw-r--r--dev/Kernel/NewKit/Utils.h2
-rw-r--r--dev/Kernel/src/CodeMgr.cc3
-rw-r--r--dev/Kernel/src/UserProcessScheduler.cc2
-rw-r--r--dev/Kernel/src/Utils.cc4
6 files changed, 15 insertions, 7 deletions
diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
index 2de886ca..e9350af9 100644
--- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
@@ -86,7 +86,12 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept
{
CG::CGDrawBackground();
- Kernel::rtl_create_process(rtl_kernel_main, "ZkaOS System Kernel");
+ auto str_proc = Kernel::rt_alloc_string("System");
+
+ Kernel::rtl_create_process(rtl_kernel_main, str_proc);
+
+ delete str_proc;
+ str_proc = nullptr;
if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled)
Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
diff --git a/dev/Kernel/KernelKit/UserProcessScheduler.h b/dev/Kernel/KernelKit/UserProcessScheduler.h
index ab4c4ff1..ab8a52a1 100644
--- a/dev/Kernel/KernelKit/UserProcessScheduler.h
+++ b/dev/Kernel/KernelKit/UserProcessScheduler.h
@@ -131,9 +131,9 @@ namespace Kernel
ImagePtr fCode;
ImagePtr fBlob;
- operator bool()
+ Bool HasCode()
{
- return this->fCode;
+ return this->fCode != nullptr;
}
Bool HasImage()
diff --git a/dev/Kernel/NewKit/Utils.h b/dev/Kernel/NewKit/Utils.h
index 3c72ba8e..cafcfec9 100644
--- a/dev/Kernel/NewKit/Utils.h
+++ b/dev/Kernel/NewKit/Utils.h
@@ -16,7 +16,7 @@ namespace Kernel
voidPtr rt_set_memory(voidPtr dst, UInt32 val, Size len);
void rt_zero_memory(voidPtr pointer, Size len);
Int rt_string_cmp(const Char* src, const Char* cmp, Size len);
- const Char* alloc_string(const Char* text);
+ const Char* rt_alloc_string(const Char* text);
Size rt_string_len(const Char* str);
Size rt_string_len(const Char* str, SizeT _len);
Boolean rt_to_string(Char* buf, Int limit, Int base);
diff --git a/dev/Kernel/src/CodeMgr.cc b/dev/Kernel/src/CodeMgr.cc
index 7946d424..3811b4eb 100644
--- a/dev/Kernel/src/CodeMgr.cc
+++ b/dev/Kernel/src/CodeMgr.cc
@@ -10,10 +10,13 @@
namespace Kernel
{
+ /***********************************************************************************/
/// @brief Executes a new process from a function. Kernel code only.
/// @note This sets up a new stack, anything on the main function that calls the Kernel will not be accessible.
/// @param main the start of the process.
/// @return if the process was started or not.
+ /***********************************************************************************/
+
ProcessID rtl_create_process(rtl_main_kind main, const Char* process_name) noexcept
{
if (!process_name ||
diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc
index cdf5dcee..4560f6eb 100644
--- a/dev/Kernel/src/UserProcessScheduler.cc
+++ b/dev/Kernel/src/UserProcessScheduler.cc
@@ -285,7 +285,7 @@ namespace Kernel
ProcessID UserProcessScheduler::Spawn(UserProcess* process)
{
if (!process ||
- !process->Image)
+ !process->Image.HasCode())
{
return kProcessInvalidID;
}
diff --git a/dev/Kernel/src/Utils.cc b/dev/Kernel/src/Utils.cc
index c0574dca..277de6ce 100644
--- a/dev/Kernel/src/Utils.cc
+++ b/dev/Kernel/src/Utils.cc
@@ -117,9 +117,9 @@ namespace Kernel
return index;
}
- const Char* alloc_string(const Char* text)
+ const Char* rt_alloc_string(const Char* text)
{
- if (!text)
+ if (!text[0])
return nullptr;
const Char* string = new Char[rt_string_len(text)];