Merge pull request #4608 from wwylele/sharedmem-circular
Kernel/SharedMemory: make owner_process a raw pointer
This commit is contained in:
commit
ad1cfc8d50
|
@ -407,6 +407,12 @@ Kernel::Process::Process(KernelSystem& kernel)
|
||||||
kernel.memory.RegisterPageTable(&vm_manager.page_table);
|
kernel.memory.RegisterPageTable(&vm_manager.page_table);
|
||||||
}
|
}
|
||||||
Kernel::Process::~Process() {
|
Kernel::Process::~Process() {
|
||||||
|
// Release all objects this process owns first so that their potential destructor can do clean
|
||||||
|
// up with this process before further destruction.
|
||||||
|
// TODO(wwylele): explicitly destroy or invalidate objects this process owns (threads, shared
|
||||||
|
// memory etc.) even if they are still referenced by other processes.
|
||||||
|
handle_table.Clear();
|
||||||
|
|
||||||
kernel.memory.UnregisterPageTable(&vm_manager.page_table);
|
kernel.memory.UnregisterPageTable(&vm_manager.page_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ private:
|
||||||
/// Permission restrictions applied to other processes mapping the block.
|
/// Permission restrictions applied to other processes mapping the block.
|
||||||
MemoryPermission other_permissions{};
|
MemoryPermission other_permissions{};
|
||||||
/// Process that created this shared memory block.
|
/// Process that created this shared memory block.
|
||||||
SharedPtr<Process> owner_process;
|
Process* owner_process;
|
||||||
/// Address of shared memory block in the owner process if specified.
|
/// Address of shared memory block in the owner process if specified.
|
||||||
VAddr base_address = 0;
|
VAddr base_address = 0;
|
||||||
/// Name of shared memory object.
|
/// Name of shared memory object.
|
||||||
|
|
Reference in New Issue