You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by ro...@apache.org on 2006/06/30 20:14:22 UTC
svn commit: r418351 - in /apr/apr/trunk: CHANGES configure.in
include/arch/unix/apr_arch_threadproc.h threadproc/unix/thread.c
Author: rooneg
Date: Fri Jun 30 11:14:21 2006
New Revision: 418351
URL: http://svn.apache.org/viewvc?rev=418351&view=rev
Log:
Implement apr_thread_yield on Unix in terms of pthread_yield or sched_yield.
Submitted by: Keisuke Nishida <keisuke.nishida gmail.com>
Reviewed by: rooneg, Henry Jen <henryjen ztune.net>
* configure.in: Look for pthread_yield and sched_yield.
* include/arch/unix/apr_arch_threadproc.h: Include sched.h if it's present.
* threadproc/unix/thread.c
(apr_thread_yield): Actually do something in here...
* CHANGES: Note change.
Modified:
apr/apr/trunk/CHANGES
apr/apr/trunk/configure.in
apr/apr/trunk/include/arch/unix/apr_arch_threadproc.h
apr/apr/trunk/threadproc/unix/thread.c
Modified: apr/apr/trunk/CHANGES
URL: http://svn.apache.org/viewvc/apr/apr/trunk/CHANGES?rev=418351&r1=418350&r2=418351&view=diff
==============================================================================
--- apr/apr/trunk/CHANGES (original)
+++ apr/apr/trunk/CHANGES Fri Jun 30 11:14:21 2006
@@ -1,5 +1,8 @@
Changes for APR 1.3.0
+ *) Implement apr_thread_yield on Unix in terms of pthread_yield or
+ sched_yield. [Keisuke Nishida <keisuke.nishida gmail.com>]
+
*) Provide folding in autogenerated .manifest files for Win32 builders
using VisualStudio 2005 [William Rowe]
Modified: apr/apr/trunk/configure.in
URL: http://svn.apache.org/viewvc/apr/apr/trunk/configure.in?rev=418351&r1=418350&r2=418351&view=diff
==============================================================================
--- apr/apr/trunk/configure.in (original)
+++ apr/apr/trunk/configure.in Fri Jun 30 11:14:21 2006
@@ -580,7 +580,7 @@
APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG
APR_CHECK_PTHREAD_RECURSIVE_MUTEX
AC_CHECK_FUNCS([pthread_key_delete pthread_rwlock_init \
- pthread_attr_setguardsize])
+ pthread_attr_setguardsize pthread_yield])
if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then
dnl ----------------------------- Checking for pthread_rwlock_t
@@ -592,6 +592,12 @@
if test "$apr_cv_type_rwlock_t" = "yes"; then
AC_DEFINE(HAVE_PTHREAD_RWLOCKS, 1, [Define if pthread rwlocks are available])
fi
+ fi
+
+ if test "$ac_cv_func_pthread_yield" = "no"; then
+ dnl ----------------------------- Checking for sched_yield
+ AC_CHECK_HEADERS([sched.h])
+ AC_CHECK_FUNCS([sched_yield])
fi
fi
fi
Modified: apr/apr/trunk/include/arch/unix/apr_arch_threadproc.h
URL: http://svn.apache.org/viewvc/apr/apr/trunk/include/arch/unix/apr_arch_threadproc.h?rev=418351&r1=418350&r2=418351&view=diff
==============================================================================
--- apr/apr/trunk/include/arch/unix/apr_arch_threadproc.h (original)
+++ apr/apr/trunk/include/arch/unix/apr_arch_threadproc.h Fri Jun 30 11:14:21 2006
@@ -39,6 +39,9 @@
#if APR_HAVE_STRING_H
#include <string.h>
#endif
+#if HAVE_SCHED_H
+#include <sched.h>
+#endif
/* End System Headers */
Modified: apr/apr/trunk/threadproc/unix/thread.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/threadproc/unix/thread.c?rev=418351&r1=418350&r2=418351&view=diff
==============================================================================
--- apr/apr/trunk/threadproc/unix/thread.c (original)
+++ apr/apr/trunk/threadproc/unix/thread.c Fri Jun 30 11:14:21 2006
@@ -245,8 +245,15 @@
}
}
-void apr_thread_yield()
+APR_DECLARE(void) apr_thread_yield(void)
{
+#ifdef HAVE_PTHREAD_YIELD
+ pthread_yield();
+#else
+#ifdef HAVE_SCHED_YIELD
+ sched_yield();
+#endif
+#endif
}
APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key,