mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-21 22:45:45 +00:00
Kernel/SharedMemory: Properly implemented shared memory support.
Applications can request the kernel to allocate a piece of the linear heap for them when creating a shared memory object. Shared memory areas are now properly mapped into the target processes when calling svcMapMemoryBlock. Removed the APT Shared Font hack as it is no longer needed.
This commit is contained in:
parent
b2c771eed7
commit
b53900a6ab
10 changed files with 147 additions and 118 deletions
|
@ -3,6 +3,7 @@
|
|||
// Refer to the license.txt file included.
|
||||
|
||||
#include <cstring>
|
||||
#include "common/alignment.h"
|
||||
#include "core/hle/hle.h"
|
||||
#include "core/hle/kernel/mutex.h"
|
||||
#include "core/hle/kernel/shared_memory.h"
|
||||
|
@ -41,14 +42,16 @@ static Kernel::SharedPtr<Kernel::Mutex> mutex = nullptr;
|
|||
void Initialize(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
shared_memory = Kernel::SharedMemory::Create(cmd_buff[1],
|
||||
Kernel::MemoryPermission::ReadWrite,
|
||||
Kernel::MemoryPermission::ReadWrite, "CSNDSharedMem");
|
||||
u32 size = Common::AlignUp(cmd_buff[1], Memory::PAGE_SIZE);
|
||||
using Kernel::MemoryPermission;
|
||||
shared_memory = Kernel::SharedMemory::Create(nullptr, size,
|
||||
MemoryPermission::ReadWrite, MemoryPermission::ReadWrite,
|
||||
0, Kernel::MemoryRegion::BASE, "CSND:SharedMemory");
|
||||
|
||||
mutex = Kernel::Mutex::Create(false);
|
||||
|
||||
cmd_buff[1] = 0;
|
||||
cmd_buff[2] = 0x4000000;
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
cmd_buff[2] = IPC::MoveHandleDesc(2);
|
||||
cmd_buff[3] = Kernel::g_handle_table.Create(mutex).MoveFrom();
|
||||
cmd_buff[4] = Kernel::g_handle_table.Create(shared_memory).MoveFrom();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue