use POSIX semaphores in shmtx instead of sched_yield()
number of spinlock spins are increased twice
diff --git a/auto/os/freebsd b/auto/os/freebsd
index 2098529..0829388 100644
--- a/auto/os/freebsd
+++ b/auto/os/freebsd
@@ -49,6 +49,15 @@
have=NGX_HAVE_AIO_SENDFILE . auto/have
fi
+# POSIX semaphores
+# http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/127545
+
+if [ $osreldate -ge 701106 ]; then
+ echo " + POSIX semaphores should work"
+else
+ have=NGX_HAVE_POSIX_SEM . auto/nohave
+fi
+
# kqueue
diff --git a/auto/unix b/auto/unix
index c2d3ba2..669314b 100755
--- a/auto/unix
+++ b/auto/unix
@@ -234,6 +234,18 @@
. auto/feature
+ngx_feature="POSIX semaphores"
+ngx_feature_name="NGX_HAVE_POSIX_SEM"
+ngx_feature_run=yes
+ngx_feature_incs="#include <semaphore.h>"
+ngx_feature_path=
+ngx_feature_libs=
+ngx_feature_test="sem_t sem;
+ if (sem_init(&sem, 1, 0) == -1) return 1;
+ sem_destroy(&sem);"
+. auto/feature
+
+
ngx_feature="struct msghdr.msg_control"
ngx_feature_name="NGX_HAVE_MSGHDR_MSG_CONTROL"
ngx_feature_run=no