diff options
author | Oliver Stöneberg <oliverst@online.de> | 2015-01-07 16:42:16 +0100 |
---|---|---|
committer | Oliver Stöneberg <oliverst@online.de> | 2015-01-07 16:42:16 +0100 |
commit | 143caa2616735b4697defedc56a2f0379cd59e03 (patch) | |
tree | d79d55cb1dab4fbb31e4635a1d8642428d15415d | |
parent | d3b6b803f3f94cbfbe2839910e951674a058d58d (diff) |
osd_work: use the non-yield implementation of spin_while() for all platforms (nw)
futher tests have shown there is no actual speed difference - and it
reduces the CPU load even more
-rw-r--r-- | src/osd/modules/sync/work_osd.c | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/src/osd/modules/sync/work_osd.c b/src/osd/modules/sync/work_osd.c index 8220d50cb23..30f3399a072 100644 --- a/src/osd/modules/sync/work_osd.c +++ b/src/osd/modules/sync/work_osd.c @@ -76,48 +76,19 @@ typedef void *PVOID; #define end_timing(v) do { } while (0) #endif -// TODO: move this in a common place -#if defined(OSD_WINDOWS) -#if __GNUC__ && defined(__i386__) && !defined(__x86_64) -#undef YieldProcessor -#endif - -#ifndef YieldProcessor -#ifdef __GNUC__ -INLINE void osd_yield_processor(void) -{ - __asm__ __volatile__ ( "rep; nop" ); -} -#else -INLINE void osd_yield_processor(void) -{ - __asm { rep nop } -} -#endif -#else -#define osd_yield_processor YieldProcessor -#endif -#endif - template<typename _PtrType> static void spin_while(const volatile _PtrType * volatile ptr, const _PtrType val, const osd_ticks_t timeout, const int invert = 0) { osd_ticks_t stopspin = osd_ticks() + timeout; -#if defined(OSD_WINDOWS) - while (((*ptr == val) ^ invert) && osd_ticks() < stopspin) - osd_yield_processor(); -#else do { int spin = 10000; while (--spin) { - //osd_yield_processor(); if ((*ptr == val) ^ invert) return; } } while (((*ptr == val) ^ invert) && osd_ticks() < stopspin); -#endif } template<typename _PtrType> |