Author: rjung Date: Sun Jan 6 13:14:08 2008 New Revision: 609404 URL: http://svn.apache.org/viewvc?rev=609404&view=rev Log: Use distinct structs for lb and ajp13 in shm. Improves type safety and saves a few bytes.
Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h tomcat/connectors/trunk/jk/native/common/jk_shm.c tomcat/connectors/trunk/jk/native/common/jk_shm.h tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c?rev=609404&r1=609403&r2=609404&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Sun Jan 6 13:14:08 2008 @@ -1305,10 +1305,10 @@ } for (i = 0; i < num_of_workers; i++) { - p->lb_workers[i].s = jk_shm_alloc_worker(&p->p); + p->lb_workers[i].s = jk_shm_alloc_ajp13_worker(&p->p); if (p->lb_workers[i].s == NULL) { jk_log(l, JK_LOG_ERROR, - "allocating worker record from shared memory"); + "allocating ajp13 worker record from shared memory"); JK_TRACE_EXIT(l); return JK_FALSE; } @@ -1518,7 +1518,7 @@ private_data->buf, sizeof(jk_pool_atom_t) * TINY_POOL_SIZE); - private_data->s = jk_shm_alloc_worker(&private_data->p); + private_data->s = jk_shm_alloc_lb_worker(&private_data->p); if (!private_data->s) { free(private_data); JK_TRACE_EXIT(l); Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h?rev=609404&r1=609403&r2=609404&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h Sun Jan 6 13:14:08 2008 @@ -120,11 +120,11 @@ struct worker_record { - jk_worker_t *w; + jk_worker_t *w; /* Shared memory worker data */ - jk_shm_worker_t *s; + jk_shm_ajp13_worker_t *s; /* Current route. Can be name or domain */ - const char *r; + const char *r; }; typedef struct worker_record worker_record_t; @@ -152,7 +152,7 @@ JK_CRIT_SEC cs; /* Shared memory worker data */ - jk_shm_worker_t *s; + jk_shm_lb_worker_t *s; }; typedef struct lb_worker lb_worker_t; Modified: tomcat/connectors/trunk/jk/native/common/jk_shm.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_shm.c?rev=609404&r1=609403&r2=609404&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_shm.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_shm.c Sun Jan 6 13:14:08 2008 @@ -27,6 +27,7 @@ #include "jk_util.h" #include "jk_mt.h" #include "jk_lb_worker.h" +#include "jk_ajp13_worker.h" #include "jk_shm.h" /** jk shm header core data structure */ @@ -59,7 +60,8 @@ struct jk_shm { size_t size; - unsigned workers; + unsigned ajp13_workers; + unsigned lb_workers; char *filename; char *lockname; int fd; @@ -72,7 +74,7 @@ typedef struct jk_shm jk_shm_t; static const char shm_signature[] = { JK_SHM_MAGIC }; -static jk_shm_t jk_shmem = { 0, 0, NULL, NULL, -1, -1, 0, NULL}; +static jk_shm_t jk_shmem = { 0, 0, 0, NULL, NULL, -1, -1, 0, NULL}; static time_t jk_workers_modified_time = 0; static time_t jk_workers_access_time = 0; #if defined (WIN32) @@ -85,7 +87,8 @@ char **worker_list; unsigned i; unsigned num_of_workers; - int num_of_shm_workers = 0; + int num_of_lb_workers = 0; + int num_of_ajp13_workers = 0; JK_TRACE_ENTER(l); @@ -103,7 +106,7 @@ if (!strcmp(type, JK_LB_WORKER_NAME)) { char **member_list; unsigned num_of_members; - num_of_shm_workers++; + num_of_lb_workers++; if (jk_get_lb_worker_list(init_data, worker_list[i], &member_list, &num_of_members) == JK_FALSE) { jk_log(l, JK_LOG_ERROR, @@ -113,15 +116,17 @@ if (JK_IS_DEBUG_LEVEL(l)) jk_log(l, JK_LOG_DEBUG, "worker %s of type %s has %u members", worker_list[i], JK_LB_WORKER_NAME, num_of_members); - num_of_shm_workers += num_of_members; + num_of_ajp13_workers += num_of_members; } } } if (JK_IS_DEBUG_LEVEL(l)) - jk_log(l, JK_LOG_DEBUG, "shared memory will contain %d items", num_of_shm_workers); - jk_shmem.workers = num_of_shm_workers; + jk_log(l, JK_LOG_DEBUG, "shared memory will contain %d lb workers with %d ajp13 members", + num_of_lb_workers, num_of_ajp13_workers); + jk_shmem.lb_workers = num_of_lb_workers; + jk_shmem.ajp13_workers = num_of_ajp13_workers; JK_TRACE_EXIT(l); - return JK_SHM_SIZE(jk_shmem.workers); + return JK_SHM_LB_SIZE(jk_shmem.lb_workers) + JK_SHM_AJP13_SIZE(jk_shmem.ajp13_workers); } @@ -705,14 +710,31 @@ return rc; } -jk_shm_worker_t *jk_shm_alloc_worker(jk_pool_t *p) +jk_shm_ajp13_worker_t *jk_shm_alloc_ajp13_worker(jk_pool_t *p) { - jk_shm_worker_t *w = (jk_shm_worker_t *)jk_shm_alloc(p, JK_SHM_WORKER_SIZE); + jk_shm_ajp13_worker_t *w = (jk_shm_ajp13_worker_t *)jk_shm_alloc(p, JK_SHM_AJP13_WORKER_SIZE); if (w) { - memset(w, 0, JK_SHM_WORKER_SIZE); + memset(w, 0, JK_SHM_AJP13_WORKER_SIZE); if (jk_shmem.hdr) { jk_shmem.hdr->h.data.workers++; w->id = jk_shmem.hdr->h.data.workers; + w->type = JK_AJP13_WORKER_TYPE; + } + else + w->id = -1; + } + return w; +} + +jk_shm_lb_worker_t *jk_shm_alloc_lb_worker(jk_pool_t *p) +{ + jk_shm_lb_worker_t *w = (jk_shm_lb_worker_t *)jk_shm_alloc(p, JK_SHM_LB_WORKER_SIZE); + if (w) { + memset(w, 0, JK_SHM_LB_WORKER_SIZE); + if (jk_shmem.hdr) { + jk_shmem.hdr->h.data.workers++; + w->id = jk_shmem.hdr->h.data.workers; + w->type = JK_LB_WORKER_TYPE; } else w->id = -1; Modified: tomcat/connectors/trunk/jk/native/common/jk_shm.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_shm.h?rev=609404&r1=609403&r2=609404&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_shm.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_shm.h Sun Jan 6 13:14:08 2008 @@ -49,27 +49,26 @@ #define JK_SHM_MAGIC_SIZ 8 /* Really huge numbers, but 64 workers should be enough */ -#define JK_SHM_MAX_WORKERS 64 -#define JK_SHM_ALIGNMENT 64 -#define JK_SHM_ALIGN(x) JK_ALIGN((x), JK_SHM_ALIGNMENT) -#define JK_SHM_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_worker_t)) -#define JK_SHM_SIZE(x) ((x) * JK_SHM_WORKER_SIZE) -#define JK_SHM_DEF_SIZE JK_SHM_SIZE(JK_SHM_MAX_WORKERS) +#define JK_SHM_MAX_WORKERS 64 +#define JK_SHM_ALIGNMENT 64 +#define JK_SHM_ALIGN(x) JK_ALIGN((x), JK_SHM_ALIGNMENT) +#define JK_SHM_AJP13_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_ajp13_worker_t)) +#define JK_SHM_LB_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_lb_worker_t)) +#define JK_SHM_AJP13_SIZE(x) ((x) * JK_SHM_AJP13_WORKER_SIZE) +#define JK_SHM_LB_SIZE(x) ((x) * JK_SHM_LB_WORKER_SIZE) +#define JK_SHM_DEF_SIZE JK_SHM_AJP13_SIZE(JK_SHM_MAX_WORKERS) -/** jk shm worker record structure */ -struct jk_shm_worker +/** jk shm ajp13 worker record structure */ +struct jk_shm_ajp13_worker { int id; - /* Sequence counter starting at 0 and increasing - * every time we change the config - */ - volatile unsigned int sequence; + int type; + /* worker name */ + char name[JK_SHM_STR_SIZ+1]; /* Number of currently busy channels */ volatile int busy; /* Maximum number of busy channels */ volatile int max_busy; - /* worker name */ - char name[JK_SHM_STR_SIZ+1]; /* route */ char route[JK_SHM_STR_SIZ+1]; /* worker domain */ @@ -88,17 +87,8 @@ volatile jk_uint64_t lb_mult; /* Current lb value */ volatile jk_uint64_t lb_value; - int sticky_session; - int sticky_session_force; - int recover_wait_time; - int max_reply_timeouts; - int retries; - int lbmethod; - int lblock; /* Statistical data */ volatile time_t error_time; - /* Service transfer rate time */ - volatile time_t last_maintain_time; /* Number of bytes read from remote */ volatile jk_uint64_t readed; /* Number of bytes transferred to remote */ @@ -114,7 +104,34 @@ /* Number of client errors */ volatile jk_uint32_t client_errors; }; -typedef struct jk_shm_worker jk_shm_worker_t; +typedef struct jk_shm_ajp13_worker jk_shm_ajp13_worker_t; + +/** jk shm lb worker record structure */ +struct jk_shm_lb_worker +{ + int id; + int type; + /* worker name */ + char name[JK_SHM_STR_SIZ+1]; + /* Sequence counter starting at 0 and increasing + * every time we change the config + */ + volatile unsigned int sequence; + /* Number of currently busy channels */ + volatile int busy; + /* Maximum number of busy channels */ + volatile int max_busy; + int sticky_session; + int sticky_session_force; + int recover_wait_time; + int max_reply_timeouts; + int retries; + int lbmethod; + int lblock; + /* Service transfer rate time */ + volatile time_t last_maintain_time; +}; +typedef struct jk_shm_lb_worker jk_shm_lb_worker_t; const char *jk_shm_name(void); @@ -139,10 +156,15 @@ */ void *jk_shm_alloc(jk_pool_t *p, size_t size); -/* allocate shm worker record +/* allocate shm ajp13 worker record + * If there is no shm present the pool will be used instead + */ +jk_shm_ajp13_worker_t *jk_shm_alloc_ajp13_worker(jk_pool_t *p); + +/* allocate shm lb worker record * If there is no shm present the pool will be used instead */ -jk_shm_worker_t *jk_shm_alloc_worker(jk_pool_t *p); +jk_shm_lb_worker_t *jk_shm_alloc_lb_worker(jk_pool_t *p); /* Return workers.properties last modified time */ Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=609404&r1=609403&r2=609404&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original) +++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Sun Jan 6 13:14:08 2008 @@ -44,6 +44,10 @@ <subsection name="Native"> <changelog> <update> + SHM: Use distinct structs for lb and ajp13 in shm. + Improves type safety and saves a few bytes. (rjung) + </update> + <update> SHM: Remove unused attributes. (rjung) </update> <update> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]