You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ji...@apache.org on 2009/05/15 17:04:38 UTC
svn commit: r775176 - in /httpd/httpd/trunk: include/ap_slotmem.h
modules/slotmem/mod_slotmem_plain.c modules/slotmem/mod_slotmem_shm.c
server/Makefile.in
Author: jim
Date: Fri May 15 15:04:37 2009
New Revision: 775176
URL: http://svn.apache.org/viewvc?rev=775176&view=rev
Log:
Final ( :) ) step to transition which removes the ap_slotmem_foo
API and just does providers direct
Modified:
httpd/httpd/trunk/include/ap_slotmem.h
httpd/httpd/trunk/modules/slotmem/mod_slotmem_plain.c
httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c
httpd/httpd/trunk/server/Makefile.in
Modified: httpd/httpd/trunk/include/ap_slotmem.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/ap_slotmem.h?rev=775176&r1=775175&r2=775176&view=diff
==============================================================================
--- httpd/httpd/trunk/include/ap_slotmem.h (original)
+++ httpd/httpd/trunk/include/ap_slotmem.h Fri May 15 15:04:37 2009
@@ -48,13 +48,16 @@
#include <unistd.h> /* for getpid() */
#endif
-#define AP_SLOTMEM_STORAGE "slotmem"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AP_SLOTMEM_PROVIDER_GROUP "slotmem"
+#define AP_SLOTMEM_PROVIDER_VERSION 0
-typedef enum {
- SLOTMEM_PERSIST /* create a persistent slotmem */
-} apslotmem_type;
+typedef unsigned int ap_slotmem_type_t;
-typedef struct ap_slotmem_t ap_slotmem_t;
+typedef struct ap_slotmem_instance_t ap_slotmem_instance_t;
/**
* callback function used for slotmem.
@@ -65,7 +68,7 @@
*/
typedef apr_status_t ap_slotmem_callback_fn_t(void* mem, void *data, apr_pool_t *pool);
-struct ap_slotmem_storage_method {
+struct ap_slotmem_provider_t {
/*
* Name of the provider method
*/
@@ -78,7 +81,7 @@
* @param pool is pool used
* @return APR_SUCCESS if all went well
*/
- apr_status_t (* slotmem_do)(ap_slotmem_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool);
+ apr_status_t (* doall)(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool);
/**
* create a new slotmem with each item size is item_size.
* This would create shared memory, basically.
@@ -89,7 +92,7 @@
* @param pool is pool used
* @return APR_SUCCESS if all went well
*/
- apr_status_t (* slotmem_create)(ap_slotmem_t **new, const char *name, apr_size_t item_size, unsigned int item_num, apslotmem_type type, apr_pool_t *pool);
+ apr_status_t (* create)(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool);
/**
* attach to an existing slotmem.
* This would attach to shared memory, basically.
@@ -99,7 +102,7 @@
* @param pool is pool to memory allocate.
* @return APR_SUCCESS if all went well
*/
- apr_status_t (* slotmem_attach)(ap_slotmem_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool);
+ apr_status_t (* attach)(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool);
/**
* get the memory ptr associated with this worker slot.
* @param s ap_slotmem_t to use.
@@ -107,7 +110,7 @@
* @param mem address to store the pointer to the slot
* @return APR_SUCCESS if all went well
*/
- apr_status_t (* slotmem_mem)(ap_slotmem_t *s, unsigned int item_id, void**mem);
+ apr_status_t (* dptr)(ap_slotmem_instance_t *s, unsigned int item_id, void**mem);
/**
* retrieve the memory associated with this worker slot.
* @param s ap_slotmem_t to use.
@@ -116,7 +119,7 @@
* @param dest_len length of dataset to retrieve
* @return APR_SUCCESS if all went well
*/
- apr_status_t (* slotmem_get)(ap_slotmem_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len);
+ apr_status_t (* get)(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len);
/**
* store the memory associated with this worker slot.
* @param s ap_slotmem_t to use.
@@ -125,120 +128,24 @@
* @param src_len length of dataset to store in the slot
* @return APR_SUCCESS if all went well
*/
- apr_status_t (* slotmem_put)(ap_slotmem_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len);
+ apr_status_t (* put)(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len);
/**
* return number of slots allocated for this entry.
* @param s ap_slotmem_t to use.
* @return number of slots
*/
- unsigned int (* slotmem_num_slots)(ap_slotmem_t *s);
+ unsigned int (* num_slots)(ap_slotmem_instance_t *s);
/**
* return slot size allocated for this entry.
* @param s ap_slotmem_t to use.
* @return size of slot
*/
- apr_size_t (* slotmem_slot_size)(ap_slotmem_t *s);
+ apr_size_t (* slot_size)(ap_slotmem_instance_t *s);
};
-typedef struct ap_slotmem_storage_method ap_slotmem_storage_method;
-
-/*
- * mod_slotmem externals exposed to the outside world.
- * Thus the provider nature of mod_slotmem is somewhat insulated
- * from the end user but can still be used directed if need
- * be. The rationale is to make it easier for additional
- * memory providers to be provided and having a single
- * simple interface for all
- */
-/**
- * obtain the array of provider methods desired
- * @param pool is the pool to use
- * @return pointer to array of provider names available
- */
-AP_DECLARE(apr_array_header_t *) ap_slotmem_methods(apr_pool_t *pool);
-/**
- * obtain the provider method desired
- * @param provider is name of the provider to use
- * @return pointer to provider or NULL
- */
-AP_DECLARE(ap_slotmem_storage_method *) ap_slotmem_method(const char *provider);
-/**
- * call the callback on all worker slots
- * @param sm ap_slotmem_storage_method provider obtained
- * @param s ap_slotmem_t to use.
- * @param funct callback function to call for each element.
- * @param data parameter for the callback function.
- * @param pool is pool used
- * @return APR_SUCCESS if all went well
- */
-AP_DECLARE(apr_status_t) ap_slotmem_do(ap_slotmem_storage_method *sm, ap_slotmem_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool);
-
-/**
- * create a new slotmem with each item size is item_size.
- * This would create shared memory, basically.
- * @param sm ap_slotmem_storage_method provider obtained
- * @param name is a key used for debugging and in mod_status output or allow another process to share this space.
- * @param item_size size of each item
- * @param item_num number of item to create.
- * @param type (persistent/allocatable/etc)
- * @param pool is pool used
- * @return APR_SUCCESS if all went well
- */
-AP_DECLARE(apr_status_t) ap_slotmem_create(ap_slotmem_storage_method *sm, ap_slotmem_t **new, const char *name, apr_size_t item_size, unsigned int item_num, apslotmem_type type, apr_pool_t *pool);
-
-/**
- * attach to an existing slotmem.
- * This would attach to shared memory, basically.
- * @param sm ap_slotmem_storage_method provider obtained
- * @param name is a key used for debugging and in mod_status output or allow another process to share this space.
- * @param item_size size of each item
- * @param item_num max number of item.
- * @param pool is pool to memory allocate.
- * @return APR_SUCCESS if all went well
- */
-AP_DECLARE(apr_status_t) ap_slotmem_attach(ap_slotmem_storage_method *sm, ap_slotmem_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool);
-/**
- * get the memory associated with this worker slot.
- * @param sm ap_slotmem_storage_method provider obtained
- * @param s ap_slotmem_t to use.
- * @param item_id item to return for 0 to item_num
- * @param mem address to store the pointer to the slot
- * @return APR_SUCCESS if all went well
- */
-AP_DECLARE(apr_status_t) ap_slotmem_mem(ap_slotmem_storage_method *sm, ap_slotmem_t *s, unsigned int item_id, void**mem);
-/**
- * retrieve the memory associated with this worker slot.
- * @param sm ap_slotmem_storage_method provider obtained
- * @param s ap_slotmem_t to use.
- * @param item_id item to return for 0 to item_num
- * @param dest address to store the data
- * @param dest_len length of dataset to retrieve
- * @return APR_SUCCESS if all went well
- */
-AP_DECLARE(apr_status_t) ap_slotmem_get(ap_slotmem_storage_method *sm, ap_slotmem_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len);
-/**
- * store the memory associated with this worker slot.
- * @param sm ap_slotmem_storage_method provider obtained
- * @param s ap_slotmem_t to use.
- * @param item_id item to return for 0 to item_num
- * @param src address of the data to store in the slot
- * @param src_len length of dataset to store in the slot
- * @return APR_SUCCESS if all went well
- */
-AP_DECLARE(apr_status_t) ap_slotmem_put(ap_slotmem_storage_method *sm, ap_slotmem_t *s, unsigned int item_id, unsigned char *src, apr_size_t src_len);
-/**
- * return number of slots allocated for this entry.
- * @param sm ap_slotmem_storage_method provider obtained
- * @param s ap_slotmem_t to use.
- * @return number of slots
- */
-AP_DECLARE(unsigned int) ap_slotmem_num_slots(ap_slotmem_storage_method *sm, ap_slotmem_t *s);
-/**
- * return slot size allocated for this entry.
- * @param sm ap_slotmem_storage_method provider obtained
- * @param s ap_slotmem_t to use.
- * @return size of slot
- */
-AP_DECLARE(apr_size_t) ap_slotmem_slot_size(ap_slotmem_storage_method *sm, ap_slotmem_t *s);
+#ifdef __cplusplus
+}
+#endif
-#endif /*SLOTMEM_H*/
+#endif
+/** @} */
Modified: httpd/httpd/trunk/modules/slotmem/mod_slotmem_plain.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/slotmem/mod_slotmem_plain.c?rev=775176&r1=775175&r2=775176&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/slotmem/mod_slotmem_plain.c (original)
+++ httpd/httpd/trunk/modules/slotmem/mod_slotmem_plain.c Fri May 15 15:04:37 2009
@@ -20,21 +20,21 @@
#include "ap_slotmem.h"
-struct ap_slotmem_t {
+struct ap_slotmem_instance_t {
char *name; /* per segment name */
void *base; /* data set start */
apr_size_t size; /* size of each memory slot */
unsigned int num; /* number of mem slots */
apr_pool_t *gpool; /* per segment global pool */
- struct ap_slotmem_t *next; /* location of next allocated segment */
+ struct ap_slotmem_instance_t *next; /* location of next allocated segment */
};
/* global pool and list of slotmem we are handling */
-static struct ap_slotmem_t *globallistmem = NULL;
+static struct ap_slotmem_instance_t *globallistmem = NULL;
static apr_pool_t *gpool = NULL;
-static apr_status_t slotmem_do(ap_slotmem_t *mem, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
+static apr_status_t slotmem_do(ap_slotmem_instance_t *mem, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
{
unsigned int i;
void *ptr;
@@ -50,10 +50,10 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_create(ap_slotmem_t **new, const char *name, apr_size_t item_size, unsigned int item_num, apslotmem_type type, apr_pool_t *pool)
+static apr_status_t slotmem_create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)
{
- ap_slotmem_t *res;
- ap_slotmem_t *next = globallistmem;
+ ap_slotmem_instance_t *res;
+ ap_slotmem_instance_t *next = globallistmem;
const char *fname;
if (name) {
@@ -76,7 +76,7 @@
fname = "anonymous";
/* create the memory using the gpool */
- res = (ap_slotmem_t *) apr_pcalloc(gpool, sizeof(ap_slotmem_t));
+ res = (ap_slotmem_instance_t *) apr_pcalloc(gpool, sizeof(ap_slotmem_instance_t));
res->base = apr_pcalloc(gpool, item_size * item_num);
if (!res->base)
return APR_ENOSHMAVAIL;
@@ -95,9 +95,9 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_attach(ap_slotmem_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
+static apr_status_t slotmem_attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
{
- ap_slotmem_t *next = globallistmem;
+ ap_slotmem_instance_t *next = globallistmem;
const char *fname;
if (name) {
@@ -124,7 +124,7 @@
return APR_ENOSHMAVAIL;
}
-static apr_status_t slotmem_mem(ap_slotmem_t *score, unsigned int id, void **mem)
+static apr_status_t slotmem_mem(ap_slotmem_instance_t *score, unsigned int id, void **mem)
{
void *ptr;
@@ -141,7 +141,7 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_get(ap_slotmem_t *slot, unsigned int id, unsigned char *dest, apr_size_t dest_len)
+static apr_status_t slotmem_get(ap_slotmem_instance_t *slot, unsigned int id, unsigned char *dest, apr_size_t dest_len)
{
void *ptr;
@@ -155,7 +155,7 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_put(ap_slotmem_t *slot, unsigned int id, unsigned char *src, apr_size_t src_len)
+static apr_status_t slotmem_put(ap_slotmem_instance_t *slot, unsigned int id, unsigned char *src, apr_size_t src_len)
{
void *ptr;
@@ -169,17 +169,17 @@
return APR_SUCCESS;
}
-static unsigned int slotmem_num_slots(ap_slotmem_t *slot)
+static unsigned int slotmem_num_slots(ap_slotmem_instance_t *slot)
{
return slot->num;
}
-static apr_size_t slotmem_slot_size(ap_slotmem_t *slot)
+static apr_size_t slotmem_slot_size(ap_slotmem_instance_t *slot)
{
return slot->size;
}
-static const ap_slotmem_storage_method storage = {
+static const ap_slotmem_provider_t storage = {
"plainmem",
&slotmem_do,
&slotmem_create,
Modified: httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c?rev=775176&r1=775175&r2=775176&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c (original)
+++ httpd/httpd/trunk/modules/slotmem/mod_slotmem_shm.c Fri May 15 15:04:37 2009
@@ -39,7 +39,7 @@
#endif
#endif
-struct ap_slotmem_t {
+struct ap_slotmem_instance_t {
char *name; /* per segment name */
void *shm; /* ptr to memory segment (apr_shm_t *) */
void *base; /* data set start */
@@ -47,7 +47,7 @@
unsigned int num; /* number of mem slots */
apr_pool_t *gpool; /* per segment global pool */
apr_global_mutex_t *smutex; /* mutex */
- struct ap_slotmem_t *next; /* location of next allocated segment */
+ struct ap_slotmem_instance_t *next; /* location of next allocated segment */
char *inuse; /* in-use flag table*/
};
@@ -64,7 +64,7 @@
*/
/* global pool and list of slotmem we are handling */
-static struct ap_slotmem_t *globallistmem = NULL;
+static struct ap_slotmem_instance_t *globallistmem = NULL;
static apr_pool_t *gpool = NULL;
static apr_global_mutex_t *smutex = NULL;
static const char *mutex_fname = NULL;
@@ -141,7 +141,7 @@
return storename;
}
-static void store_slotmem(ap_slotmem_t *slotmem)
+static void store_slotmem(ap_slotmem_instance_t *slotmem)
{
apr_file_t *fp;
apr_status_t rv;
@@ -190,12 +190,12 @@
static apr_status_t cleanup_slotmem(void *param)
{
- ap_slotmem_t **mem = param;
+ ap_slotmem_instance_t **mem = param;
apr_status_t rv;
apr_pool_t *pool = NULL;
if (*mem) {
- ap_slotmem_t *next = *mem;
+ ap_slotmem_instance_t *next = *mem;
pool = next->gpool;
while (next) {
store_slotmem(next);
@@ -207,7 +207,7 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_do(ap_slotmem_t *mem, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
+static apr_status_t slotmem_do(ap_slotmem_instance_t *mem, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
{
unsigned int i;
void *ptr;
@@ -230,13 +230,13 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_create(ap_slotmem_t **new, const char *name, apr_size_t item_size, unsigned int item_num, apslotmem_type type, apr_pool_t *pool)
+static apr_status_t slotmem_create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)
{
/* void *slotmem = NULL; */
void *ptr;
struct sharedslotdesc desc;
- ap_slotmem_t *res;
- ap_slotmem_t *next = globallistmem;
+ ap_slotmem_instance_t *res;
+ ap_slotmem_instance_t *next = globallistmem;
const char *fname;
apr_shm_t *shm;
apr_size_t basesize = (item_size * item_num);
@@ -322,7 +322,7 @@
}
/* For the chained slotmem stuff */
- res = (ap_slotmem_t *) apr_pcalloc(gpool, sizeof(ap_slotmem_t));
+ res = (ap_slotmem_instance_t *) apr_pcalloc(gpool, sizeof(ap_slotmem_instance_t));
res->name = apr_pstrdup(gpool, fname);
res->shm = shm;
res->base = ptr;
@@ -343,12 +343,12 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_attach(ap_slotmem_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
+static apr_status_t slotmem_attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
{
/* void *slotmem = NULL; */
void *ptr;
- ap_slotmem_t *res;
- ap_slotmem_t *next = globallistmem;
+ ap_slotmem_instance_t *res;
+ ap_slotmem_instance_t *next = globallistmem;
struct sharedslotdesc desc;
const char *fname;
apr_shm_t *shm;
@@ -393,7 +393,7 @@
ptr = ptr + sizeof(desc);
/* For the chained slotmem stuff */
- res = (ap_slotmem_t *) apr_pcalloc(gpool, sizeof(ap_slotmem_t));
+ res = (ap_slotmem_instance_t *) apr_pcalloc(gpool, sizeof(ap_slotmem_instance_t));
res->name = apr_pstrdup(gpool, fname);
res->shm = shm;
res->base = ptr;
@@ -416,7 +416,7 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_mem(ap_slotmem_t *slot, unsigned int id, void **mem)
+static apr_status_t slotmem_mem(ap_slotmem_instance_t *slot, unsigned int id, void **mem)
{
void *ptr;
@@ -436,7 +436,7 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_get(ap_slotmem_t *slot, unsigned int id, unsigned char *dest, apr_size_t dest_len)
+static apr_status_t slotmem_get(ap_slotmem_instance_t *slot, unsigned int id, unsigned char *dest, apr_size_t dest_len)
{
void *ptr;
@@ -459,7 +459,7 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_put(ap_slotmem_t *slot, unsigned int id, unsigned char *src, apr_size_t src_len)
+static apr_status_t slotmem_put(ap_slotmem_instance_t *slot, unsigned int id, unsigned char *src, apr_size_t src_len)
{
void *ptr;
@@ -482,17 +482,17 @@
return APR_SUCCESS;
}
-static unsigned int slotmem_num_slots(ap_slotmem_t *slot)
+static unsigned int slotmem_num_slots(ap_slotmem_instance_t *slot)
{
return slot->num;
}
-static apr_size_t slotmem_slot_size(ap_slotmem_t *slot)
+static apr_size_t slotmem_slot_size(ap_slotmem_instance_t *slot)
{
return slot->size;
}
-static apr_status_t slotmem_grab(ap_slotmem_t *slot, unsigned int *id)
+static apr_status_t slotmem_grab(ap_slotmem_instance_t *slot, unsigned int *id)
{
unsigned int i;
@@ -520,7 +520,7 @@
return APR_SUCCESS;
}
-static apr_status_t slotmem_return(ap_slotmem_t *slot, unsigned int id)
+static apr_status_t slotmem_return(ap_slotmem_instance_t *slot, unsigned int id)
{
char *inuse;
@@ -541,7 +541,7 @@
return APR_SUCCESS;
}
-static const ap_slotmem_storage_method storage = {
+static const ap_slotmem_provider_t storage = {
"sharedmem",
&slotmem_do,
&slotmem_create,
@@ -554,7 +554,7 @@
};
/* make the storage usuable from outside */
-static const ap_slotmem_storage_method *sharedmem_getstorage(void)
+static const ap_slotmem_provider_t *sharedmem_getstorage(void)
{
return (&storage);
}
@@ -674,7 +674,7 @@
static void ap_sharedmem_register_hook(apr_pool_t *p)
{
- const ap_slotmem_storage_method *storage = sharedmem_getstorage();
+ const ap_slotmem_provider_t *storage = sharedmem_getstorage();
ap_register_provider(p, AP_SLOTMEM_STORAGE, "shared", "0", storage);
ap_hook_post_config(post_config, NULL, NULL, APR_HOOK_LAST);
ap_hook_pre_config(pre_config, NULL, NULL, APR_HOOK_MIDDLE);
Modified: httpd/httpd/trunk/server/Makefile.in
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/Makefile.in?rev=775176&r1=775175&r2=775176&view=diff
==============================================================================
--- httpd/httpd/trunk/server/Makefile.in (original)
+++ httpd/httpd/trunk/server/Makefile.in Fri May 15 15:04:37 2009
@@ -13,7 +13,7 @@
util_charset.c util_cookies.c util_debug.c util_xml.c \
util_expr.c util_filter.c util_pcre.c exports.c \
scoreboard.c error_bucket.c protocol.c core.c request.c provider.c \
- eoc_bucket.c eor_bucket.c core_filters.c slotmem.c
+ eoc_bucket.c eor_bucket.c core_filters.c
TARGETS = delete-exports $(LTLIBRARY_NAME) $(CORE_IMPLIB_FILE) export_vars.h httpd.exp