From 143caa2616735b4697defedc56a2f0379cd59e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Wed, 7 Jan 2015 16:42:16 +0100 Subject: [PATCH] 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 --- src/osd/modules/sync/work_osd.c | 29 ----------------------------- 1 file changed, 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 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