From 594e3c1ab576daddeb86015efc8b1677020b1878 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sat, 24 Oct 2015 20:39:30 +0000 Subject: [PATCH 1/6] cilkrts --- libcilkrts/runtime/os-unix.c | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/libcilkrts/runtime/os-unix.c b/libcilkrts/runtime/os-unix.c index cb582dd..e43d7d5 100644 --- a/libcilkrts/runtime/os-unix.c +++ b/libcilkrts/runtime/os-unix.c @@ -51,6 +51,7 @@ #if defined __linux__ # include # include +# include #elif defined __APPLE__ # include // Uses sysconf(_SC_NPROCESSORS_ONLN) in verbose output @@ -400,28 +401,19 @@ COMMON_SYSDEP void __cilkrts_sleep(void) COMMON_SYSDEP void __cilkrts_yield(void) { -#if __APPLE__ || __FreeBSD__ || __VXWORKS__ - // On MacOS, call sched_yield to yield quantum. I'm not sure why we - // don't do this on Linux also. - sched_yield(); -#elif defined(__DragonFly__) - // On DragonFly BSD, call sched_yield to yield quantum. - sched_yield(); -#elif defined(__MIC__) +#if defined(__MIC__) // On MIC, pthread_yield() really trashes things. Arch's measurements // showed that calling _mm_delay_32() (or doing nothing) was a better // option. Delaying 1024 clock cycles is a reasonable compromise between // giving up the processor and latency starting up when work becomes // available _mm_delay_32(1024); -#elif defined(__ANDROID__) || (defined(__sun__) && defined(__svr4__)) - // On Android and Solaris, call sched_yield to yield quantum. I'm not - // sure why we don't do this on Linux also. - sched_yield(); -#else - // On Linux, call pthread_yield (which in turn will call sched_yield) - // to yield quantum. +#elif defined(__sun__) && !defined(__svr4__) + // On old SunOS call pthread_yield to yield a quantum. pthread_yield(); +#else + // On other platforms call sched_yield to yield a quantum. + sched_yield(); #endif } -- 2.8.1