httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Doug MacEachern <do...@covalent.net>
Subject [patch] disable parent profiling
Date Sat, 24 Nov 2001 00:48:09 GMT
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;


Mime
View raw message