summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit143caa2616735b4697defedc56a2f0379cd59e03 (patch)
treed79d55cb1dab4fbb31e4635a1d8642428d15415d
parentd3b6b803f3f94cbfbe2839910e951674a058d58d (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.c29
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>