59#if APR_HAVE_SYS_TYPES_H
66#define HTML_HEADER "<html>\n<head>\n<title>Mod_example_IPC Status Page " \
67 "</title>\n</head>\n<body>\n<h1>Mod_example_IPC Status</h1>\n"
68#define HTML_FOOTER "</body>\n</html>\n"
75#define SLEEPYTIME 1000
146 "Failed to find temporary directory");
164 "Failed to create shared memory segment on file %s",
209 "Failed to reopen mutex %s in child",
269 "Child %ld failed to acquire lock",
277 "Child %ld failed to try and acquire lock",
307 ap_rprintf(
r,
"<p>Lock acquired after %ld microseoncds.</p>\n",
310 ap_rprintf(
r,
"<tr><td>Child pid:</td><td>%d</td></tr>\n",
312 ap_rprintf(
r,
"<tr><td>Counter:</td><td>%u</td></tr>\n",
313 (
unsigned int)
base->counter);
322 ap_rprintf(
r,
"<p>Child %d failed to acquire lock "
323 "after camping out for %d microseconds.</p>\n",
Symbol export macros and hook functions.
static apr_pool_t * pconf
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_handler(ap_HOOK_handler_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
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_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_mutex_register(apr_pool_t *pconf, const char *type, const char *default_dir, apr_lockmech_e default_mech, apr_int32_t options)
int ap_rprintf(request_rec *r, const char *fmt,...) __attribute__((format(printf
static APR_INLINE int ap_rputs(const char *str, request_rec *r)
#define APR_STATUS_IS_EBUSY(s)
#define APR_STATUS_IS_ENOTIMPL(s)
#define HTTP_INTERNAL_SERVER_ERROR
#define STANDARD20_MODULE_STUFF
static int exipc_handler(request_rec *r)
static void exipc_register_hooks(apr_pool_t *p)
static void exipc_child_init(apr_pool_t *p, server_rec *s)
apr_global_mutex_t * exipc_mutex
static int exipc_pre_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
static const char * exipc_mutex_type
static int exipc_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static apr_status_t shm_cleanup_wrapper(void *unused)
A structure that represents the current request.
const char * content_type
A structure to store information for each virtual server.
Apache Mutex support library.