diff options
| author | 2015-05-11 09:15:10 -0500 | |
|---|---|---|
| committer | 2015-05-11 09:15:10 -0500 | |
| commit | 41f74a16fd55934f747f6f7e1f7a6d4d6a3d4e57 (patch) | |
| tree | b9500ee328f5b918edca38251878c4f346a30807 /src/core/hle/svc.cpp | |
| parent | Merge pull request #740 from yuriks/gsp-shmem (diff) | |
| download | yuzu-41f74a16fd55934f747f6f7e1f7a6d4d6a3d4e57.tar.gz yuzu-41f74a16fd55934f747f6f7e1f7a6d4d6a3d4e57.tar.xz yuzu-41f74a16fd55934f747f6f7e1f7a6d4d6a3d4e57.zip | |
Core/HLE: Implemented the SVCs GetProcessId and GetProcessIdOfThread
Diffstat (limited to 'src/core/hle/svc.cpp')
| -rw-r--r-- | src/core/hle/svc.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 1ec6599c7..b5cf554c3 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include "core/hle/kernel/address_arbiter.h" | 16 | #include "core/hle/kernel/address_arbiter.h" |
| 17 | #include "core/hle/kernel/event.h" | 17 | #include "core/hle/kernel/event.h" |
| 18 | #include "core/hle/kernel/mutex.h" | 18 | #include "core/hle/kernel/mutex.h" |
| 19 | #include "core/hle/kernel/process.h" | ||
| 19 | #include "core/hle/kernel/semaphore.h" | 20 | #include "core/hle/kernel/semaphore.h" |
| 20 | #include "core/hle/kernel/shared_memory.h" | 21 | #include "core/hle/kernel/shared_memory.h" |
| 21 | #include "core/hle/kernel/thread.h" | 22 | #include "core/hle/kernel/thread.h" |
| @@ -424,6 +425,34 @@ static ResultCode ReleaseMutex(Handle handle) { | |||
| 424 | return RESULT_SUCCESS; | 425 | return RESULT_SUCCESS; |
| 425 | } | 426 | } |
| 426 | 427 | ||
| 428 | /// Get the ID of the specified process | ||
| 429 | static ResultCode GetProcessId(u32* process_id, Handle handle) { | ||
| 430 | LOG_TRACE(Kernel_SVC, "called process=0x%08X", handle); | ||
| 431 | |||
| 432 | const SharedPtr<Kernel::Process> process = Kernel::g_handle_table.Get<Kernel::Process>(handle); | ||
| 433 | if (process == nullptr) | ||
| 434 | return ERR_INVALID_HANDLE; | ||
| 435 | |||
| 436 | *process_id = process->GetProcessId(); | ||
| 437 | return RESULT_SUCCESS; | ||
| 438 | } | ||
| 439 | |||
| 440 | /// Get the ID of the process that owns the specified thread | ||
| 441 | static ResultCode GetProcessIdOfThread(u32* process_id, Handle handle) { | ||
| 442 | LOG_TRACE(Kernel_SVC, "called thread=0x%08X", handle); | ||
| 443 | |||
| 444 | const SharedPtr<Kernel::Thread> thread = Kernel::g_handle_table.Get<Kernel::Thread>(handle); | ||
| 445 | if (thread == nullptr) | ||
| 446 | return ERR_INVALID_HANDLE; | ||
| 447 | |||
| 448 | const SharedPtr<Kernel::Process> process = thread->owner_process; | ||
| 449 | if (process == nullptr) | ||
| 450 | return ERR_INVALID_HANDLE; | ||
| 451 | |||
| 452 | *process_id = process->process_id; | ||
| 453 | return RESULT_SUCCESS; | ||
| 454 | } | ||
| 455 | |||
| 427 | /// Get the ID for the specified thread. | 456 | /// Get the ID for the specified thread. |
| 428 | static ResultCode GetThreadId(u32* thread_id, Handle handle) { | 457 | static ResultCode GetThreadId(u32* thread_id, Handle handle) { |
| 429 | LOG_TRACE(Kernel_SVC, "called thread=0x%08X", handle); | 458 | LOG_TRACE(Kernel_SVC, "called thread=0x%08X", handle); |
| @@ -674,8 +703,8 @@ static const FunctionDef SVC_Table[] = { | |||
| 674 | {0x32, HLE::Wrap<SendSyncRequest>, "SendSyncRequest"}, | 703 | {0x32, HLE::Wrap<SendSyncRequest>, "SendSyncRequest"}, |
| 675 | {0x33, nullptr, "OpenProcess"}, | 704 | {0x33, nullptr, "OpenProcess"}, |
| 676 | {0x34, nullptr, "OpenThread"}, | 705 | {0x34, nullptr, "OpenThread"}, |
| 677 | {0x35, nullptr, "GetProcessId"}, | 706 | {0x35, HLE::Wrap<GetProcessId>, "GetProcessId"}, |
| 678 | {0x36, nullptr, "GetProcessIdOfThread"}, | 707 | {0x36, HLE::Wrap<GetProcessIdOfThread>, "GetProcessIdOfThread"}, |
| 679 | {0x37, HLE::Wrap<GetThreadId>, "GetThreadId"}, | 708 | {0x37, HLE::Wrap<GetThreadId>, "GetThreadId"}, |
| 680 | {0x38, HLE::Wrap<GetResourceLimit>, "GetResourceLimit"}, | 709 | {0x38, HLE::Wrap<GetResourceLimit>, "GetResourceLimit"}, |
| 681 | {0x39, nullptr, "GetResourceLimitLimitValues"}, | 710 | {0x39, nullptr, "GetResourceLimitLimitValues"}, |