Add a basic IPC setup with Channel Object.

Pass a process a channel endpoint on startup that it will use to
get it's initial capabilities.
This commit is contained in:
Drew Galbraith 2023-06-07 08:24:10 -07:00
parent b79ec07636
commit 81b925eea0
15 changed files with 341 additions and 20 deletions

View file

@ -6,6 +6,7 @@
#include "lib/linked_list.h"
#include "lib/ref_ptr.h"
#include "object/address_space.h"
#include "object/channel.h"
// Forward decl due to cyclic dependency.
class Thread;
@ -27,11 +28,15 @@ class Process : public KernelObject {
RefPtr<Thread> CreateThread();
RefPtr<Thread> GetThread(uint64_t tid);
RefPtr<Capability> ReleaseCapability(uint64_t cid);
RefPtr<Capability> GetCapability(uint64_t cid);
// FIXME: We can't reset the cap id here.
uint64_t AddCapability(const RefPtr<Capability>& cap);
uint64_t AddCapability(const RefPtr<Thread>& t);
uint64_t AddCapability(const RefPtr<Process>& p);
uint64_t AddCapability(const RefPtr<AddressSpace>& vmas);
uint64_t AddCapability(const RefPtr<MemoryObject>& vmmo);
uint64_t AddCapability(const RefPtr<Channel>& chan);
void AddCapability(uint64_t cap_id, const RefPtr<MemoryObject>& vmmo);
// Checks the state of all child threads and transitions to