Apache2
Collaboration diagram for Mutex Library:

Macros

#define AP_LIST_FLOCK_SERIALIZE   ", 'flock:/path/to/file'"
 
#define AP_LIST_FCNTL_SERIALIZE   ", 'fcntl:/path/to/file'"
 
#define AP_LIST_SYSVSEM_SERIALIZE   ", 'sysvsem'"
 
#define AP_LIST_POSIXSEM_SERIALIZE   ", 'posixsem'"
 
#define AP_LIST_PTHREAD_SERIALIZE   ", 'pthread'"
 
#define AP_LIST_FILE_SERIALIZE   ", 'file:/path/to/file'"
 
#define AP_LIST_SEM_SERIALIZE   ", 'sem'"
 
#define AP_ALL_AVAILABLE_MUTEXES_STRING
 
#define AP_AVAILABLE_MUTEXES_STRING
 
#define AP_MUTEX_ALLOW_NONE
 
#define AP_MUTEX_DEFAULT_NONE
 

Functions

apr_status_t ap_parse_mutex (const char *arg, apr_pool_t *pool, apr_lockmech_e *mutexmech, const char **mutexfile)
 
const char * ap_set_mutex (cmd_parms *cmd, void *dummy, const char *arg)
 
void ap_mutex_init (apr_pool_t *p)
 
apr_status_t ap_mutex_register (apr_pool_t *pconf, const char *type, const char *default_dir, apr_lockmech_e default_mech, apr_int32_t options)
 
apr_status_t ap_global_mutex_create (apr_global_mutex_t **mutex, const char **name, const char *type, const char *instance_id, server_rec *server, apr_pool_t *pool, apr_int32_t options)
 
apr_status_t ap_proc_mutex_create (apr_proc_mutex_t **mutex, const char **name, const char *type, const char *instance_id, server_rec *server, apr_pool_t *pool, apr_int32_t options)
 
void ap_dump_mutexes (apr_pool_t *p, server_rec *s, apr_file_t *out)
 

Detailed Description

Macro Definition Documentation

◆ AP_ALL_AVAILABLE_MUTEXES_STRING

#define AP_ALL_AVAILABLE_MUTEXES_STRING
Value:
"Mutex mechanisms are: 'none', 'default'" \
AP_LIST_FLOCK_SERIALIZE AP_LIST_FCNTL_SERIALIZE \
AP_LIST_FILE_SERIALIZE AP_LIST_PTHREAD_SERIALIZE \
AP_LIST_SYSVSEM_SERIALIZE AP_LIST_POSIXSEM_SERIALIZE \
AP_LIST_SEM_SERIALIZE

◆ AP_AVAILABLE_MUTEXES_STRING

#define AP_AVAILABLE_MUTEXES_STRING
Value:
"Mutex mechanisms are: 'default'" \
AP_LIST_FLOCK_SERIALIZE AP_LIST_FCNTL_SERIALIZE \
AP_LIST_FILE_SERIALIZE AP_LIST_PTHREAD_SERIALIZE \
AP_LIST_SYSVSEM_SERIALIZE AP_LIST_POSIXSEM_SERIALIZE \
AP_LIST_SEM_SERIALIZE

◆ AP_LIST_FCNTL_SERIALIZE

#define AP_LIST_FCNTL_SERIALIZE   ", 'fcntl:/path/to/file'"

◆ AP_LIST_FILE_SERIALIZE

#define AP_LIST_FILE_SERIALIZE   ", 'file:/path/to/file'"

◆ AP_LIST_FLOCK_SERIALIZE

#define AP_LIST_FLOCK_SERIALIZE   ", 'flock:/path/to/file'"

◆ AP_LIST_POSIXSEM_SERIALIZE

#define AP_LIST_POSIXSEM_SERIALIZE   ", 'posixsem'"

◆ AP_LIST_PTHREAD_SERIALIZE

#define AP_LIST_PTHREAD_SERIALIZE   ", 'pthread'"

◆ AP_LIST_SEM_SERIALIZE

#define AP_LIST_SEM_SERIALIZE   ", 'sem'"

◆ AP_LIST_SYSVSEM_SERIALIZE

#define AP_LIST_SYSVSEM_SERIALIZE   ", 'sysvsem'"

◆ AP_MUTEX_ALLOW_NONE

#define AP_MUTEX_ALLOW_NONE
Value:
1 /* allow "none" as mutex implementation;
* respected only on ap_mutex_register()
*/

option flags for ap_mutex_register(), ap_global_mutex_create(), and ap_proc_mutex_create()

◆ AP_MUTEX_DEFAULT_NONE

#define AP_MUTEX_DEFAULT_NONE
Value:
2 /* default to "none" for this mutex;
* respected only on ap_mutex_register()
*/

Function Documentation

◆ ap_dump_mutexes()

void ap_dump_mutexes ( apr_pool_t p,
server_rec s,
apr_file_t out 
)

◆ ap_global_mutex_create()

apr_status_t ap_global_mutex_create ( apr_global_mutex_t **  mutex,
const char **  name,
const char *  type,
const char *  instance_id,
server_rec server,
apr_pool_t pool,
apr_int32_t  options 
)

Create an APR global mutex that has been registered previously with ap_mutex_register(). Mutex files, permissions, and error logging will be handled internally.

Parameters
mutexThe memory address where the newly created mutex will be stored. If this mutex is disabled, mutex will be set to NULL on output. (That is allowed only if the AP_MUTEX_ALLOW_NONE flag is passed to ap_mutex_register().)
nameThe generated filename of the created mutex, or NULL if no file was created. Pass NULL if this result is not needed.
typeThe type name of the mutex, matching the type name passed to ap_mutex_register().
instance_idA unique string to be used in the lock filename IFF this mutex type is multi-instance, NULL otherwise.
serverserver_rec of main server
poolpool lifetime of the mutex
optionscombination of AP_MUTEX_* constants, or 0 for defaults (currently none are defined for this function)

◆ ap_mutex_init()

void ap_mutex_init ( apr_pool_t p)

◆ ap_mutex_register()

apr_status_t ap_mutex_register ( apr_pool_t pconf,
const char *  type,
const char *  default_dir,
apr_lockmech_e  default_mech,
apr_int32_t  options 
)

Register a module's mutex type with core to allow configuration with the Mutex directive. This must be called in the pre_config hook; otherwise, configuration directives referencing this mutex type will be rejected.

The default_dir and default_mech parameters allow a module to set defaults for the lock file directory and mechanism. These could be based on compile-time settings. These aren't required except in special circumstances.

The order of precedence for the choice of mechanism and lock file directory is:

  1. Mutex directive specifically for this mutex e.g., Mutex mpm-default flock:/tmp/mpmlocks
  2. Mutex directive for global default e.g., Mutex default flock:/tmp/httpdlocks
  3. Defaults for this mutex provided on the ap_mutex_register()
  4. Built-in defaults for all mutexes, which are APR_LOCK_DEFAULT and DEFAULT_REL_RUNTIMEDIR.
Parameters
pconfThe pconf pool
typeThe type name of the mutex, used as the basename of the file associated with the mutex, if any. This must be unique among all mutex types (mutex creation accommodates multi-instance mutex types); mod_foo might have mutex types "foo-pipe" and "foo-shm"
default_dirDefault dir for any lock file required for this lock, to override built-in defaults; should be NULL for most modules, to respect built-in defaults
default_mechDefault mechanism for this lock, to override built-in defaults; should be APR_LOCK_DEFAULT for most modules, to respect built-in defaults or NULL if there are no defaults for this mutex.
optionscombination of AP_MUTEX_* constants, or 0 for defaults

◆ ap_parse_mutex()

apr_status_t ap_parse_mutex ( const char *  arg,
apr_pool_t pool,
apr_lockmech_e mutexmech,
const char **  mutexfile 
)

Get Mutex config data and parse it

Parameters
argThe mutex config string
poolThe allocation pool
mutexmechThe APR mutex locking mechanism
mutexfileThe lockfile to use as required
Returns
APR status code

◆ ap_proc_mutex_create()

apr_status_t ap_proc_mutex_create ( apr_proc_mutex_t **  mutex,
const char **  name,
const char *  type,
const char *  instance_id,
server_rec server,
apr_pool_t pool,
apr_int32_t  options 
)

Create an APR proc mutex that has been registered previously with ap_mutex_register(). Mutex files, permissions, and error logging will be handled internally.

Parameters
mutexThe memory address where the newly created mutex will be stored. If this mutex is disabled, mutex will be set to NULL on output. (That is allowed only if the AP_MUTEX_ALLOW_NONE flag is passed to ap_mutex_register().)
nameThe generated filename of the created mutex, or NULL if no file was created. Pass NULL if this result is not needed.
typeThe type name of the mutex, matching the type name passed to ap_mutex_register().
instance_idA unique string to be used in the lock filename IFF this mutex type is multi-instance, NULL otherwise.
serverserver_rec of main server
poolpool lifetime of the mutex
optionscombination of AP_MUTEX_* constants, or 0 for defaults (currently none are defined for this function)

◆ ap_set_mutex()

const char* ap_set_mutex ( cmd_parms cmd,
void *  dummy,
const char *  arg 
)