mod_slotmem_plain
is a memory provider which
provides for creation and access to a plain memory segment
in which the datasets are organized in "slots."
If the memory needs to be shared between threads and
processes, a better provider would be
mod_slotmem_shm.
mod_slotmem_plain
provides the following API functions:
- apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
- call the callback on all worker slots
- 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)
- create a new slotmem with each item size is item_size.
- 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)
- attach to an existing slotmem.
- apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void**mem)
- get the direct pointer to the memory associated with this worker slot.
- apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)
- get/read the memory from this slot to dest
- apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)
- put/write the data from src to this slot
- unsigned int num_slots(ap_slotmem_instance_t *s)
- return the total number of slots in the segment
- apr_size_t slot_size(ap_slotmem_instance_t *s)
- return the total data size, in bytes, of a slot in the segment
- apr_status_t grab(ap_slotmem_instance_t *s, unsigned int item_id);
- grab or allocate a slot and mark as in-use (does not do any data copying)
- apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id);
- release or free a slot and mark as not in-use (does not do any data copying)