Can't test as I don't have a linux, but if this helps with profiling we
should add it :)

Brian? Ian?

david

> 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