]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/daemon.c
Merged in per cache entry reader/writer locks from OPENLDAP_DEVEL_THREAD
[openldap] / servers / slapd / daemon.c
index c88ab7ecc9891ab612ce824565b0b155a477e56a..509ed6a275947cdffbc928ea375b136afcaa1daf 100644 (file)
@@ -89,7 +89,7 @@ slapd_daemon(
        if(dtblsize > FD_SETSIZE) {
                dtblsize = FD_SETSIZE;
        }
-#endif /* !FD_SETSIZE*/
+#endif /* !FD_SETSIZE */
 
        c = (Connection *) ch_calloc( 1, dtblsize * sizeof(Connection) );
 
@@ -149,16 +149,17 @@ slapd_daemon(
        }
 
        (void) SIGNAL( SIGPIPE, SIG_IGN );
-#ifdef SIGSTKFLT
+#ifdef linux
+       /*
+        * LinuxThreads are implemented using SIGUSR1/USR2,
+        * so we'll use SIGSTKFLT and SIGUNUSED
+        */
        (void) SIGNAL( SIGSTKFLT, (void *) do_nothing );
-#else
-       (void) SIGNAL( SIGUSR1, (void *) do_nothing );
-#endif
-#ifdef SIGUNUSED
        (void) SIGNAL( SIGUNUSED, (void *) set_shutdown );
-#else
+#else /* !linux */
+       (void) SIGNAL( SIGUSR1, (void *) do_nothing );
        (void) SIGNAL( SIGUSR2, (void *) set_shutdown );
-#endif
+#endif /* !linux */
        (void) SIGNAL( SIGTERM, (void *) set_shutdown );
        (void) SIGNAL( SIGINT, (void *) set_shutdown );
        (void) SIGNAL( SIGHUP, (void *) set_shutdown );
@@ -194,6 +195,9 @@ slapd_daemon(
                FD_ZERO( &readfds );
                FD_SET( tcps, &readfds );
 
+               zero.tv_sec = 0;
+               zero.tv_usec = 0;
+
                pthread_mutex_lock( &active_threads_mutex );
                Debug( LDAP_DEBUG_CONNS,
                    "listening for connections on %d, activity on:",
@@ -214,11 +218,9 @@ slapd_daemon(
                Debug( LDAP_DEBUG_CONNS, "\n", 0, 0, 0 );
                pthread_mutex_unlock( &new_conn_mutex );
 
-               zero.tv_sec = 0;
-               zero.tv_usec = 0;
                Debug( LDAP_DEBUG_CONNS, "before select active_threads %d\n",
                    active_threads, 0, 0 );
-#ifdef PTHREAD_PREEMPTIVE
+#if    defined(PTHREAD_PREEMPTIVE) || defined(NO_THREADS)
                tvp = NULL;
 #else
                tvp = active_threads ? &zero : NULL;
@@ -420,16 +422,17 @@ set_shutdown()
 {
        Debug( LDAP_DEBUG_ANY, "slapd got shutdown signal\n", 0, 0, 0 );
        slapd_shutdown = 1;
-#ifdef SIGSTKFLT
+#ifdef linux
+       /*
+        * LinuxThreads are implemented using SIGUSR1/USR2,
+        * so we'll use SIGSTKFLT and SIGUNUSED
+        */
        pthread_kill( listener_tid, SIGSTKFLT );
-#else
-       pthread_kill( listener_tid, SIGUSR1 );
-#endif
-#ifdef SIGUNUSED
        (void) SIGNAL( SIGUNUSED, (void *) set_shutdown );
-#else
+#else /* !linux */
+       pthread_kill( listener_tid, SIGUSR1 );
        (void) SIGNAL( SIGUSR2, (void *) set_shutdown );
-#endif
+#endif /* !linux */
        (void) SIGNAL( SIGTERM, (void *) set_shutdown );
        (void) SIGNAL( SIGINT, (void *) set_shutdown );
        (void) SIGNAL( SIGHUP, (void *) set_shutdown );
@@ -439,9 +442,13 @@ static void
 do_nothing()
 {
        Debug( LDAP_DEBUG_TRACE, "slapd got do_nothing signal\n", 0, 0, 0 );
-#ifdef SIGSTKFLT
+#ifdef linux
+       /*
+        * LinuxThreads are implemented using SIGUSR1/USR2,
+        * so we'll use SIGSTKFLT and SIGUNUSED
+        */
        (void) SIGNAL( SIGSTKFLT, (void *) do_nothing );
-#else
+#else /* !linux */
        (void) SIGNAL( SIGUSR1, (void *) do_nothing );
-#endif
+#endif /* !linux */
 }