From c68bb1bb7fd3ee9a4b2e746ee3d0666d1f0f5a46 Mon Sep 17 00:00:00 2001 From: "gregory.hainaut" Date: Sun, 4 Sep 2011 21:27:11 +0000 Subject: [PATCH] pcsx2: restore linux thread timing. pthread_getcpuclockid failed to check the validy of thread ID... git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4910 96395faa-99c1-11dd-bbfe-3dabce05a288 --- common/src/Utilities/Linux/LnxThreads.cpp | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/common/src/Utilities/Linux/LnxThreads.cpp b/common/src/Utilities/Linux/LnxThreads.cpp index 91f274713c..c5c9908057 100644 --- a/common/src/Utilities/Linux/LnxThreads.cpp +++ b/common/src/Utilities/Linux/LnxThreads.cpp @@ -55,12 +55,6 @@ __forceinline void Threading::DisableHiresScheduler() { } -// pthread_getcpuclockid causes a segmentation fault on Mandriva/Mageia. -// It seems to impact fedora users so I bet it is an issue with glic (the library was -// replaced by eglibc on Debian/Ubuntu) -// So for the moment I disable this feature -- Gregory -#define LNX_DISABLE_THREAD_TIME 1 - u64 Threading::GetThreadTicksPerSecond() { // Note the value is not correct but I'm not sure we can do better because @@ -73,12 +67,8 @@ u64 Threading::GetThreadTicksPerSecond() The actual frequency is hidden from userspace, deliberately. Indeed, some systems use dynamic ticks or "tickless" systems, so there aren't really any at all. */ -#ifndef LNX_DISABLE_THREAD_TIME u32 hertz = sysconf(_SC_CLK_TCK); return hertz; -#else - return 0; -#endif } u64 Threading::GetThreadCpuTime() @@ -87,7 +77,6 @@ u64 Threading::GetThreadCpuTime() // thread has used on the CPU (scaled by the value returned by GetThreadTicksPerSecond(), // which typically would be an OS-provided scalar or some sort). -#ifndef LNX_DISABLE_THREAD_TIME clockid_t cid; int err = pthread_getcpuclockid(pthread_self(), &cid); if (err) return 0; @@ -98,9 +87,6 @@ u64 Threading::GetThreadCpuTime() unsigned long timeJiff = (ts.tv_sec*1e6 + ts.tv_nsec / 1000)/1e6 * GetThreadTicksPerSecond(); return timeJiff; -#else - return 0; -#endif } u64 Threading::pxThread::GetCpuTime() const @@ -110,7 +96,8 @@ u64 Threading::pxThread::GetCpuTime() const // thread has used on the CPU (scaled by the value returned by GetThreadTicksPerSecond(), // which typically would be an OS-provided scalar or some sort). -#ifndef LNX_DISABLE_THREAD_TIME + if (!m_native_id) return 0; + clockid_t cid; int err = pthread_getcpuclockid(m_native_id, &cid); if (err) return 0; @@ -121,9 +108,6 @@ u64 Threading::pxThread::GetCpuTime() const unsigned long timeJiff = (ts.tv_sec*1e6 + ts.tv_nsec / 1000)/1e6 * GetThreadTicksPerSecond(); return timeJiff; -#else - return 0; -#endif } void Threading::pxThread::_platform_specific_OnStartInThread()