You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Ryan Morgan <rm...@covalent.net> on 2001/07/07 08:29:10 UTC

Re: [PATCH] easy scoreboard access

This patch works for me....

Module writers are going to need an interface like this to be able
to access the scoreboard when running in a different MPM than the
module was compiled with.

I guess the scoreboard is under construction right now, but this is
something to consider.

-Ryan

On Fri, Jun 29, 2001 at 03:55:06PM -0700, Harrie Hazewinkel wrote:
> HI,
> 
> This week I already psted a patch for this, but that was broken.
> My second attempt (attached).
> 
> 
> Harrie
> -- 
> address: Covalent Technologies, 645 Howard St, San Francisco, CA - 94105
> phone: +1-415-536-5221                               fax:+1-415-536-5210
> personal website: http://www.lisanza.net/
> --- server/scoreboard.c-orig	Tue Jun 26 15:32:10 2001
> +++ server/scoreboard.c	Wed Jun 27 15:04:29 2001
> @@ -348,3 +348,29 @@
>      put_scoreboard_info(child_num, thread_num, ws);
>  }
>  
> +worker_score *ap_get_servers_scoreboard(int x, int y)
> +{
> +int hard_server_limit;
> +int hard_thread_limit;
> +
> +    ap_mpm_query(AP_MPMQ_HARD_LIMIT_DAEMONS, &hard_server_limit);
> +    ap_mpm_query(AP_MPMQ_HARD_LIMIT_THREADS, &hard_thread_limit);
> +
> +    if (((x < 0) || (hard_server_limit < x)) ||
> +        ((y < 0) || (hard_thread_limit < y))) {
> +        return(NULL); /* Out of range */
> +    }
> +    return(&ap_scoreboard_image->servers[x][y]);
> +}
> +
> +process_score *ap_get_parent_scoreboard(int x)
> +{
> +int hard_server_limit;
> +
> +    ap_mpm_query(AP_MPMQ_HARD_LIMIT_DAEMONS, &hard_server_limit);
> +    
> +    if ((x < 0) || (hard_server_limit < x)) {
> +        return(NULL); /* Out of range */
> +    }
> +    return(&ap_scoreboard_image->parent[x]);
> +}
> --- include/scoreboard.h-orig	Wed Jun 27 14:42:55 2001
> +++ include/scoreboard.h	Wed Jun 27 14:46:39 2001
> @@ -216,6 +219,8 @@
>  AP_DECLARE(int) find_child_by_pid(apr_proc_t *pid);
>  int ap_update_child_status(int child_num, int thread_num, int status, request_rec *r);
>  void ap_time_process_request(int child_num, int thread_num, int status);
> +worker_score *ap_get_servers_scoreboard(int x, int y);
> +process_score *ap_get_parent_scoreboard(int x);
>  
>  
>  AP_DECLARE_DATA extern scoreboard *ap_scoreboard_image;