60 static void master_status_event(
int event, 
void *context)
 
   62     const char *myname = 
"master_status_event";
 
   81     switch (n = read(serv->
status_fd[0], (
void *) &stat, 
sizeof(stat))) {
 
   92     msg_warn(
"service %s(%s): child (pid %d) sent partial status update (%d bytes)",
 
   99         msg_info(
"%s: pid %d gen %u avail %d",
 
  111                     (
void *) &pid, 
sizeof(pid))) == 0) {
 
  113         msg_info(
"%s: process id not found: %d", myname, stat.
pid);
 
  116     if (proc->
gen != stat.
gen) {
 
  117     msg_info(
"ignoring status update from child pid %d generation %u",
 
  121     if (proc->
serv != serv)
 
  122     msg_panic(
"%s: pointer corruption: %p != %p",
 
  123           myname, (
void *) proc->
serv, (
void *) serv);
 
  133     switch (stat.
avail) {
 
  142     msg_warn(
"%s: ignoring unknown status: %d allegedly from pid: %d",
 
  152     const char *myname = 
"master_status_init";
 
  158     msg_panic(
"%s: status events already enabled", myname);
 
  179     const char *myname = 
"master_status_cleanup";
 
  185     msg_panic(
"%s: status events not enabled", myname);
 
  194     msg_warn(
"%s: close status descriptor (read side): %m", myname);
 
  196     msg_warn(
"%s: close status descriptor (write side): %m", myname);
 
void event_enable_read(int fd, EVENT_NOTIFY_RDWR_FN callback, void *context)
 
NORETURN msg_panic(const char *fmt,...)
 
void master_status_init(MASTER_SERV *serv)
 
struct BINHASH * master_child_table
 
void master_avail_less(MASTER_SERV *, MASTER_PROC *)
 
void master_avail_more(MASTER_SERV *, MASTER_PROC *)
 
#define MASTER_STAT_AVAIL
 
#define MASTER_STAT_TAKEN
 
void master_status_cleanup(MASTER_SERV *serv)
 
void msg_warn(const char *fmt,...)
 
NORETURN msg_fatal(const char *fmt,...)
 
int duplex_pipe(int *fds)
 
int non_blocking(int, int)
 
void event_disable_readwrite(int fd)
 
int close_on_exec(int fd, int on)
 
void * binhash_find(BINHASH *table, const void *key, ssize_t key_len)
 
void msg_info(const char *fmt,...)