diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-05-11 00:47:07 +0200 |
---|---|---|
committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-05-11 00:47:07 +0200 |
commit | c96f22490a4a459d477f446fd4e5f894f580b69c (patch) | |
tree | 3047a04a88ecd381f2e2984b41b2fb21119940d9 /src/core/hle/kernel/shared_memory.cpp | |
parent | Merge pull request #736 from yuriks/remove-BIT (diff) | |
download | yuzu-c96f22490a4a459d477f446fd4e5f894f580b69c.tar yuzu-c96f22490a4a459d477f446fd4e5f894f580b69c.tar.gz yuzu-c96f22490a4a459d477f446fd4e5f894f580b69c.tar.bz2 yuzu-c96f22490a4a459d477f446fd4e5f894f580b69c.tar.lz yuzu-c96f22490a4a459d477f446fd4e5f894f580b69c.tar.xz yuzu-c96f22490a4a459d477f446fd4e5f894f580b69c.tar.zst yuzu-c96f22490a4a459d477f446fd4e5f894f580b69c.zip |
Diffstat (limited to 'src/core/hle/kernel/shared_memory.cpp')
-rw-r--r-- | src/core/hle/kernel/shared_memory.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index cb5c16696..178589cbb 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -12,11 +12,15 @@ namespace Kernel { SharedMemory::SharedMemory() {} SharedMemory::~SharedMemory() {} -SharedPtr<SharedMemory> SharedMemory::Create(std::string name) { +SharedPtr<SharedMemory> SharedMemory::Create(u32 size, MemoryPermission permissions, + MemoryPermission other_permissions, std::string name) { SharedPtr<SharedMemory> shared_memory(new SharedMemory); shared_memory->name = std::move(name); shared_memory->base_address = 0x0; + shared_memory->size = size; + shared_memory->permissions = permissions; + shared_memory->other_permissions = other_permissions; return shared_memory; } @@ -24,7 +28,7 @@ SharedPtr<SharedMemory> SharedMemory::Create(std::string name) { ResultCode SharedMemory::Map(VAddr address, MemoryPermission permissions, MemoryPermission other_permissions) { - if (address < Memory::SHARED_MEMORY_VADDR || address >= Memory::SHARED_MEMORY_VADDR_END) { + if (address < Memory::SHARED_MEMORY_VADDR || address + size >= Memory::SHARED_MEMORY_VADDR_END) { LOG_ERROR(Kernel, "cannot map id=%u, address=0x%08X outside of shared mem bounds!", GetObjectId(), address); // TODO: Verify error code with hardware @@ -32,21 +36,19 @@ ResultCode SharedMemory::Map(VAddr address, MemoryPermission permissions, ErrorSummary::InvalidArgument, ErrorLevel::Permanent); } + // TODO: Test permissions + this->base_address = address; - this->permissions = permissions; - this->other_permissions = other_permissions; return RESULT_SUCCESS; } -ResultVal<u8*> SharedMemory::GetPointer(u32 offset) { +u8* SharedMemory::GetPointer(u32 offset) { if (base_address != 0) - return MakeResult<u8*>(Memory::GetPointer(base_address + offset)); + return Memory::GetPointer(base_address + offset); LOG_ERROR(Kernel_SVC, "memory block id=%u not mapped!", GetObjectId()); - // TODO(yuriks): Verify error code. - return ResultCode(ErrorDescription::InvalidAddress, ErrorModule::Kernel, - ErrorSummary::InvalidState, ErrorLevel::Permanent); + return nullptr; } } // namespace |