Initial implementation of ports and sessions

This commit is contained in:
wheremyfoodat 2022-09-17 04:37:40 +03:00
parent aa643c44bb
commit 0e66af8dae
7 changed files with 100 additions and 17 deletions

View file

@ -14,6 +14,7 @@ class Kernel {
// The handle number for the next kernel object to be created
u32 handleCounter;
std::vector<KernelObject> objects;
std::vector<Handle> portHandles;
u32 currentProcess;
@ -47,6 +48,10 @@ class Kernel {
}
Handle makeProcess();
Handle makePort(const char* name);
std::optional<Handle> getPortHandle(const char* name);
void deleteObjectData(KernelObject& object);
KernelObject* getProcessFromPID(Handle handle);
s32 getCurrentResourceValue(const KernelObject* limit, u32 resourceName);
u32 getMaxForResource(const KernelObject* limit, u32 resourceName);
@ -64,6 +69,7 @@ class Kernel {
public:
Kernel(std::array<u32, 16>& regs, Memory& mem) : regs(regs), mem(mem), handleCounter(0) {
objects.reserve(512); // Make room for a few objects to avoid further memory allocs later
portHandles.reserve(32);
}
void serviceSVC(u32 svc);
void reset();