dougm       00/04/15 18:33:57

  Modified:    src/modules/perl mod_perl.c modperl_config.c
                        modperl_config.h modperl_interp.c modperl_interp.h
                        modperl_types.h
  Log:
  interpreter pool is only useful #ifdef USE_ITHREADS
  
  Revision  Changes    Path
  1.6       +3 -6      modperl-2.0/src/modules/perl/mod_perl.c
  
  Index: mod_perl.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- mod_perl.c        2000/04/16 00:35:32     1.5
  +++ mod_perl.c        2000/04/16 01:33:56     1.6
  @@ -23,7 +23,7 @@
   
       perl_run(perl);
   
  -    modperl_interp_pool_init(s, p, perl);
  +    modperl_interp_init(s, p, perl);
   }
   
   void modperl_init(server_rec *s, ap_pool_t *p)
  @@ -46,17 +46,13 @@
   {
       /* XXX: should be pre_config hook or 1.xx logic */
       ap_hook_open_logs(modperl_hook_init, NULL, NULL, HOOK_MIDDLE);
  -
  -    /* XXX: should only bother selecting an interpreter
  -     * if one is needed for the request
  -     */
  -    ap_hook_post_read_request(modperl_interp_select, NULL, NULL, HOOK_FIRST);
   }
   
   static command_rec modperl_cmds[] = {  
   #ifdef MP_TRACE
       MP_SRV_CMD_TAKE1("PerlTrace", trace, "Trace level"),
   #endif
  +#ifdef USE_ITHREADS
       MP_SRV_CMD_TAKE1("PerlInterpStart", interp_start,
                        "Number of Perl interpreters to start"),
       MP_SRV_CMD_TAKE1("PerlInterpMax", interp_max,
  @@ -65,6 +61,7 @@
                        "Max number of spare Perl interpreters"),
       MP_SRV_CMD_TAKE1("PerlInterpMinSpare", interp_min_spare,
                        "Min number of spare Perl interpreters"),
  +#endif
       { NULL }, 
   }; 
   
  
  
  
  1.4       +11 -2     modperl-2.0/src/modules/perl/modperl_config.c
  
  Index: modperl_config.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- modperl_config.c  2000/04/16 00:53:33     1.3
  +++ modperl_config.c  2000/04/16 01:33:56     1.4
  @@ -19,6 +19,8 @@
   void *modperl_create_srv_config(ap_pool_t *p, server_rec *s)
   {
       modperl_srv_config_t *scfg = modperl_srv_config_new(p);
  +
  +#ifdef USE_ITHREADS
       scfg->interp_pool_cfg = 
           (modperl_interp_pool_config_t *)
           ap_pcalloc(p, sizeof(*scfg->interp_pool_cfg));
  @@ -29,6 +31,8 @@
       scfg->interp_pool_cfg->min_spare = 3;
       scfg->interp_pool_cfg->max = 5;
   
  +#endif /* USE_ITHREADS */
  +
       return scfg;
   }
   
  @@ -37,14 +41,16 @@
   
   void *modperl_merge_srv_config(ap_pool_t *p, void *basev, void *addv)
   {
  +#if 0
       modperl_srv_config_t
           *base = (modperl_srv_config_t *)basev,
           *add  = (modperl_srv_config_t *)addv,
           *mrg  = modperl_srv_config_new(p);
   
  -    merge_item(mip);
  -
       return mrg;
  +#else
  +    return basev;
  +#endif
   }
   
   #define MP_CONFIG_BOOTSTRAP(parms) \
  @@ -56,6 +62,7 @@
       return NULL;
   }
   
  +#ifdef USE_ITHREADS
   
   #define MP_IMP_INTERP_POOL_CFG(item) \
   const char *modperl_cmd_interp_##item(cmd_parms *parms, \
  @@ -74,3 +81,5 @@
   MP_IMP_INTERP_POOL_CFG(max);
   MP_IMP_INTERP_POOL_CFG(max_spare);
   MP_IMP_INTERP_POOL_CFG(min_spare);
  +
  +#endif /* USE_ITHREADS */
  
  
  
  1.5       +2 -0      modperl-2.0/src/modules/perl/modperl_config.h
  
  Index: modperl_config.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_config.h  2000/04/16 00:35:32     1.4
  +++ modperl_config.h  2000/04/16 01:33:56     1.5
  @@ -18,10 +18,12 @@
                                  void *dummy, char *arg)
   MP_DECLARE_SRV_CMD(trace);
   
  +#ifdef USE_ITHREADS
   MP_DECLARE_SRV_CMD(interp_start);
   MP_DECLARE_SRV_CMD(interp_max);
   MP_DECLARE_SRV_CMD(interp_max_spare);
   MP_DECLARE_SRV_CMD(interp_min_spare);
  +#endif
   
   #define MP_SRV_CMD_TAKE1(name, item, desc) \
       { name, modperl_cmd_##item, NULL, \
  
  
  
  1.6       +26 -4     modperl-2.0/src/modules/perl/modperl_interp.c
  
  Index: modperl_interp.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- modperl_interp.c  2000/04/16 00:35:32     1.5
  +++ modperl_interp.c  2000/04/16 01:33:56     1.6
  @@ -5,6 +5,8 @@
    * but it will do for proof-of-concept
    */
   
  +#ifdef USE_ITHREADS
  +
   modperl_interp_t *modperl_interp_new(ap_pool_t *p,
                                        modperl_interp_pool_t *mip,
                                        PerlInterpreter *perl)
  @@ -201,8 +203,8 @@
       MUTEX_UNLOCK(&mip->mip_lock);
   }
   
  -void modperl_interp_pool_init(server_rec *s, ap_pool_t *p,
  -                              PerlInterpreter *perl)
  +void modperl_interp_init(server_rec *s, ap_pool_t *p,
  +                         PerlInterpreter *perl)
   {
       pTHX;
       MP_dSCFG(s);
  @@ -218,13 +220,11 @@
       MUTEX_INIT(&mip->mip_lock);
       COND_INIT(&mip->available);
   
  -#ifdef USE_ITHREADS
       for (i=0; i<mip->cfg->start; i++) {
           modperl_interp_t *interp = modperl_interp_new(p, mip, perl);
   
           modperl_interp_pool_add(mip, interp);
       }
  -#endif
   
       MP_TRACE_i(MP_FUNC, "parent == 0x%lx "
                  "start=%d, max=%d, min_spare=%d, max_spare=%d\n",
  @@ -235,6 +235,12 @@
       ap_register_cleanup(p, (void*)mip,
                           modperl_interp_pool_destroy, ap_null_cleanup);
   
  +
  +    /* XXX: should only bother selecting an interpreter
  +     * if one is needed for the request
  +     */
  +    ap_hook_post_read_request(modperl_interp_select, NULL, NULL, HOOK_FIRST);
  +
       scfg->mip = mip;
   }
   
  @@ -291,3 +297,19 @@
   
       return OK;
   }
  +
  +#else
  +
  +void modperl_interp_init(server_rec *s, ap_pool_t *p,
  +                         PerlInterpreter *perl)
  +{
  +    MP_dSCFG(s);
  +    scfg->perl = perl;
  +}
  +
  +ap_status_t modperl_interp_cleanup(void *data)
  +{
  +    return APR_SUCCESS;
  +}
  +
  +#endif /* USE_ITHREADS */
  
  
  
  1.4       +9 -6      modperl-2.0/src/modules/perl/modperl_interp.h
  
  Index: modperl_interp.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_interp.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- modperl_interp.h  2000/04/15 22:43:10     1.3
  +++ modperl_interp.h  2000/04/16 01:33:56     1.4
  @@ -1,24 +1,25 @@
   #ifndef MODPERL_INTERP_H
   #define MODPERL_INTERP_H
   
  +void modperl_interp_init(server_rec *s, ap_pool_t *p,
  +                         PerlInterpreter *perl);
  +
  +ap_status_t modperl_interp_cleanup(void *data);
  +
  +#ifdef USE_ITHREADS
  +
   modperl_interp_t *modperl_interp_new(ap_pool_t *p,
                                        modperl_interp_pool_t *mip,
                                        PerlInterpreter *perl);
   
   void modperl_interp_destroy(modperl_interp_t *interp);
   
  -ap_status_t modperl_interp_cleanup(void *data);
  -
   modperl_interp_t *modperl_interp_get(server_rec *s);
   
   ap_status_t modperl_interp_unselect(void *data);
   
   int modperl_interp_select(request_rec *r);
   
  -
  -void modperl_interp_pool_init(server_rec *s, ap_pool_t *p,
  -                              PerlInterpreter *perl);
  -
   ap_status_t modperl_interp_pool_destroy(void *data);
   
   void modperl_interp_pool_add(modperl_interp_pool_t *mip,
  @@ -26,5 +27,7 @@
   
   void modperl_interp_pool_remove(modperl_interp_pool_t *mip,
                                   modperl_interp_t *interp);
  +
  +#endif
   
   #endif /* MODPERL_INTERP_H */
  
  
  
  1.5       +8 -0      modperl-2.0/src/modules/perl/modperl_types.h
  
  Index: modperl_types.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- modperl_types.h   2000/04/16 00:35:32     1.4
  +++ modperl_types.h   2000/04/16 01:33:56     1.5
  @@ -23,6 +23,8 @@
   
   /* mod_perl structures */
   
  +#ifdef USE_ITHREADS
  +
   typedef struct modperl_interp_t modperl_interp_t;
   typedef struct modperl_interp_pool_t modperl_interp_pool_t;
   
  @@ -51,6 +53,8 @@
       modperl_interp_t *head, *tail;
   };
   
  +#endif /* USE_ITHREADS */
  +
   typedef struct {
       MpAV *handlers[MP_PROCESS_NUM_HANDLERS];
   } modperl_process_config_t;
  @@ -70,8 +74,12 @@
       MpAV *handlers[MP_PER_SRV_NUM_HANDLERS];
       modperl_process_config_t *process_cfg;
       modperl_connection_config_t *connection_cfg;
  +#ifdef USE_ITHREADS
       modperl_interp_pool_t *mip;
       modperl_interp_pool_config_t *interp_pool_cfg;
  +#else
  +    PerlInterpreter *perl;
  +#endif
       int flags;
   } modperl_srv_config_t;
   
  
  
  

Reply via email to