diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-30 08:43:46 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-30 08:43:46 +0200 |
| commit | d87eb24271671f4d7d1298c6c4bbdf4e73f774f3 (patch) | |
| tree | 2ec7c6124aefdc308c4017365590eb7e11d54e9f /dev/ZKA/Sources/PEFCodeManager.cxx | |
| parent | 34cc73d2e443ab812e42982a76310627a6693f64 (diff) | |
A lot of fixes regarding the kernel:
+ Either choose NewFS or generic filesystem interface for FileStream class.
+ Fixed PEF code manager executable probing method, inside it's Loader class.
+ Add function mm_update_page for virtual memory purposes.
- Remove logging on HardwareTimer class.
Diffstat (limited to 'dev/ZKA/Sources/PEFCodeManager.cxx')
| -rw-r--r-- | dev/ZKA/Sources/PEFCodeManager.cxx | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/dev/ZKA/Sources/PEFCodeManager.cxx b/dev/ZKA/Sources/PEFCodeManager.cxx index 365f01c2..1b4adcfc 100644 --- a/dev/ZKA/Sources/PEFCodeManager.cxx +++ b/dev/ZKA/Sources/PEFCodeManager.cxx @@ -51,44 +51,41 @@ namespace Kernel : fCachedBlob(nullptr), fBad(false), fFatBinary(false) { fFile.New(const_cast<Char*>(path), cRestrictRB); + fPath = StringBuilder::Construct(path).Leak(); - if (StringBuilder::Equals(fFile->MIME(), this->MIME())) - { - fPath = StringBuilder::Construct(path).Leak(); - - auto cPefHeader = "PEF_CONTAINER"; + auto cPefHeader = "PEF_CONTAINER"; - fCachedBlob = fFile->Read(cPefHeader); + fCachedBlob = fFile->Read(cPefHeader); - PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob); + PEFContainer* container = reinterpret_cast<PEFContainer*>(fCachedBlob); - if (container->Cpu == Detail::rt_get_pef_platform() && - container->Magic[0] == kPefMagic[0] && - container->Magic[1] == kPefMagic[1] && - container->Magic[2] == kPefMagic[2] && - container->Magic[3] == kPefMagic[3] && - container->Magic[4] == kPefMagic[4] && container->Abi == kPefAbi) - { - return; - } - else if (container->Magic[4] == kPefMagic[0] && - container->Magic[3] == kPefMagic[1] && - container->Magic[2] == kPefMagic[2] && - container->Magic[1] == kPefMagic[3] && - container->Magic[0] == kPefMagic[0] && container->Abi == kPefAbi) - { - /// This is a fat binary. - this->fFatBinary = true; - return; - } + if (container->Cpu == Detail::rt_get_pef_platform() && + container->Magic[0] == kPefMagic[0] && + container->Magic[1] == kPefMagic[1] && + container->Magic[2] == kPefMagic[2] && + container->Magic[3] == kPefMagic[3] && + container->Magic[4] == kPefMagic[4] && container->Abi == kPefAbi) + { + return; + } + else if (container->Magic[4] == kPefMagic[0] && + container->Magic[3] == kPefMagic[1] && + container->Magic[2] == kPefMagic[2] && + container->Magic[1] == kPefMagic[3] && + container->Magic[0] == kPefMagic[0] && container->Abi == kPefAbi) + { + /// This is a fat binary. + this->fFatBinary = true; + return; + } - kcout << "CodeManagerPEF: Warning: Executable format error!\n"; - fBad = true; + kcout << "CodeManagerPEF: Warning: Executable format error!\r"; + fBad = true; + if (fCachedBlob) mm_delete_ke_heap(fCachedBlob); - fCachedBlob = nullptr; - } + fCachedBlob = nullptr; } /// @brief PEF destructor. |
