summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-24 17:30:52 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-24 17:30:52 +0200
commitfdc8aaab2ad3c2f2f3f4bb4ffb71bc2d797366aa (patch)
treeda3e628e1c4862c424a2deebae6966d6fc262592 /dev/ZKA/HALKit
parent30e5aa322bf253cdf48cddf53a1c8a1e9720e705 (diff)
[IMP] Better kernel design.
+ If the process has a parent, and it's exited, that means that the thread must go down as well. Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKA/HALKit')
-rw-r--r--dev/ZKA/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx9
-rw-r--r--dev/ZKA/HALKit/AMD64/HalKernelMain.cxx11
2 files changed, 13 insertions, 7 deletions
diff --git a/dev/ZKA/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx b/dev/ZKA/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx
index 7fee9005..b1b8d698 100644
--- a/dev/ZKA/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalCoreMultiProcessingAMD64.cxx
@@ -107,22 +107,26 @@ namespace Kernel::HAL
///////////////////////////////////////////////////////////////////////////////////////
+ /***********************************************************************************/
/// @brief Send start IPI for CPU.
/// @param apicId
/// @param vector
/// @param targetAddress
/// @return
+ /***********************************************************************************/
Void hal_send_start_ipi(UInt32 apicId, UInt8 vector, UInt32 targetAddress)
{
Kernel::ke_dma_write(targetAddress, kAPIC_ICR_High, (apicId << 24));
Kernel::ke_dma_write(targetAddress, kAPIC_ICR_Low, kAPIC_SIPI_Vector | vector);
}
+ /***********************************************************************************/
/// @brief Send end IPI for CPU.
/// @param apicId
/// @param vector
/// @param targetAddress
/// @return
+ /***********************************************************************************/
Void hal_send_end_ipi(UInt32 apicId, UInt8 vector, UInt32 targetAddress)
{
Kernel::ke_dma_write(targetAddress, kAPIC_ICR_High, apicId << 24);
@@ -169,8 +173,10 @@ namespace Kernel::HAL
semaphore_process.Unlock();
}
+ /***********************************************************************************/
/// @brief Fetch and enable cores inside main CPU.
/// @param vendor_ptr RSD PTR structure.
+ /***********************************************************************************/
Void hal_system_get_cores(voidPtr vendor_ptr)
{
auto hw_and_pow_int = PowerFactoryInterface(vendor_ptr);
@@ -216,8 +222,7 @@ namespace Kernel::HAL
++index;
}
- kcout << "newoskrnl: # of Cores: " << number(kSMPCount) << endl;
-
+ kcout << "newoskrnl: # of cores: " << number(kSMPCount) << endl;
kcout << "newoskrnl: First core ID: " << number(cSMPCores[0]) << endl;
kSMPAware = true;
diff --git a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
index 0845dc39..126473a0 100644
--- a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
@@ -23,6 +23,8 @@
Kernel::Property cKernelVersion;
+Kernel::User cUserSuper{Kernel::RingKind::kRingSuperUser, kSuperUser};
+
EXTERN Kernel::Boolean kAllocationInProgress;
EXTERN_C Kernel::VoidPtr kInterruptVectorTable[];
@@ -65,7 +67,7 @@ STATIC Kernel::HAL::Detail::NewOSGDT cGdt = {
};
Kernel::Void hal_real_init(Kernel::Void) noexcept;
-EXTERN_C Kernel::Void KeMain(Kernel::Void);
+EXTERN_C Kernel::Void ke_dll_entrypoint(Kernel::Void);
EXTERN_C void hal_init_platform(
Kernel::HEL::HandoverInformationHeader* HandoverHeader)
@@ -227,12 +229,11 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept
Kernel::NewFilesystemManager::Mount(fs);
- const auto cPassword = "debug_usr";
+ const auto cPassword = "ZKA_KERNEL_AUTHORITY";
- Kernel::User user_debug{Kernel::RingKind::kRingSuperUser, kSuperUser};
- Kernel::UserManager::The()->TryLogIn(user_debug, cPassword, cPassword);
+ cUserSuper.TrySave(cPassword);
- KeMain();
+ ke_dll_entrypoint();
Kernel::ke_stop(RUNTIME_CHECK_FAILED);
}