]> granicus.if.org Git - apache/commitdiff
Eliminate references to specific MPMs from mpm_common.c by having the
authorManoj Kasichainula <manoj@apache.org>
Sun, 30 Jul 2000 12:03:48 +0000 (12:03 +0000)
committerManoj Kasichainula <manoj@apache.org>
Sun, 30 Jul 2000 12:03:48 +0000 (12:03 +0000)
MPMs export interfaces to the tables used to keep track of children.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85951 13f79535-47bb-0310-9956-ffa450edef68

server/mpm/beos/mpm.h
server/mpm/dexter/mpm.h
server/mpm/experimental/perchild/mpm.h
server/mpm/mpmt_beos/mpm.h
server/mpm/mpmt_pthread/mpm.h
server/mpm/perchild/mpm.h
server/mpm/prefork/mpm.h
server/mpm_common.c

index e792f0cd3d9e2d7516c9feff5f59999021322ac0..e6980b21c863ae75413bd1349f0912bf2ff29079 100644 (file)
 #define APACHE_MPM_BEOS_H
 
 #define BEOS_MPM
+
+#define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
+#define MPM_SYNC_CHILD_TABLE()
+#define MPM_CHILD_PID(i) (ap_child_table[i].pid)
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+
 extern int ap_max_child_assigned;
 #include "scoreboard.h"
 
index ffcccc122c116283f6d7a8f75bbd7e1e3f9f4ed2..cd7da3c058843e5309ff83e08f6c9429bfbcb52d 100644 (file)
 
 #define DEXTER_MPM
 
+#define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
+#define MPM_SYNC_CHILD_TABLE()
+#define MPM_CHILD_PID(i) (ap_child_table[i].pid)
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+
 /* Table of child status */
 #define SERVER_DEAD 0
 #define SERVER_DYING 1
index eef0032dd38129057eb67e677ee4f164c50c0dc3..c5c74e74b7bc59f765702771081748163f90f208 100644 (file)
 
 #define PERCHILD_MPM
 
+#define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
+#define MPM_SYNC_CHILD_TABLE() (ap_sync_scoreboard_image())
+#define MPM_CHILD_PID(i) (ap_child_table[i].pid)
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+
 /* Table of child status */
 #define SERVER_DEAD 0
 #define SERVER_DYING 1
index 486c8d898164a5379edd6e9f594eec306c012e4a..bc37d4e0f2f937654a805c68a6a7c7578aab6b96 100644 (file)
 
 #define MPMT_BEOS_MPM
 
+#define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
+#define MPM_SYNC_CHILD_TABLE()
+#define MPM_CHILD_PID(i) (ap_child_table[i].pid)
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+
 #define SERVER_DEAD 0
 #define SERVER_DYING 1
 #define SERVER_ALIVE 2
index 109d553ef8a75c2e6e4a571632118992a6931c14..3f6e43c464b2780e6a3491c1ce7b2d84002277f5 100644 (file)
 
 #define MPMT_PTHREAD_MPM
 
+#define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
+#define MPM_SYNC_CHILD_TABLE() (ap_sync_scoreboard_image())
+#define MPM_CHILD_PID(i) (ap_scoreboard_image->parent[i].pid)
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+
 extern int ap_threads_per_child;
 extern int ap_max_requests_per_child;
 extern int ap_extended_status;
index eef0032dd38129057eb67e677ee4f164c50c0dc3..c5c74e74b7bc59f765702771081748163f90f208 100644 (file)
 
 #define PERCHILD_MPM
 
+#define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
+#define MPM_SYNC_CHILD_TABLE() (ap_sync_scoreboard_image())
+#define MPM_CHILD_PID(i) (ap_child_table[i].pid)
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+
 /* Table of child status */
 #define SERVER_DEAD 0
 #define SERVER_DYING 1
index 248591716e6b821d6bb114fb98b90d161a17c0e8..d458c8a0c27d03e198673c9dd6641cadd0baf76e 100644 (file)
 
 #define PREFORK_MPM
 
+#define MPM_NEEDS_RECLAIM_CHILD_PROCESSES 1
+#define MPM_SYNC_CHILD_TABLE() (ap_sync_scoreboard_image())
+#define MPM_CHILD_PID(i) (ap_scoreboard_image->parent[i].pid)
+#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+
 extern int ap_max_daemons_limit;
 extern scoreboard *ap_scoreboard_image;
 extern server_rec *ap_server_conf;
index 12642a53a0e1fa8f3f9771699d5ab43c397d31b2..5825d68f33cf044e8a92269bb95e62d8d26189a2 100644 (file)
 #include <sys/socket.h> /* for setsockopt prototype */
 #endif
 
-#if defined(DEXTER_MPM) || defined(MPMT_BEOS_MPM) || defined(BEOS_MPM) || defined(PERCHILD_MPM)
-#define CHILD_TABLE 1
-#define CHILD_INFO_TABLE     ap_child_table
-#elif defined(MPMT_PTHREAD) || defined(PREFORK_MPM)
-#define SCOREBOARD 1
-#define CHILD_INFO_TABLE     ap_scoreboard_image->parent
-#endif 
-
-
-#ifdef CHILD_INFO_TABLE
+#ifdef MPM_NEEDS_RECLAIM_CHILD_PROCESSES
 void ap_reclaim_child_processes(int terminate)
 {
     int i;
@@ -100,9 +91,7 @@ void ap_reclaim_child_processes(int terminate)
     int not_dead_yet;
     int max_daemons = ap_get_max_daemons();
 
-#ifdef SCOREBOARD
-    ap_sync_scoreboard_image();
-#endif
+    MPM_SYNC_CHILD_TABLE();
 
     for (tries = terminate ? 4 : 1; tries <= 9; ++tries) {
         /* don't want to hold up progress any more than
@@ -115,20 +104,16 @@ void ap_reclaim_child_processes(int terminate)
         /* now see who is done */
         not_dead_yet = 0;
         for (i = 0; i < max_daemons; ++i) {
-            pid_t pid = CHILD_INFO_TABLE[i].pid;
+            pid_t pid = MPM_CHILD_PID(i);
             ap_proc_t proc;
 
-#ifdef CHILD_TABLE
             if (pid == 0)
-#elif defined(SCOREBOARD)
-            if (pid == ap_my_pid || pid == 0)
-#endif
                 continue;
 
             proc.pid = pid;
             waitret = ap_wait_proc(&proc, APR_NOWAIT);
             if (waitret != APR_CHILD_NOTDONE) {
-                CHILD_INFO_TABLE[i].pid = 0;
+                MPM_NOTE_CHILD_KILLED(i);
                 continue;
             }
             ++not_dead_yet;
@@ -186,7 +171,7 @@ void ap_reclaim_child_processes(int terminate)
         }
     }
 }
-#endif
+#endif /* NEED_RECLAIM_CHILD_PROCESSES */
 
 /* number of calls to wait_or_timeout between writable probes */
 #ifndef INTERVAL_OF_WRITABLE_PROBES