Sfoglia il codice sorgente

Add UnmapSharedMemory

C++11 requires spaces on the Identifier

Add inttypes include

clang
N00byKing 8 anni fa
parent
commit
2b41c6e573
2 ha cambiato i file con 17 aggiunte e 1 eliminazioni
  1. 12 1
      src/core/hle/kernel/svc.cpp
  2. 5 0
      src/core/hle/kernel/svc_wrap.h

+ 12 - 1
src/core/hle/kernel/svc.cpp

@@ -3,6 +3,7 @@
 // Refer to the license.txt file included.
 // Refer to the license.txt file included.
 
 
 #include <algorithm>
 #include <algorithm>
+#include <inttypes.h>
 
 
 #include "common/logging/log.h"
 #include "common/logging/log.h"
 #include "common/microprofile.h"
 #include "common/microprofile.h"
@@ -443,6 +444,16 @@ static ResultCode MapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 s
     return RESULT_SUCCESS;
     return RESULT_SUCCESS;
 }
 }
 
 
+static ResultCode UnmapSharedMemory(Handle shared_memory_handle, VAddr addr, u64 size) {
+    LOG_WARNING(Kernel_SVC,
+                "called, shared_memory_handle=0x%08X, addr=0x%" PRIx64 ", size=0x%" PRIx64 "",
+                shared_memory_handle, addr, size);
+
+    SharedPtr<SharedMemory> shared_memory = g_handle_table.Get<SharedMemory>(shared_memory_handle);
+
+    return shared_memory->Unmap(g_current_process.get(), addr);
+}
+
 /// Query process memory
 /// Query process memory
 static ResultCode QueryProcessMemory(MemoryInfo* memory_info, PageInfo* /*page_info*/,
 static ResultCode QueryProcessMemory(MemoryInfo* memory_info, PageInfo* /*page_info*/,
                                      Handle process_handle, u64 addr) {
                                      Handle process_handle, u64 addr) {
@@ -792,7 +803,7 @@ static const FunctionDef SVC_Table[] = {
     {0x11, nullptr, "SignalEvent"},
     {0x11, nullptr, "SignalEvent"},
     {0x12, nullptr, "ClearEvent"},
     {0x12, nullptr, "ClearEvent"},
     {0x13, SvcWrap<MapSharedMemory>, "MapSharedMemory"},
     {0x13, SvcWrap<MapSharedMemory>, "MapSharedMemory"},
-    {0x14, nullptr, "UnmapSharedMemory"},
+    {0x14, SvcWrap<UnmapSharedMemory>, "UnmapSharedMemory"},
     {0x15, SvcWrap<CreateTransferMemory>, "CreateTransferMemory"},
     {0x15, SvcWrap<CreateTransferMemory>, "CreateTransferMemory"},
     {0x16, SvcWrap<CloseHandle>, "CloseHandle"},
     {0x16, SvcWrap<CloseHandle>, "CloseHandle"},
     {0x17, SvcWrap<ResetSignal>, "ResetSignal"},
     {0x17, SvcWrap<ResetSignal>, "ResetSignal"},

+ 5 - 0
src/core/hle/kernel/svc_wrap.h

@@ -91,6 +91,11 @@ void SvcWrap() {
     FuncReturn(func((u32)PARAM(0), PARAM(1), PARAM(2), (u32)PARAM(3)).raw);
     FuncReturn(func((u32)PARAM(0), PARAM(1), PARAM(2), (u32)PARAM(3)).raw);
 }
 }
 
 
+template <ResultCode func(u32, u64, u64)>
+void SvcWrap() {
+    FuncReturn(func((u32)PARAM(0), PARAM(1), PARAM(2)).raw);
+}
+
 template <ResultCode func(u32*, u64, u64, s64)>
 template <ResultCode func(u32*, u64, u64, s64)>
 void SvcWrap() {
 void SvcWrap() {
     u32 param_1 = 0;
     u32 param_1 = 0;