From 7c0b0060764e75738bc9d4417d0bfd510e54ae4e Mon Sep 17 00:00:00 2001
From: bunnei <ericbunnie@gmail.com>
Date: Thu, 22 May 2014 19:32:45 -0400
Subject: [PATCH] thread: removed unused SwitchContext/Reschedule reason field,
 added missing arg parameter to SVC CreateThread

---
 src/core/hle/kernel/thread.cpp |  6 +++---
 src/core/hle/kernel/thread.h   |  2 +-
 src/core/hle/svc.cpp           | 13 +++++--------
 3 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index 5f1d5c400..189f7d5f5 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -147,7 +147,7 @@ void CallThread(Thread* t) {
 }
 
 /// Switches CPU context to that of the specified thread
-void SwitchContext(Thread* t, const char* reason) {
+void SwitchContext(Thread* t) {
     Thread* cur = GetCurrentThread();
     
     // Save context for current thread
@@ -299,11 +299,11 @@ Handle SetupMainThread(s32 priority, int stack_size) {
 }
 
 /// Reschedules to the next available thread (call after current thread is suspended)
-void Reschedule(const char* reason) {
+void Reschedule() {
     Thread* prev = GetCurrentThread();
     Thread* next = NextThread();
     if (next > 0) {
-        SwitchContext(next, reason);
+        SwitchContext(next);
 
         // Hack - automatically change previous thread (which would have been in "wait" state) to
         // "ready" state, so that we can immediately resume to it when new thread yields. FixMe to
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h
index a9e9eb95f..d54f47aaf 100644
--- a/src/core/hle/kernel/thread.h
+++ b/src/core/hle/kernel/thread.h
@@ -51,7 +51,7 @@ Handle CreateThread(const char* name, u32 entry_point, s32 priority, u32 arg, s3
 Handle SetupMainThread(s32 priority, int stack_size=Kernel::DEFAULT_STACK_SIZE);
 
 /// Reschedules to the next available thread (call after current thread is suspended)
-void Reschedule(const char* reason);
+void Reschedule();
 
 /// Puts a thread in the wait state for the given type/reason
 void WaitCurThread(WaitType wait_type, const char* reason);
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp
index 14d512b99..b1854a36e 100644
--- a/src/core/hle/svc.cpp
+++ b/src/core/hle/svc.cpp
@@ -106,10 +106,9 @@ Result CloseHandle(Handle handle) {
 
 /// Wait for a handle to synchronize, timeout after the specified nanoseconds
 Result WaitSynchronization1(Handle handle, s64 nano_seconds) {
-    // ImplementMe
     DEBUG_LOG(SVC, "(UNIMPLEMENTED) WaitSynchronization1 called handle=0x%08X, nanoseconds=%d", 
         handle, nano_seconds);
-    Kernel::Reschedule("WaitSynchronization1");
+    Kernel::WaitCurThread(WAITTYPE_SYNCH, "WaitSynchronization1"); // TODO(bunnei): Is this correct?
     return 0;
 }
 
@@ -117,16 +116,14 @@ Result WaitSynchronization1(Handle handle, s64 nano_seconds) {
 Result WaitSynchronizationN(void* _out, void* _handles, u32 handle_count, u32 wait_all, s64 nano_seconds) {
     s32* out = (s32*)_out;
     Handle* handles = (Handle*)_handles;
-    // ImplementMe
-    
+
     DEBUG_LOG(SVC, "(UNIMPLEMENTED) WaitSynchronizationN called handle_count=%d, wait_all=%s, nanoseconds=%d %s", 
         handle_count, (wait_all ? "true" : "false"), nano_seconds);
-    
+
     for (u32 i = 0; i < handle_count; i++) {
         DEBUG_LOG(SVC, "\thandle[%d]=0x%08X", i, handles[i]);
     }
-    Kernel::Reschedule("WaitSynchronizationN");
-
+    Kernel::WaitCurThread(WAITTYPE_SYNCH, "WaitSynchronizationN"); // TODO(bunnei): Is this correct?
     return 0;
 }
 
@@ -174,7 +171,7 @@ Result CreateThread(u32 priority, u32 entry_point, u32 arg, u32 stack_top, u32 p
         name = buff;
     }
 
-    Handle thread = Kernel::CreateThread(name.c_str(), entry_point, priority, processor_id,
+    Handle thread = Kernel::CreateThread(name.c_str(), entry_point, priority, arg, processor_id,
         stack_top);
 
     Core::g_app_core->SetReg(1, thread);