mod_slotmem_shm.xml revision c52c5fc6d20d5e34bd27d970ee56b42ee3bbc3aa
<?xml version="1.0"?>
<!-- $LastChangedRevision$ -->
<!--
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
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.
-->
<modulesynopsis metafile="mod_slotmem_shm.xml.meta">
<name>mod_slotmem_shm</name>
<description>Slot-based shared memory provider.</description>
<status>Extension</status>
<identifier>mod_slotmem_shm_module</identifier>
<summary>
<p><code>mod_slotmem_shm</code> is a memory provider which
provides for creation and access to a shared memory segment
in which the datasets are organized in "slots."
</p>
<p>All shared memory is cleared and cleaned with each
restart, whether graceful or not. The data itself is
stored and restored within a file noted by the <code>name</code>
parameter in the <code>create</code> and <code>attach</code>
calls.
</p>
<p><code>mod_slotmem_shm</code> provides the following API functions:
</p>
<dl>
<dt>apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)</dt>
<dd>call the callback on all worker slots</dd>
<dt>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)</dt>
<dd>create a new slotmem with each item size is item_size. <code>name</code> is the filename for the persistent store of
the shared memory. Values are:
<dl>
<dt><code>"none"</code></dt>
<dd><code>Does not persist shared memory in file.</code></dd>
<dt><code>"file-name"</code></dt>
<dt><code>"/absolute-file-name"</code></dt>
<dd><code>$absolute-file-name</code></dd>
</dl></dd>
<dt>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)</dt>
<dd>attach to an existing slotmem. See <code>create</code> for description of <code>name</code> parameter.</dd>
<dt>apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void**mem)</dt>
<dd>get the direct pointer to the memory associated with this worker slot.</dd>
<dt>apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)</dt>
<dt>apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)</dt>
<dt>unsigned int num_slots(ap_slotmem_instance_t *s)</dt>
<dd>return the total number of slots in the segment</dd>
<dt>apr_size_t slot_size(ap_slotmem_instance_t *s)</dt>
<dd>return the total data size, in bytes, of a slot in the segment</dd>
<dt>apr_status_t grab(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
<dd>grab or allocate a slot and mark as in-use (does not do any data copying)</dd>
<dt>apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
<dd>release or free a slot and mark as not in-use (does not do any data copying)</dd>
</dl>
</summary>
</modulesynopsis>