From 34692ab826abc8f8faa61bdb2280b742424528f1 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 7 Dec 2013 15:14:29 -0500 Subject: Remove unnecessary Src/ folders --- Source/Core/Common/Thread.cpp | 133 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 Source/Core/Common/Thread.cpp (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp new file mode 100644 index 0000000000..740750a8ea --- /dev/null +++ b/Source/Core/Common/Thread.cpp @@ -0,0 +1,133 @@ +// Copyright 2013 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#include "Thread.h" +#include "Common.h" + +#ifdef __APPLE__ +#include +#elif defined BSD4_4 +#include +#endif + +#ifdef USE_BEGINTHREADEX +#include +#endif + +namespace Common +{ + +int CurrentThreadId() +{ +#ifdef _WIN32 + return GetCurrentThreadId(); +#elif defined __APPLE__ + return mach_thread_self(); +#else + return 0; +#endif +} + +#ifdef _WIN32 + +void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) +{ + SetThreadAffinityMask(thread, mask); +} + +void SetCurrentThreadAffinity(u32 mask) +{ + SetThreadAffinityMask(GetCurrentThread(), mask); +} + +// Supporting functions +void SleepCurrentThread(int ms) +{ + Sleep(ms); +} + +void SwitchCurrentThread() +{ + SwitchToThread(); +} + +// Sets the debugger-visible name of the current thread. +// Uses undocumented (actually, it is now documented) trick. +// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/vxtsksettingthreadname.asp + +// This is implemented much nicer in upcoming msvc++, see: +// http://msdn.microsoft.com/en-us/library/xcb2z8hs(VS.100).aspx +void SetCurrentThreadName(const char* szThreadName) +{ + static const DWORD MS_VC_EXCEPTION = 0x406D1388; + + #pragma pack(push,8) + struct THREADNAME_INFO + { + DWORD dwType; // must be 0x1000 + LPCSTR szName; // pointer to name (in user addr space) + DWORD dwThreadID; // thread ID (-1=caller thread) + DWORD dwFlags; // reserved for future use, must be zero + } info; + #pragma pack(pop) + + info.dwType = 0x1000; + info.szName = szThreadName; + info.dwThreadID = -1; //dwThreadID; + info.dwFlags = 0; + + __try + { + RaiseException(MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info); + } + __except(EXCEPTION_CONTINUE_EXECUTION) + {} +} + +#else // !WIN32, so must be POSIX threads + +void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) +{ +#ifdef __APPLE__ + thread_policy_set(pthread_mach_thread_np(thread), + THREAD_AFFINITY_POLICY, (integer_t *)&mask, 1); +#elif (defined __linux__ || defined BSD4_4) && !(defined ANDROID) + cpu_set_t cpu_set; + CPU_ZERO(&cpu_set); + + for (int i = 0; i != sizeof(mask) * 8; ++i) + if ((mask >> i) & 1) + CPU_SET(i, &cpu_set); + + pthread_setaffinity_np(thread, sizeof(cpu_set), &cpu_set); +#endif +} + +void SetCurrentThreadAffinity(u32 mask) +{ + SetThreadAffinity(pthread_self(), mask); +} + +void SleepCurrentThread(int ms) +{ + usleep(1000 * ms); +} + +void SwitchCurrentThread() +{ + usleep(1000 * 1); +} + +void SetCurrentThreadName(const char* szThreadName) +{ +#ifdef __APPLE__ + pthread_setname_np(szThreadName); +#else + pthread_setname_np(pthread_self(), szThreadName); +#endif +} + +#endif + +} // namespace Common -- cgit v1.2.3 From 2afe2152712981e21d6bda6f029292ed2b1cf91e Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 17 Feb 2014 05:18:15 -0500 Subject: Convert all includes to relative paths. --- Source/Core/Common/Thread.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index 740750a8ea..ce52375c3d 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -2,8 +2,8 @@ // Licensed under GPLv2 // Refer to the license.txt file included. -#include "Thread.h" -#include "Common.h" +#include "Common/Common.h" +#include "Common/Thread.h" #ifdef __APPLE__ #include -- cgit v1.2.3 From bd91e8b0c831831a7c103d18fd1320529a329fa0 Mon Sep 17 00:00:00 2001 From: lioncash Date: Thu, 4 Sep 2014 09:15:12 -0400 Subject: Common: Remove unused header from Thread.cpp This define isn't even used in the Windows builds. --- Source/Core/Common/Thread.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index ce52375c3d..39649d67c1 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -11,10 +11,6 @@ #include #endif -#ifdef USE_BEGINTHREADEX -#include -#endif - namespace Common { -- cgit v1.2.3 From fbc64984ca7de7db10b1a8a4f49002f260c93569 Mon Sep 17 00:00:00 2001 From: Rohit Nirmal Date: Sun, 7 Sep 2014 20:06:58 -0500 Subject: Include CommonTypes.h instead of Common.h. --- Source/Core/Common/Thread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index 39649d67c1..9e27387c9a 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -2,7 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. -#include "Common/Common.h" +#include "Common/CommonTypes.h" #include "Common/Thread.h" #ifdef __APPLE__ -- cgit v1.2.3 From 46057db37d086c47ff6c69f200f66648fa0e6c84 Mon Sep 17 00:00:00 2001 From: Rohit Nirmal Date: Thu, 18 Sep 2014 23:17:41 -0500 Subject: Fix build failing when disabling precompiled headers. --- Source/Core/Common/Thread.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index 9e27387c9a..286ed088bc 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include "Common/CommonFuncs.h" #include "Common/CommonTypes.h" #include "Common/Thread.h" -- cgit v1.2.3 From 0ec48e0ec92644d5b456d092e7634495b39d61bf Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Thu, 12 Feb 2015 01:36:29 +0100 Subject: JitRegister: fix VTune integration --- Source/Core/Common/Thread.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index 286ed088bc..c57760039f 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -12,6 +12,11 @@ #include #endif +#ifdef USE_VTUNE +#include +#pragma comment(lib, "libittnotify.lib") +#endif + namespace Common { @@ -123,6 +128,10 @@ void SetCurrentThreadName(const char* szThreadName) #else pthread_setname_np(pthread_self(), szThreadName); #endif +#ifdef USE_VTUNE + // VTune uses OS thread names by default but probably supports longer names when set via its own API. + __itt_thread_set_name(szThreadName); +#endif } #endif -- cgit v1.2.3 From cefcb0ace9d363b3679b4e93bcc9ec05f1e5f4f8 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Mon, 18 May 2015 01:08:10 +0200 Subject: Update license headers to GPLv2+ --- Source/Core/Common/Thread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index c57760039f..75196474b1 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -1,5 +1,5 @@ // Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 +// Licensed under GPLv2+ // Refer to the license.txt file included. #include "Common/CommonFuncs.h" -- cgit v1.2.3 From 30ebb2459eb97ba544547183854775df8460b475 Mon Sep 17 00:00:00 2001 From: Tillmann Karras Date: Sun, 24 May 2015 06:55:12 +0200 Subject: Set copyright year to when a file was created --- Source/Core/Common/Thread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/Common/Thread.cpp') diff --git a/Source/Core/Common/Thread.cpp b/Source/Core/Common/Thread.cpp index 75196474b1..fb091ee2a7 100644 --- a/Source/Core/Common/Thread.cpp +++ b/Source/Core/Common/Thread.cpp @@ -1,4 +1,4 @@ -// Copyright 2013 Dolphin Emulator Project +// Copyright 2008 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. -- cgit v1.2.3