apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Justin Erenkrantz <jerenkra...@ebuilt.com>
Subject [PATCH] Allow use of pthread related code without threads.
Date Thu, 26 Jul 2001 22:21:23 GMT
This patch would allow the use of pthread-related code (think mutex and
rwlocks, etc.) without having threads.  Not everything in pthread is
related to threads...

Would applying this break anything?  Could having the pthread library
linked (assuming it has it, of course) cause a problem (even though
we aren't using threads)?

This allows us to use pthread_mutex_t in cross-process mode even if we 
aren't threaded.  (Think of the accept mutex in httpd.)  -- justin

Index: configure.in
===================================================================
RCS file: /home/cvs/apr/configure.in,v
retrieving revision 1.345
diff -u -r1.345 configure.in
--- configure.in	2001/07/26 00:08:40	1.345
+++ configure.in	2001/07/26 22:13:54
@@ -257,15 +257,18 @@
 if test -z "$enable_threads"; then
 	AC_ARG_ENABLE(threads,
 	[  --enable-threads        Enable threading support in APR.],
-	[ enable_threads=$enableval] ,
+	[ enable_threads=$enableval ],
 	[ APR_CHECK_PTHREADS_H([ enable_threads="pthread" ] ,
 	                       [ enable_threads="no" ] ) ] )
 fi
 
 if test "$enable_threads" = "no"; then
     threads="0"
-    pthreadh="0"
     pthreadser="0"
+    APR_PTHREADS_CHECK_SAVE
+    APR_PTHREADS_CHECK
+    APR_CHECK_PTHREADS_H([ pthreadh="1" ], 
+                         [ pthreadh="0" APR_PTHREADS_CHECK_RESTORE ] )
 else
     if test "$enable_threads" = "pthread"; then
 # We have specified pthreads for our threading library, just make sure
@@ -304,29 +307,33 @@
     if test "$pthreadh" = "1"; then
         APR_CHECK_PTHREAD_GETSPECIFIC_TWO_ARGS
         APR_CHECK_PTHREAD_ATTR_GETDETACHSTATE_ONE_ARG
-        AC_CHECK_FUNCS(pthread_key_delete pthread_rwlock_init)
+        AC_CHECK_FUNCS(pthread_key_delete)
+    fi
+fi
+
+if test "$pthreadh" = "1"; then
+    AC_CHECK_FUNCS(pthread_rwlock_init)
 
-        if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then
-            dnl #----------------------------- Checking for pthread_rwlock_t
-            dnl # Linux is silly as it has pthread_rwlock_init defined
-            dnl # but keeps the pthread_rwlock_t structure hidden unless 
-            dnl # special things are defined.
-            AC_TRY_COMPILE([#include <sys/types.h>
-                            #include <pthread.h>], 
+    if test "$ac_cv_func_pthread_rwlock_init" = "yes"; then
+        dnl #----------------------------- Checking for pthread_rwlock_t
+        dnl # Linux is silly as it has pthread_rwlock_init defined
+        dnl # but keeps the pthread_rwlock_t structure hidden unless 
+        dnl # special things are defined.
+        AC_TRY_COMPILE([#include <sys/types.h>
+                        #include <pthread.h>], 
+            [pthread_rwlock_t rwlock=PTHREAD_RWLOCK_INITIALIZER;],
+             ac_cv_struct_pthread_rw=yes, ac_cv_struct_pthread_rw=no)
+        if test "$ac_cv_struct_pthread_rw" = "no"; then
+            AC_TRY_COMPILE([#define _XOPEN_SOURCE 500
+                #define _BSD_SOURCE
+                #define _SVID_SOURCE
+                #include <sys/types.h>
+                #include <pthread.h>], 
                 [pthread_rwlock_t rwlock=PTHREAD_RWLOCK_INITIALIZER;],
-                 ac_cv_struct_pthread_rw=yes, ac_cv_struct_pthread_rw=no)
-            if test "$ac_cv_struct_pthread_rw" = "no"; then
-                AC_TRY_COMPILE([#define _XOPEN_SOURCE 500
-                    #define _BSD_SOURCE
-                    #define _SVID_SOURCE
-                    #include <sys/types.h>
-                    #include <pthread.h>], 
-                    [pthread_rwlock_t rwlock=PTHREAD_RWLOCK_INITIALIZER;],
-                    ac_cv_struct_pthread_rw=yes, ac_cv_struct_pthread_rw=no)
-                if test "$ac_cv_struct_pthread_rw" = "yes"; then
-                    APR_ADDTO(CPPFLAGS, [-D_XOPEN_SOURCE=500 -D_BSD_SOURCE])
-                    APR_ADDTO(CPPFLAGS, [-D_SVID_SOURCE])
-                fi
+                ac_cv_struct_pthread_rw=yes, ac_cv_struct_pthread_rw=no)
+            if test "$ac_cv_struct_pthread_rw" = "yes"; then
+                APR_ADDTO(CPPFLAGS, [-D_XOPEN_SOURCE=500 -D_BSD_SOURCE])
+                APR_ADDTO(CPPFLAGS, [-D_SVID_SOURCE])
             fi
         fi
     fi
@@ -971,7 +978,7 @@
 # any POLL definitions.
 APR_CHECK_DEFINE_FILES(POLLIN, poll.h sys/poll.h)
 
-if test "$threads" = "1"; then
+if test "$pthreadh" = "1"; then
     APR_CHECK_DEFINE(PTHREAD_PROCESS_SHARED, pthread.h)
     AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
     dnl Some systems have setpshared and define PROCESS_SHARED, but don't 
Index: include/arch/unix/locks.h
===================================================================
RCS file: /home/cvs/apr/include/arch/unix/locks.h,v
retrieving revision 1.36
diff -u -r1.36 locks.h
--- include/arch/unix/locks.h	2001/07/19 00:11:56	1.36
+++ include/arch/unix/locks.h	2001/07/26 22:13:54
@@ -92,11 +92,8 @@
 #ifdef HAVE_SYS_MMAN_H
 #include <sys/mman.h>
 #endif
-
-#if APR_HAS_THREADS
 #if APR_HAVE_PTHREAD_H
 #include <pthread.h>
-#endif
 #endif
 /* End System Headers */
 


Mime
View raw message