NeKernel dev
Loading...
Searching...
No Matches
PEFCodeMgr.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5======================================== */
6
7#ifndef _INC_CODE_MANAGER_PEF_H_
8#define _INC_CODE_MANAGER_PEF_H_
9
13
14#include <KernelKit/FileMgr.h>
15#include <KernelKit/PEF.h>
16#include <NeKit/ErrorOr.h>
17#include <NeKit/KString.h>
18
19#ifndef INC_PROCESS_SCHEDULER_H
21#endif
22
23#define kPefApplicationMime "application/vnd-nekernel-executable"
24
25namespace Kernel {
30class PEFLoader : public ILoader {
31 private:
32 explicit PEFLoader() = delete;
33
34 public:
35 explicit PEFLoader(const VoidPtr blob);
36 explicit PEFLoader(const Char* path);
37 ~PEFLoader() override;
38
39 public:
41
42 public:
43 const Char* Path() override;
44 const Char* AsString() override;
45 const Char* MIME() override;
46
47 public:
48 ErrorOr<VoidPtr> FindStart() override;
49 ErrorOr<VoidPtr> FindSymbol(const Char* name, Int32 kind) override;
50 ErrorOr<VoidPtr> GetBlob() override;
51
52 public:
53 bool IsLoaded();
54
55 private:
56#ifdef __FSKIT_INCLUDES_NEFS__
58#elif defined(__FSKIT_INCLUDES_OPENHEFS__)
60#else
62#endif // __FSKIT_INCLUDES_NEFS__
63
68};
69
70namespace Utils {
71 ProcessID rtl_create_user_process(PEFLoader& exec, const Int32& procKind);
72} // namespace Utils
73} // namespace Kernel
74
75#endif // ifndef _INC_CODE_MANAGER_PEF_H_
#define NE_COPY_DEFAULT(KLASS)
Definition Detail.h:17
#define BOOL
File Manager System.
ErrorOr class for error handling.
Definition ErrorOr.h:22
ILoader()=default
Definition OwnPtr.h:23
Definition PEFCodeMgr.h:30
bool IsLoaded()
Tells if the executable is loaded or not.
Definition PEFCodeMgr.cc:264
ErrorOr< VoidPtr > FindStart() override
Finds the executable entrypoint.
Definition PEFCodeMgr.cc:256
Ref< KString > fPath
Definition PEFCodeMgr.h:64
BOOL fFatBinary
Definition PEFCodeMgr.h:66
const Char * Path() override
Definition PEFCodeMgr.cc:268
ErrorOr< VoidPtr > GetBlob() override
Definition PEFCodeMgr.cc:292
VoidPtr fCachedBlob
Definition PEFCodeMgr.h:65
const Char * MIME() override
Definition PEFCodeMgr.cc:288
OwnPtr< FileStream< Char > > fFile
Definition PEFCodeMgr.h:61
ErrorOr< VoidPtr > FindSymbol(const Char *name, Int32 kind) override
Finds the symbol according to it's name.
Definition PEFCodeMgr.cc:149
const Char * AsString() override
Definition PEFCodeMgr.cc:272
BOOL fBad
Definition PEFCodeMgr.h:67
~PEFLoader() override
PEF destructor.
Definition PEFCodeMgr.cc:138
Reference wrapper class. /// =========================================================== ///.
Definition Ref.h:22
Definition PEFCodeMgr.h:70
ProcessID rtl_create_user_process(PEFLoader &exec, const Int32 &procKind)
Definition PEFCodeMgr.cc:297
UPS inline definitions.
Definition Device.h:12
char Char
Definition Config.h:51
Int64 ProcessID
Local Process Identifier type.
Definition CoreProcessScheduler.h:219
void * VoidPtr
Definition Config.h:33
__INT32_TYPE__ Int32
Definition Config.h:38