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
--- /dev/null
+/* 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 */
+};
--- /dev/null
+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