summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/Sources/PEFCodeManager.cxx
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-30 08:43:46 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-30 08:43:46 +0200
commitd87eb24271671f4d7d1298c6c4bbdf4e73f774f3 (patch)
tree2ec7c6124aefdc308c4017365590eb7e11d54e9f /dev/ZKA/Sources/PEFCodeManager.cxx
parent34cc73d2e443ab812e42982a76310627a6693f64 (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.cxx57
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.