kernel: pass ref in Process

This commit is contained in:
Weiyi Wang 2018-10-12 15:33:36 -04:00
parent 213b259cf1
commit 9565091fc2
9 changed files with 20 additions and 16 deletions

View file

@ -14,6 +14,7 @@ class AddressArbiter;
class Event;
class Mutex;
class CodeSet;
class Process;
enum class ResetType {
OneShot,
@ -53,6 +54,8 @@ public:
SharedPtr<Mutex> CreateMutex(bool initial_locked, std::string name = "Unknown");
SharedPtr<CodeSet> CreateCodeSet(std::string name, u64 program_id);
SharedPtr<Process> CreateProcess(SharedPtr<CodeSet> code_set);
};
} // namespace Kernel

View file

@ -34,8 +34,8 @@ CodeSet::~CodeSet() {}
u32 Process::next_process_id;
SharedPtr<Process> Process::Create(SharedPtr<CodeSet> code_set) {
SharedPtr<Process> process(new Process);
SharedPtr<Process> KernelSystem::CreateProcess(SharedPtr<CodeSet> code_set) {
SharedPtr<Process> process(new Process(*this));
process->codeset = std::move(code_set);
process->flags.raw = 0;
@ -304,7 +304,7 @@ ResultCode Process::LinearFree(VAddr target, u32 size) {
return RESULT_SUCCESS;
}
Kernel::Process::Process() {}
Kernel::Process::Process(KernelSystem& kernel) : kernel(kernel) {}
Kernel::Process::~Process() {}
void ClearProcessList() {

View file

@ -117,8 +117,6 @@ private:
class Process final : public Object {
public:
static SharedPtr<Process> Create(SharedPtr<CodeSet> code_set);
std::string GetTypeName() const override {
return "Process";
}
@ -201,8 +199,11 @@ public:
ResultCode LinearFree(VAddr target, u32 size);
private:
Process();
explicit Process(Kernel::KernelSystem& kernel);
~Process() override;
friend class KernelSystem;
KernelSystem& kernel;
};
void ClearProcessList();