Apache HTTP Server Version 2.5

Apache > HTTP Server > Documentation > Version 2.5 > Modules

# Apache Module mod_slotmem_plain

Description: | Slot-based shared memory provider.
Status: | Extension
Module Identifier: | slotmem_plain_module
Source File: | mod_slotmem_plain.c

### Summary

`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:

    /* call the callback on all worker slots */
    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 */
    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 */
    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 direct pointer to the memory associated with this worker slot */
    apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void **mem)

    /* get/read the memory from this slot to dest */
    apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)

    /* put/write the data from src to this slot */
    apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)

    /* return the total number of slots in the segment */
    unsigned int num_slots(ap_slotmem_instance_t *s)

    /* return the total data size, in bytes, of a slot in the segment */
    apr_size_t slot_size(ap_slotmem_instance_t *s)

    /* grab or allocate the first free slot and mark as in-use (does not do any data copying) */
    apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id)

    /* forced grab or allocate the specified slot and mark as in-use (does not do any data copying) */
    apr_status_t fgrab(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) */
    apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id)

### Directives

This module provides no directives.

### Bugfix checklist

- httpd changelog
- Known issues
- Report a bug