29#define AP_WATCHDOG_PGROUP "watchdog"
30#define AP_WATCHDOG_PVERSION "parent"
31#define AP_WATCHDOG_CVERSION "child"
169 APLOGNO(02972)
"%sWatchdog (%s) running",
258 APLOGNO(02973)
"%sWatchdog (%s) stopping",
335 c->interval = interval;
366 c->interval = interval;
429 const char *
pk =
"watchdog_init_module_tag";
446 "Watchdog: Running with WatchdogInterval %"
455 "Watchdog: found parent providers.");
463 "Watchdog: Looking for parent (%s).",
wn[
i].provider_name);
481 "Watchdog: Failed to create parent worker thread.");
485 "Watchdog: Created parent worker thread (%s).", w->
name);
493 "Spawned %d parent worker threads.",
501 "Watchdog: found child providers.");
509 "Watchdog: Looking for child (%s).",
wn[
i].provider_name);
531 "Watchdog: Failed to create singleton mutex.");
535 "Watchdog: Created singleton mutex (%s).", w->
name);
560 "Watchdog: nothing configured?");
578 "Watchdog: Failed to create child worker thread.");
583 "Watchdog: Created child worker thread (%s).",
wn[
i].provider_name);
605 return "Unparse-able WatchdogInterval setting";
607 return apr_psprintf(
cmd->pool,
"Invalid WatchdogInterval: minimal value %"
626 "Watchdog interval in seconds"
643 static const char *
const after_mpm[] = {
"mpm_winnt.c",
NULL};
701 int parent,
int singleton),
Apache Multi-Processing Module library.
void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val)
apr_uint32_t apr_atomic_read32(volatile apr_uint32_t *mem)
static apr_pool_t * pconf
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
void ap_hook_post_config(ap_HOOK_post_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define AP_DECLARE_MODULE(foo)
void ap_hook_pre_config(ap_HOOK_pre_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_child_init(ap_HOOK_child_init_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define AP_SQ_MS_CREATE_PRE_CONFIG
int ap_state_query(int query_code)
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)
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_array_header_t * ap_list_provider_names(apr_pool_t *pool, const char *provider_group, const char *provider_version)
apr_status_t ap_register_provider(apr_pool_t *pool, const char *provider_group, const char *provider_name, const char *provider_version, const void *provider)
void * ap_lookup_provider(const char *provider_group, const char *provider_name, const char *provider_version)
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns, link, ret, name, args_decl, args_use, decline)
#define APR_HOOK_LINK(name)
#define APR_HOOK_STRUCT(members)
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ns, link, ret, name, args_decl, args_use, ok, decline)
#define APR_REGISTER_OPTIONAL_FN(name)
int ap_run_watchdog_init(server_rec *s, const char *name, apr_pool_t *pool)
#define AP_WATCHDOG_STATE_STARTING
#define AP_WATCHDOG_STATE_STOPPING
int ap_run_watchdog_need(server_rec *s, const char *name, int parent, int singleton)
int ap_run_watchdog_step(server_rec *s, const char *name, apr_pool_t *pool)
#define AP_WATCHDOG_STATE_RUNNING
#define AP_WD_TM_INTERVAL
#define AP_WATCHDOG_SINGLETON
#define AP_WATCHDOG_DEFAULT
int ap_run_watchdog_exit(server_rec *s, const char *name, apr_pool_t *pool)
apr_status_t ap_watchdog_callback_fn_t(int state, void *data, apr_pool_t *pool)
#define STANDARD20_MODULE_STUFF
apr_status_t ap_timeout_parameter_parse(const char *timeout_parameter, apr_interval_time_t *timeout, const char *default_time_unit)
const char * ap_check_cmd_context(cmd_parms *cmd, unsigned forbidden)
const char int apr_pool_t * pool
apr_vformatter_buff_t * c
apr_vformatter_buff_t const char va_list ap
#define apr_pool_create(newpool, parent)
#define apr_pcalloc(p, size)
#define apr_time_as_msec(time)
apr_int64_t apr_interval_time_t
apr_status_t ap_mpm_query(int query_code, int *result)
#define AP_MPMQ_IS_FORKED
#define AP_MPMQ_MPM_STATE
#define AP_MPMQ_NOT_SUPPORTED
static ap_watchdog_t * watchdog
static void *APR_THREAD_FUNC wd_worker(apr_thread_t *thread, void *data)
static apr_status_t ap_watchdog_register_callback(ap_watchdog_t *w, apr_interval_time_t interval, const void *data, ap_watchdog_callback_fn_t *callback)
static int wd_post_config_hook(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static apr_status_t ap_watchdog_get_instance(ap_watchdog_t **watchdog, const char *name, int parent, int singleton, apr_pool_t *p)
static const command_rec wd_directives[]
static apr_status_t ap_watchdog_set_callback_interval(ap_watchdog_t *w, apr_interval_time_t interval, const void *data, ap_watchdog_callback_fn_t *callback)
static const char * wd_cmd_watchdog_int(cmd_parms *cmd, void *dummy, const char *arg)
static const char * wd_proc_mutex_type
static void wd_child_init_hook(apr_pool_t *p, server_rec *s)
static apr_status_t wd_startup(ap_watchdog_t *w, apr_pool_t *p)
#define AP_WATCHDOG_CVERSION
static int wd_pre_config_hook(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
static apr_interval_time_t wd_interval
static wd_server_conf_t * wd_server_conf
#define AP_WATCHDOG_PGROUP
static void wd_register_hooks(apr_pool_t *p)
#define AP_WATCHDOG_PVERSION
static apr_status_t wd_worker_cleanup(void *data)
Watchdog module for Apache.
apr_status_t apr_thread_exit(apr_thread_t *thd, apr_status_t retval)
apr_status_t apr_thread_join(apr_status_t *retval, apr_thread_t *thd)
apr_uint32_t thread_started
watchdog_list_t * callbacks
A structure to store information for each virtual server.
ap_watchdog_callback_fn_t * callback_fn
apr_interval_time_t interval
struct watchdog_list_t * next
Apache Mutex support library.