From: Jim Jagielski Date: Tue, 30 Dec 2008 17:07:25 +0000 (+0000) Subject: Start of further refactoring.... X-Git-Tag: 2.3.1~43 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f87a4e7f4bd8b6392e0c1646f941c2001e92f83;p=apache Start of further refactoring.... git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@730180 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/mem/config5.m4 b/modules/mem/config5.m4 index 7e17092667..aa1e99d5c5 100644 --- a/modules/mem/config5.m4 +++ b/modules/mem/config5.m4 @@ -3,12 +3,19 @@ dnl modules enabled in this directory by default dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config]]]]) APACHE_MODPATH_INIT(mem) +if test "$enable_slotmem" = "shared"; then + slotmem_mods_enable=shared +elif test "$enable_slotmem" = "yes"; then + slotmem_mods_enable=yes +else + slotmem_mods_enable=no +fi -sharedmem_objs="mod_sharedmem.lo" -APACHE_MODULE(sharedmem, memslot provider that uses shared memory, $sharedmem_objs, , most) -APACHE_MODULE(plainmem, memslot provider that uses plain memory, , , no) +slotmem_objs="mod_slotmem.lo" -# Ensure that other modules can pick up slotmem.h +APACHE_MODULE(slotmem, slot-based memory API using providers, $slotmem_objs, , most) + +# Ensure that other modules can pick up mod_slotmem.h APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current]) APACHE_MODPATH_FINISH diff --git a/modules/mem/mod_slotmem.c b/modules/mem/mod_slotmem.c new file mode 100644 index 0000000000..ea39ebea60 --- /dev/null +++ b/modules/mem/mod_slotmem.c @@ -0,0 +1,79 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Memory handler for a plain memory divided in slot. + * This one uses plain memory. + */ + +#include "mod_slotmem.h" + +AP_DECLARE(ap_slotmem_storage_method *) ap_slotmem_method(const char *provider) +{ + return (ap_lookup_provider(SLOTMEM_STORAGE, provider, "0")); +} + +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) +{ + return (sm->slotmem_do(s, func, data, pool)); +} + +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, int item_num, + apr_pool_t *pool) +{ + return (sm->slotmem_create(new, name, item_size, item_num, pool)); +} + +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, int *item_num, + apr_pool_t *pool) +{ + return (sm->slotmem_attach(new, name, item_size, item_num, pool)); +} + +AP_DECLARE(apr_status_t) ap_slotmem_mem(ap_slotmem_storage_method *sm, + ap_slotmem_t *s, int item_id, void**mem) +{ + return (sm->slotmem_mem(s, item_id, mem)); +} + +AP_DECLARE(apr_status_t) ap_slotmem_lock(ap_slotmem_storage_method *sm, + ap_slotmem_t *s) +{ + return (sm->slotmem_lock(s)); +} + +AP_DECLARE(apr_status_t) ap_slotmem_unlock(ap_slotmem_storage_method *sm, + ap_slotmem_t *s) +{ + return (sm->slotmem_unlock(s)); +} + + +module AP_MODULE_DECLARE_DATA slotmem_module = { + STANDARD20_MODULE_STUFF, + NULL, /* create per-directory config structure */ + NULL, /* merge per-directory config structures */ + NULL, /* create per-server config structure */ + NULL, /* merge per-server config structures */ + NULL, /* command apr_table_t */ + NULL /* register hooks */ +}; diff --git a/modules/mem/slotmem.h b/modules/mem/mod_slotmem.h similarity index 100% rename from modules/mem/slotmem.h rename to modules/mem/mod_slotmem.h diff --git a/modules/mem/providers/Makefile.in b/modules/mem/providers/Makefile.in new file mode 100644 index 0000000000..7c5c149d85 --- /dev/null +++ b/modules/mem/providers/Makefile.in @@ -0,0 +1,3 @@ +# a modules Makefile has no explicit targets -- they will be defined by +# whatever modules are enabled. just grab special.mk to deal with this. +include $(top_srcdir)/build/special.mk diff --git a/modules/mem/providers/config6.m4 b/modules/mem/providers/config6.m4 new file mode 100644 index 0000000000..cabe2ee993 --- /dev/null +++ b/modules/mem/providers/config6.m4 @@ -0,0 +1,14 @@ +dnl modules enabled in this directory by default + +dnl APACHE_MODULE(name, helptext[, objects[, structname[, default[, config]]]]) + +APACHE_MODPATH_INIT(mem/providers) + +sharedmem_objs="mod_sharedmem.lo" +APACHE_MODULE(sharedmem, memslot provider that uses shared memory, $sharedmem_objs, , $slotmem_mods_enable) +APACHE_MODULE(plainmem, memslot provider that uses plain memory, , , no) + +# Ensure that other modules can pick up slotmem.h +APR_ADDTO(INCLUDES, [-I\$(top_srcdir)/$modpath_current]) + +APACHE_MODPATH_FINISH diff --git a/modules/mem/mod_plainmem.c b/modules/mem/providers/mod_plainmem.c similarity index 100% rename from modules/mem/mod_plainmem.c rename to modules/mem/providers/mod_plainmem.c diff --git a/modules/mem/mod_sharedmem.c b/modules/mem/providers/mod_sharedmem.c similarity index 100% rename from modules/mem/mod_sharedmem.c rename to modules/mem/providers/mod_sharedmem.c