this is a carry over from 1.3, other mpms would need to
AP_MONCONTROL(1) in the appropriates places..

Index: include/ap_mpm.h
===================================================================
RCS file: /home/cvs/httpd-2.0/include/ap_mpm.h,v
retrieving revision 1.31
diff -u -r1.31 ap_mpm.h
--- include/ap_mpm.h    2001/11/13 22:42:38     1.31
+++ include/ap_mpm.h    2001/11/24 00:22:33
@@ -183,4 +183,18 @@
  */
 AP_DECLARE(apr_status_t) ap_mpm_query(int query_code, int *result);
 
+/* Defining GPROF when compiling uses the moncontrol() function to
+ * disable gprof profiling in the parent, and enable it only for
+ * request processing in children (or in one_process mode).  It's
+ * absolutely required to get useful gprof results under linux
+ * because the profile itimers and such are disabled across a
+ * fork().  It's probably useful elsewhere as well.
+ */
+#ifdef GPROF
+extern void moncontrol(int);
+#define AP_MONCONTROL(x) moncontrol(x)
+#else
+#define AP_MONCONTROL(x)
+#endif
+
 #endif
Index: server/main.c
===================================================================
RCS file: /home/cvs/httpd-2.0/server/main.c,v
retrieving revision 1.102
diff -u -r1.102 main.c
--- server/main.c       2001/11/23 16:35:22     1.102
+++ server/main.c       2001/11/24 00:22:34
@@ -298,6 +298,8 @@
     module **mod;
     const char *optarg;
 
+    AP_MONCONTROL(0); /* turn of profiling of startup */
+
     apr_initialize();
 
     process = create_process(argc, argv);
Index: server/mpm/prefork/prefork.c
===================================================================
RCS file: /home/cvs/httpd-2.0/server/mpm/prefork/prefork.c,v
retrieving revision 1.222
diff -u -r1.222 prefork.c
--- server/mpm/prefork/prefork.c        2001/11/20 18:18:45     1.222
+++ server/mpm/prefork/prefork.c        2001/11/24 00:22:35
@@ -759,6 +759,7 @@
        }
 #endif
        RAISE_SIGSTOP(MAKE_CHILD);
+        AP_MONCONTROL(1);
         /* Disable the parent's signal handlers and set up proper handling in
          * the child.
         */
@@ -969,6 +970,10 @@
 #endif
 
     set_signals();
+
+    if (one_process) {
+        AP_MONCONTROL(1);
+    }
 
     if (ap_daemons_max_free < ap_daemons_min_free + 1) /* Don't thrash... */
        ap_daemons_max_free = ap_daemons_min_free + 1;

Reply via email to