28#define APR_WANT_STRFUNC
38#if AP_NEED_SET_MUTEX_PERMS
46#undef APLOG_MODULE_INDEX
47#define APLOG_MODULE_INDEX AP_CORE_MODULE_INDEX
77#if APR_HAS_FCNTL_SERIALIZE
82#if APR_HAS_FLOCK_SERIALIZE
87#if APR_HAS_POSIXSEM_SERIALIZE
101#if APR_HAS_SYSVSEM_SERIALIZE
106#if APR_HAS_PROC_PTHREAD_SERIALIZE
185 return "Mutex requires at least a mechanism argument ("
196 return apr_pstrcat(
p,
"Invalid Mutex directory in argument ",
225 const char *
type = *elt;
232 mxcfg->omit_pid = omit_pid;
238 "None is not allowed for mutex type %s",
268 mxcfg->options = options;
303 if (!
mxcfg->omit_pid) {
363 else if (
mxcfg->dir) {
377 "Invalid options were specified when creating the %s mutex",
384 "Can't create mutex of unknown type %s",
type);
391 "Couldn't create the %s mutex %s%s%s",
type,
392 fname ?
"(file " :
"",
397#ifdef AP_NEED_SET_MUTEX_PERMS
401 "Couldn't set permissions on the %s mutex; "
402 "check User and Group directives",
444#ifdef AP_NEED_SET_MUTEX_PERMS
491#ifdef AP_NEED_SET_MUTEX_PERMS
508 const char *
name, *
mech =
"<unknown>";
510 const char *
dir =
"";
522 switch (
mxcfg->mech) {
526#if APR_HAS_FCNTL_SERIALIZE
531#if APR_HAS_FLOCK_SERIALIZE
536#if APR_HAS_POSIXSEM_SERIALIZE
541#if APR_HAS_SYSVSEM_SERIALIZE
546#if APR_HAS_PROC_PTHREAD_SERIALIZE
559 mxcfg->omit_pid ?
"[OmitPid]" :
"");
Symbol export macros and hook functions.
#define AP_DECLARE_NONSTD(type)
APR general purpose library routines.
APR Standard Headers Support.
static apr_pool_t * pconf
char * ap_runtime_dir_relative(apr_pool_t *p, const char *fname)
apr_status_t ap_pool_cleanup_set_null(void *data)
char * ap_server_root_relative(apr_pool_t *p, const char *fname)
apr_status_t ap_global_mutex_create(apr_global_mutex_t **mutex, const char **name, const char *type, const char *instance_id, server_rec *s, apr_pool_t *p, apr_int32_t options)
#define AP_MUTEX_DEFAULT_NONE
apr_status_t ap_proc_mutex_create(apr_proc_mutex_t **mutex, const char **name, const char *type, const char *instance_id, server_rec *s, apr_pool_t *p, apr_int32_t options)
apr_status_t ap_parse_mutex(const char *arg, apr_pool_t *pool, apr_lockmech_e *mutexmech, const char **mutexfile)
#define AP_MUTEX_ALLOW_NONE
#define AP_ALL_AVAILABLE_MUTEXES_STRING
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)
void ap_dump_mutexes(apr_pool_t *p, server_rec *s, apr_file_t *out)
const char apr_lockmech_e mech
int ap_is_directory(apr_pool_t *p, const char *name)
char * ap_getword_conf(apr_pool_t *p, const char **line)
const char * ap_check_cmd_context(cmd_parms *cmd, unsigned forbidden)
const char int apr_pool_t * pool
const char apr_file_t * file
int strcasecmp(const char *a, const char *b)
#define APR_HASH_KEY_STRING
#define apr_pcalloc(p, size)
apr_int32_t apr_int32_t apr_int32_t err
A structure to store information for each virtual server.
static const char * get_mutex_filename(apr_pool_t *p, mutex_cfg_t *mxcfg, const char *type, const char *instance_id)
static void log_bad_create_options(server_rec *s, const char *type)
static void log_create_failure(apr_status_t rv, server_rec *s, const char *type, const char *fname)
static void log_unknown_type(server_rec *s, const char *type)
static mutex_cfg_t * mxcfg_lookup(apr_pool_t *p, const char *type)
static apr_hash_t * mxcfg_by_type
static int mutex_needs_file(apr_lockmech_e mech)
Apache Mutex support library.