summaryrefslogtreecommitdiff
path: root/innobase
diff options
context:
space:
mode:
Diffstat (limited to 'innobase')
-rw-r--r--innobase/configure.in3
-rw-r--r--innobase/include/univ.i4
-rw-r--r--innobase/os/os0thread.c4
3 files changed, 8 insertions, 3 deletions
diff --git a/innobase/configure.in b/innobase/configure.in
index 645ac58483b..0bcc53cc05b 100644
--- a/innobase/configure.in
+++ b/innobase/configure.in
@@ -7,8 +7,9 @@ AM_INIT_AUTOMAKE(ib, 0.90)
AC_PROG_CC
AC_PROG_RANLIB
AC_PROG_INSTALL
-AC_CHECK_HEADERS(aio.h)
+AC_CHECK_HEADERS(aio.h sched.h)
AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_FUNCS(sched_yield)
AC_C_INLINE
AC_C_BIGENDIAN
diff --git a/innobase/include/univ.i b/innobase/include/univ.i
index f24937ea0c8..5e74b7eb09b 100644
--- a/innobase/include/univ.i
+++ b/innobase/include/univ.i
@@ -39,6 +39,10 @@ subdirectory of 'mysql'. */
/* Include the header file generated by GNU autoconf */
#include "../ib_config.h"
+#ifdef HAVE_SCHED_H
+#include <sched.h>
+#endif
+
#ifdef HAVE_PREAD
#define HAVE_PWRITE
#endif
diff --git a/innobase/os/os0thread.c b/innobase/os/os0thread.c
index 78b159cf808..05e1e6201a4 100644
--- a/innobase/os/os0thread.c
+++ b/innobase/os/os0thread.c
@@ -137,8 +137,8 @@ os_thread_yield(void)
{
#if defined(__WIN__)
Sleep(0);
-#elif defined(HAVE_PTHREAD_YIELD)
- pthread_yield();
+#elif (defined(HAVE_SCHED_YIELD) && defined(HAVE_SCHED_H))
+ sched_yield();
#else
os_thread_sleep(0);
#endif