commit: r276 - in trunk: . daemon examples libspread

[email protected]
Newsgroups gmane.network.spread.cvs
Message-ID <[email protected]>
Author: jonathan
Date: 2005-09-08 10:56:53 -0400 (Thu, 08 Sep 2005)
New Revision: 276

Modified:
   trunk/configure
   trunk/configure.in
   trunk/daemon/config.h.in
   trunk/daemon/memory.c
   trunk/daemon/mutex.h
   trunk/examples/user.c
   trunk/libspread/sp.c
Log:
Apply warning fix patch from Neil Conway.
Add configure check for pthread_atfork function so it will only be used if supported by pthread library.
If it does not exist, then forking threaded spread client programs is not safe from deadlocks. 


Modified: trunk/configure
===================================================================
--- trunk/configure	2005-09-01 19:27:47 UTC (rev 275)
+++ trunk/configure	2005-09-08 14:56:53 UTC (rev 276)
@@ -3570,6 +3570,108 @@
 
  THLIBS=$LIBS
 
+
+for ac_func in pthread_atfork
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
  LIBS=$OLDLIBS
 
 

Modified: trunk/configure.in
===================================================================
--- trunk/configure.in	2005-09-01 19:27:47 UTC (rev 275)
+++ trunk/configure.in	2005-09-08 14:56:53 UTC (rev 276)
@@ -93,6 +93,8 @@
 AC_CHECK_LIB(posix4, sem_wait, , )
  THLIBS=$LIBS
 AC_SUBST(THLIBS)
+dnl    Check for pthread functions
+AC_CHECK_FUNCS(pthread_atfork)
  LIBS=$OLDLIBS
 
 AC_CHECK_LIB(nsl, gethostbyaddr, , )

Modified: trunk/daemon/config.h.in
===================================================================
--- trunk/daemon/config.h.in	2005-09-01 19:27:47 UTC (rev 275)
+++ trunk/daemon/config.h.in	2005-09-08 14:56:53 UTC (rev 276)
@@ -37,6 +37,9 @@
 /* Define if libc defines __progname */
 #undef HAVE___PROGNAME
 
+/* Define if pthread library supports pthread_atfork */
+#undef HAVE_PTHREAD_ATFORK
+
 /* Data types */
 #undef ARCH_PC_WIN95
 #undef ARCH_SCATTER_NONE

Modified: trunk/daemon/memory.c
===================================================================
--- trunk/daemon/memory.c	2005-09-01 19:27:47 UTC (rev 275)
+++ trunk/daemon/memory.c	2005-09-08 14:56:53 UTC (rev 276)
@@ -105,8 +105,11 @@
 
 static mem_info Mem[MAX_MEM_OBJECTS];
 
-static bool Initialized;
+#ifndef NDEBUG
+ static bool Initialized;
+#endif
 
+
 #ifdef  SPREAD_STATUS
 static bool MemStatus_initialized;
 #endif

Modified: trunk/daemon/mutex.h
===================================================================
--- trunk/daemon/mutex.h	2005-09-01 19:27:47 UTC (rev 275)
+++ trunk/daemon/mutex.h	2005-09-08 14:56:53 UTC (rev 276)
@@ -36,6 +36,8 @@
 #ifndef INC_MUTEX
 #define INC_MUTEX
 
+#include "arch.h"
+
 #ifndef _REENTRANT
 
 #define MUTEX_STATIC_INIT 	0
@@ -66,7 +68,11 @@
 #define Mutex_unlock( mutex )	pthread_mutex_unlock( mutex )
 #define Mutex_trylock( mutex )	pthread_mutex_trylock( mutex )
 
-#define Mutex_atfork( prepare, parent, child )  pthread_atfork( prepare, parent, child )
+#ifdef  HAVE_PTHREAD_ATFORK
+#   define Mutex_atfork( prepare, parent, child )  pthread_atfork( prepare, parent, child )
+#else
+#   define Mutex_atfork( prepare, parent, child )
+#endif
 
 #else	/* ARCH_PC_WIN95 */
 

Modified: trunk/examples/user.c
===================================================================
--- trunk/examples/user.c	2005-09-01 19:27:47 UTC (rev 275)
+++ trunk/examples/user.c	2005-09-08 14:56:53 UTC (rev 276)
@@ -101,10 +101,6 @@
 static  void    Print_help();
 static  void	Bye();
 
-static  int     ip_authenticate( char * auth_data)
-{
-        return(1);
-}
 int main( int argc, char *argv[] )
 {
 	int	ret;

Modified: trunk/libspread/sp.c
===================================================================
--- trunk/libspread/sp.c	2005-09-01 19:27:47 UTC (rev 275)
+++ trunk/libspread/sp.c	2005-09-08 14:56:53 UTC (rev 276)
@@ -172,6 +172,8 @@
 /* We take the Struct_mutex in prepare to prevent inconsistent state 
  * in Session[] structs in child
  */
+#ifdef  HAVE_PTHREAD_ATFORK
+
 static  void    sp_atfork_prepare(void)
 {
 
@@ -196,6 +198,9 @@
         }
 
 }
+
+#endif  /* HAVE_PTHREAD_ATFORK */
+
 static  void    sp_initialize_locks(void)
 {
         int ret, i;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.