dnl See Comment #Spoon
AC_CHECK_FUNCS( \
+getpwnam \
+getgrnam \
initgroups \
bindprocessor \
)
* @param ret The process id of the process that died
* @param p The pool to allocate out of
*/
+#ifdef AP_MPM_WANT_WAIT_OR_TIMEOUT
void ap_wait_or_timeout(apr_wait_t *status, apr_proc_t *ret, apr_pool_t *p);
+#endif
/**
* Log why a child died to the error log, if the child died without the
* @param pid The child that has died
* @param status The status returned from ap_wait_or_timeout
*/
+#ifdef AP_MPM_WANT_PROCESS_CHILD_STATUS
void ap_process_child_status(apr_proc_t *pid, apr_wait_t status);
+#endif
#if defined(TCP_NODELAY) && !defined(MPE) && !defined(TPF)
/**
* @deffunc uid_t ap_uname2id(const char *name)
*/
AP_DECLARE(uid_t) ap_uname2id(const char *name);
+
/**
* Convert a group name to a numeric ID
* @param name The name to convert
#define MPM_CHILD_PID(i) (ap_scoreboard_image->servers[0][i].tid)
#define MPM_NOTE_CHILD_KILLED(i) (MPM_CHILD_PID(i) = 0)
+#define AP_MPM_WANT_WAIT_OR_TIMEOUT
+#define AP_MPM_WANT_PROCESS_CHILD_STATUS
#define AP_MPM_WANT_SET_PIDFILE
#define AP_MPM_WANT_SET_SCOREBOARD
#define AP_MPM_WANT_SET_MAX_REQUESTS
#define MPM_NAME "Perchild"
+#define AP_MPM_WANT_WAIT_OR_TIMEOUT
+#define AP_MPM_WANT_PROCESS_CHILD_STATUS
#define AP_MPM_WANT_SET_PIDFILE
#define AP_MPM_WANT_SET_SCOREBOARD
#define AP_MPM_WANT_SET_LOCKFILE
#define MPM_NAME "Perchild"
+#define AP_MPM_WANT_WAIT_OR_TIMEOUT
+#define AP_MPM_WANT_PROCESS_CHILD_STATUS
#define AP_MPM_WANT_SET_PIDFILE
#define AP_MPM_WANT_SET_SCOREBOARD
#define AP_MPM_WANT_SET_LOCKFILE
#define MPM_NAME "Prefork"
+#define AP_MPM_WANT_WAIT_OR_TIMEOUT
+#define AP_MPM_WANT_PROCESS_CHILD_STATUS
#define AP_MPM_WANT_SET_PIDFILE
#define AP_MPM_WANT_SET_SCOREBOARD
#define AP_MPM_WANT_SET_LOCKFILE
#define MPM_NAME "Threaded"
+#define AP_MPM_WANT_WAIT_OR_TIMEOUT
+#define AP_MPM_WANT_PROCESS_CHILD_STATUS
#define AP_MPM_WANT_SET_PIDFILE
#define AP_MPM_WANT_SET_SCOREBOARD
#define AP_MPM_WANT_SET_LOCKFILE
#define MPM_NAME "Worker"
+#define AP_MPM_WANT_WAIT_OR_TIMEOUT
+#define AP_MPM_WANT_PROCESS_CHILD_STATUS
#define AP_MPM_WANT_SET_PIDFILE
#define AP_MPM_WANT_SET_SCOREBOARD
#define AP_MPM_WANT_SET_LOCKFILE
}
}
}
-#endif /* NEED_RECLAIM_CHILD_PROCESSES */
+#endif /* AP_MPM_NEEDS_RECLAIM_CHILD_PROCESSES */
+
+#ifdef AP_MPM_WANT_WAIT_OR_TIMEOUT
/* number of calls to wait_or_timeout between writable probes */
#ifndef INTERVAL_OF_WRITABLE_PROBES
ret->pid = -1;
return;
}
+#endif /* AP_MPM_WANT_WAIT_OR_TIMEOUT */
+#ifdef AP_MPM_WANT_PROCESS_CHILD_STATUS
void ap_process_child_status(apr_proc_t *pid, apr_wait_t status)
{
int signum = WTERMSIG(status);
}
}
}
+#endif /* AP_MPM_WANT_PROCESS_CHILD_STATUS */
#if defined(TCP_NODELAY) && !defined(MPE) && !defined(TPF)
void ap_sock_disable_nagle(apr_socket_t *s)
}
#endif
+#ifdef HAVE_GETPWNAM
AP_DECLARE(uid_t) ap_uname2id(const char *name)
{
struct passwd *ent;
}
return (ent->pw_uid);
}
+#endif
+#ifdef HAVE_GETGRNAM
AP_DECLARE(gid_t) ap_gname2id(const char *name)
{
struct group *ent;
}
return (ent->gr_gid);
}
+#endif
#ifndef HAVE_INITGROUPS
int initgroups(const char *name, gid_t basegid)