Made NtDelayExecution with a 0 timeout yield the CPU, as it is supposed to.
diff --git a/configure b/configure index 2bb7b49..b9ef8db 100755 --- a/configure +++ b/configure
@@ -16146,6 +16146,7 @@ + for ac_func in \ _lwp_create \ _lwp_self \ @@ -16188,6 +16189,7 @@ pwrite \ readlink \ rfork \ + sched_yield \ select \ sendmsg \ settimeofday \
diff --git a/configure.ac b/configure.ac index 00a1f87..f8e951b 100644 --- a/configure.ac +++ b/configure.ac
@@ -1099,6 +1099,7 @@ pwrite \ readlink \ rfork \ + sched_yield \ select \ sendmsg \ settimeofday \
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c index c19326f..19f30d8 100644 --- a/dlls/ntdll/sync.c +++ b/dlls/ntdll/sync.c
@@ -35,6 +35,9 @@ #ifdef HAVE_UNISTD_H # include <unistd.h> #endif +#ifdef HAVE_SCHED_H +# include <sched.h> +#endif #include <string.h> #include <stdarg.h> #include <stdio.h> @@ -632,6 +635,9 @@ { for (;;) select( 0, NULL, NULL, NULL, NULL ); } +#ifdef HAVE_SCHED_YIELD + else if (!timeout->QuadPart) sched_yield(); +#endif else { abs_time_t when;
diff --git a/include/config.h.in b/include/config.h.in index 6e42a46..8cdb8e5 100644 --- a/include/config.h.in +++ b/include/config.h.in
@@ -500,6 +500,9 @@ /* Define to 1 if you have the <sched.h> header file. */ #undef HAVE_SCHED_H +/* Define to 1 if you have the `sched_yield' function. */ +#undef HAVE_SCHED_YIELD + /* Define to 1 if you have the <scsi/scsi.h> header file. */ #undef HAVE_SCSI_SCSI_H