You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by fu...@apache.org on 2012/03/21 00:15:06 UTC

svn commit: r1303201 - in /httpd/httpd/trunk: CHANGES include/mpm_common.h include/scoreboard.h server/mpm_common.c server/mpm_unix.c server/scoreboard.c

Author: fuankg
Date: Tue Mar 20 23:15:05 2012
New Revision: 1303201

URL: http://svn.apache.org/viewvc?rev=1303201&view=rev
Log:
Revert r1294936 (Jeff's revert) and fix NetWare / Win32 build.
Added the missing AP_DECLARE* decorations for the function 
implementations and variables.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/include/mpm_common.h
    httpd/httpd/trunk/include/scoreboard.h
    httpd/httpd/trunk/server/mpm_common.c
    httpd/httpd/trunk/server/mpm_unix.c
    httpd/httpd/trunk/server/scoreboard.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1303201&r1=1303200&r2=1303201&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Tue Mar 20 23:15:05 2012
@@ -14,6 +14,8 @@ Changes with Apache 2.5.0
   *) core: Add filesystem paths to access denied / access failed messages
      AH00035 and AH00036. [Eric Covener]
 
+  *) Fix MPM DSO load failure on AIX.  [Jeff Trawick]
+
   *) core: Add the port number to the vhost's name in the scoreboard.
      [Stefan Fritsch]
 

Modified: httpd/httpd/trunk/include/mpm_common.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/mpm_common.h?rev=1303201&r1=1303200&r2=1303201&view=diff
==============================================================================
--- httpd/httpd/trunk/include/mpm_common.h (original)
+++ httpd/httpd/trunk/include/mpm_common.h Tue Mar 20 23:15:05 2012
@@ -89,6 +89,7 @@ extern "C" {
 typedef void ap_reclaim_callback_fn_t(int childnum, pid_t pid,
                                       ap_generation_t gen);
 
+#ifndef NETWARE
 /**
  * Make sure all child processes that have been spawned by the parent process
  * have died.  This includes process registered as "other_children".
@@ -102,8 +103,8 @@ typedef void ap_reclaim_callback_fn_t(in
  * in the scoreboard as well as those currently registered via
  * ap_register_extra_mpm_process().
  */
-void ap_reclaim_child_processes(int terminate,
-                                ap_reclaim_callback_fn_t *mpm_callback);
+AP_DECLARE(void) ap_reclaim_child_processes(int terminate,
+                                            ap_reclaim_callback_fn_t *mpm_callback);
 
 /**
  * Catch any child processes that have been spawned by the parent process
@@ -115,7 +116,7 @@ void ap_reclaim_child_processes(int term
  * in the scoreboard as well as those currently registered via
  * ap_register_extra_mpm_process().
  */
-void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback);
+AP_DECLARE(void) ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback);
 
 /**
  * Tell ap_reclaim_child_processes() and ap_relieve_child_processes() about
@@ -128,7 +129,7 @@ void ap_relieve_child_processes(ap_recla
  * ap_reclaim_child_processes(), remove it from the list of such processes
  * by calling ap_unregister_extra_mpm_process().
  */
-void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen);
+AP_DECLARE(void) ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen);
 
 /**
  * Unregister an MPM child process which was previously registered by a
@@ -138,12 +139,7 @@ void ap_register_extra_mpm_process(pid_t
  * @param old_gen Set to the server generation of the process, if found.
  * @return 1 if the process was found and removed, 0 otherwise
  */
-int ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen);
-
-/**
- * Pool cleanup for end-generation hook implementation
- */
-apr_status_t ap_mpm_end_gen_helper(void *unused);
+AP_DECLARE(int) ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen);
 
 /**
  * Safely signal an MPM child process, if the process is in the
@@ -154,7 +150,27 @@ apr_status_t ap_mpm_end_gen_helper(void 
  * APR_EINVAL is returned if passed either an invalid (< 1) pid, or if
  * the pid is not in the current process group
  */
-apr_status_t ap_mpm_safe_kill(pid_t pid, int sig);
+AP_DECLARE(apr_status_t) ap_mpm_safe_kill(pid_t pid, int sig);
+
+/**
+ * Log why a child died to the error log, if the child died without the
+ * parent signalling it.
+ * @param pid The child that has died
+ * @param why The return code of the child process
+ * @param status The status returned from ap_wait_or_timeout
+ * @return 0 on success, APEXIT_CHILDFATAL if MPM should terminate
+ */
+AP_DECLARE(int) ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status);
+
+AP_DECLARE(apr_status_t) ap_fatal_signal_setup(server_rec *s, apr_pool_t *pconf);
+AP_DECLARE(apr_status_t) ap_fatal_signal_child_setup(server_rec *s);
+#endif /* !NETWARE */
+
+/**
+ * Pool cleanup for end-generation hook implementation
+ * (core httpd function)
+ */
+apr_status_t ap_mpm_end_gen_helper(void *unused);
 
 /**
  * Run the monitor hook (once every ten calls), determine if any child
@@ -166,18 +182,9 @@ apr_status_t ap_mpm_safe_kill(pid_t pid,
  * @param p The pool to allocate out of
  * @param s The server_rec to pass
  */
-void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret,
-                        apr_pool_t *p, server_rec *s);
-
-/**
- * Log why a child died to the error log, if the child died without the
- * parent signalling it.
- * @param pid The child that has died
- * @param why The return code of the child process
- * @param status The status returned from ap_wait_or_timeout
- * @return 0 on success, APEXIT_CHILDFATAL if MPM should terminate
- */
-int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status);
+AP_DECLARE(void) ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode,
+                                    apr_proc_t *ret, apr_pool_t *p, 
+                                    server_rec *s);
 
 #if defined(TCP_NODELAY)
 /**
@@ -289,14 +296,14 @@ AP_DECLARE(const char *) ap_check_mpm(vo
  * The maximum number of requests each child thread or
  * process handles before dying off
  */
-extern int ap_max_requests_per_child;
+AP_DECLARE_DATA extern int ap_max_requests_per_child;
 const char *ap_mpm_set_max_requests(cmd_parms *cmd, void *dummy,
                                     const char *arg);
 
 /**
  * The filename used to store the process id.
  */
-extern const char *ap_pid_fname;
+AP_DECLARE_DATA extern const char *ap_pid_fname;
 const char *ap_mpm_set_pidfile(cmd_parms *cmd, void *dummy,
                                const char *arg);
 void ap_mpm_dump_pidfile(apr_pool_t *p, apr_file_t *out);
@@ -304,16 +311,16 @@ void ap_mpm_dump_pidfile(apr_pool_t *p, 
 /*
  * The directory that the server changes directory to dump core.
  */
-extern char ap_coredump_dir[MAX_STRING_LEN];
-extern int ap_coredumpdir_configured;
+AP_DECLARE_DATA extern char ap_coredump_dir[MAX_STRING_LEN];
+AP_DECLARE_DATA extern int ap_coredumpdir_configured;
 const char *ap_mpm_set_coredumpdir(cmd_parms *cmd, void *dummy,
                                    const char *arg);
 
 /**
  * Set the timeout period for a graceful shutdown.
  */
-extern int ap_graceful_shutdown_timeout;
-const char *ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy,
+AP_DECLARE_DATA extern int ap_graceful_shutdown_timeout;
+AP_DECLARE(const char *)ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy,
                                          const char *arg);
 #define AP_GRACEFUL_SHUTDOWN_TIMEOUT_COMMAND \
 AP_INIT_TAKE1("GracefulShutdownTimeout", ap_mpm_set_graceful_shutdown, NULL, \
@@ -324,17 +331,14 @@ AP_INIT_TAKE1("GracefulShutdownTimeout",
 int ap_signal_server(int *, apr_pool_t *);
 void ap_mpm_rewrite_args(process_rec *);
 
-extern AP_DECLARE_DATA apr_uint32_t ap_max_mem_free;
+AP_DECLARE_DATA extern apr_uint32_t ap_max_mem_free;
 extern const char *ap_mpm_set_max_mem_free(cmd_parms *cmd, void *dummy,
                                            const char *arg);
 
-extern apr_size_t ap_thread_stacksize;
+AP_DECLARE_DATA extern apr_size_t ap_thread_stacksize;
 extern const char *ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy,
                                                const char *arg);
 
-extern apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *pconf);
-extern apr_status_t ap_fatal_signal_child_setup(server_rec *s);
-
 /* core's implementation of child_status hook */
 extern void ap_core_child_status(server_rec *s, pid_t pid, ap_generation_t gen,
                                  int slot, mpm_child_status status);

Modified: httpd/httpd/trunk/include/scoreboard.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/include/scoreboard.h?rev=1303201&r1=1303200&r2=1303201&view=diff
==============================================================================
--- httpd/httpd/trunk/include/scoreboard.h (original)
+++ httpd/httpd/trunk/include/scoreboard.h Tue Mar 20 23:15:05 2012
@@ -156,14 +156,21 @@ typedef struct {
 
 typedef struct ap_sb_handle_t ap_sb_handle_t;
 
+/*
+ * Creation and deletion (internal)
+ */
+int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t);
+apr_status_t ap_cleanup_scoreboard(void *d);
+
+/*
+ * APIs for MPMs and other modules
+ */
 AP_DECLARE(int) ap_exists_scoreboard_image(void);
 AP_DECLARE(void) ap_increment_counts(ap_sb_handle_t *sbh, request_rec *r);
 
-int ap_create_scoreboard(apr_pool_t *p, ap_scoreboard_e t);
-apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached);
-void ap_init_scoreboard(void *shared_score);
+AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached);
+AP_DECLARE(void) ap_init_scoreboard(void *shared_score);
 AP_DECLARE(int) ap_calc_scoreboard_size(void);
-apr_status_t ap_cleanup_scoreboard(void *d);
 
 AP_DECLARE(void) ap_create_sb_handle(ap_sb_handle_t **new_sbh, apr_pool_t *p,
                                      int child_num, int thread_num);

Modified: httpd/httpd/trunk/server/mpm_common.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm_common.c?rev=1303201&r1=1303200&r2=1303201&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm_common.c (original)
+++ httpd/httpd/trunk/server/mpm_common.c Tue Mar 20 23:15:05 2012
@@ -139,13 +139,13 @@ static struct mpm_gen_info_head_t *genin
 static int gen_head_init; /* yuck */
 
 /* variables representing config directives implemented here */
-const char *ap_pid_fname;
-int ap_max_requests_per_child;
-char ap_coredump_dir[MAX_STRING_LEN];
-int ap_coredumpdir_configured;
-int ap_graceful_shutdown_timeout;
+AP_DECLARE_DATA const char *ap_pid_fname;
+AP_DECLARE_DATA int ap_max_requests_per_child;
+AP_DECLARE_DATA char ap_coredump_dir[MAX_STRING_LEN];
+AP_DECLARE_DATA int ap_coredumpdir_configured;
+AP_DECLARE_DATA int ap_graceful_shutdown_timeout;
 AP_DECLARE_DATA apr_uint32_t ap_max_mem_free;
-apr_size_t ap_thread_stacksize;
+AP_DECLARE_DATA apr_size_t ap_thread_stacksize;
 
 #define ALLOCATOR_MAX_FREE_DEFAULT (2048*1024)
 
@@ -170,8 +170,9 @@ void mpm_common_pre_config(apr_pool_t *p
 #endif
 static int wait_or_timeout_counter;
 
-void ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode, apr_proc_t *ret,
-                        apr_pool_t *p, server_rec *s)
+AP_DECLARE(void) ap_wait_or_timeout(apr_exit_why_e *status, int *exitcode,
+                                    apr_proc_t *ret, apr_pool_t *p,
+                                    server_rec *s)
 {
     apr_status_t rv;
 
@@ -356,8 +357,9 @@ const char *ap_mpm_set_coredumpdir(cmd_p
     return NULL;
 }
 
-const char * ap_mpm_set_graceful_shutdown(cmd_parms *cmd, void *dummy,
-                                          const char *arg)
+AP_DECLARE(const char *)ap_mpm_set_graceful_shutdown(cmd_parms *cmd,
+                                                     void *dummy,
+                                                     const char *arg)
 {
     const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
     if (err != NULL) {

Modified: httpd/httpd/trunk/server/mpm_unix.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm_unix.c?rev=1303201&r1=1303200&r2=1303201&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm_unix.c (original)
+++ httpd/httpd/trunk/server/mpm_unix.c Tue Mar 20 23:15:05 2012
@@ -73,7 +73,7 @@ typedef struct extra_process_t {
 
 static extra_process_t *extras;
 
-void ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen)
+AP_DECLARE(void) ap_register_extra_mpm_process(pid_t pid, ap_generation_t gen)
 {
     extra_process_t *p = (extra_process_t *)ap_malloc(sizeof(extra_process_t));
 
@@ -83,7 +83,7 @@ void ap_register_extra_mpm_process(pid_t
     extras = p;
 }
 
-int ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *gen)
+AP_DECLARE(int) ap_unregister_extra_mpm_process(pid_t pid, ap_generation_t *old_gen)
 {
     extra_process_t *cur = extras;
     extra_process_t *prev = NULL;
@@ -173,8 +173,8 @@ static int reclaim_one_pid(pid_t pid, ac
     return 0;
 }
 
-void ap_reclaim_child_processes(int terminate,
-                                ap_reclaim_callback_fn_t *mpm_callback)
+AP_DECLARE(void) ap_reclaim_child_processes(int terminate,
+                                            ap_reclaim_callback_fn_t *mpm_callback)
 {
     apr_time_t waittime = 1024 * 16;
     int i;
@@ -270,7 +270,7 @@ void ap_reclaim_child_processes(int term
              action_table[cur_action].action != GIVEUP);
 }
 
-void ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback)
+AP_DECLARE(void) ap_relieve_child_processes(ap_reclaim_callback_fn_t *mpm_callback)
 {
     int i;
     extra_process_t *cur_extra;
@@ -313,7 +313,7 @@ void ap_relieve_child_processes(ap_recla
  * the pid is a member of the current process group; either using
  * apr_proc_wait(), where waitpid() guarantees to fail for non-child
  * processes; or by using getpgid() directly, if available. */
-apr_status_t ap_mpm_safe_kill(pid_t pid, int sig)
+AP_DECLARE(apr_status_t) ap_mpm_safe_kill(pid_t pid, int sig)
 {
 #ifndef HAVE_GETPGID
     apr_proc_t proc;
@@ -368,7 +368,8 @@ apr_status_t ap_mpm_safe_kill(pid_t pid,
 }
 
 
-int ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why, int status)
+AP_DECLARE(int) ap_process_child_status(apr_proc_t *pid, apr_exit_why_e why,
+                                        int status)
 {
     int signum = status;
     const char *sigdesc;
@@ -869,13 +870,14 @@ static void sig_coredump(int sig)
      */
 }
 
-apr_status_t ap_fatal_signal_child_setup(server_rec *s)
+AP_DECLARE(apr_status_t) ap_fatal_signal_child_setup(server_rec *s)
 {
     my_pid = getpid();
     return APR_SUCCESS;
 }
 
-apr_status_t ap_fatal_signal_setup(server_rec *s, apr_pool_t *in_pconf)
+AP_DECLARE(apr_status_t) ap_fatal_signal_setup(server_rec *s,
+                                               apr_pool_t *pconf)
 {
 #ifndef NO_USE_SIGACTION
     struct sigaction sa;

Modified: httpd/httpd/trunk/server/scoreboard.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/scoreboard.c?rev=1303201&r1=1303200&r2=1303201&view=diff
==============================================================================
--- httpd/httpd/trunk/server/scoreboard.c (original)
+++ httpd/httpd/trunk/server/scoreboard.c Tue Mar 20 23:15:05 2012
@@ -143,7 +143,7 @@ AP_DECLARE(int) ap_calc_scoreboard_size(
     return scoreboard_size;
 }
 
-void ap_init_scoreboard(void *shared_score)
+AP_DECLARE(void) ap_init_scoreboard(void *shared_score)
 {
     char *more_storage;
     int i;
@@ -251,7 +251,8 @@ static apr_status_t open_scoreboard(apr_
 /* If detach is non-zero, this is a separate child process,
  * if zero, it is a forked child.
  */
-apr_status_t ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm, int detached)
+AP_DECLARE(apr_status_t) ap_reopen_scoreboard(apr_pool_t *p, apr_shm_t **shm,
+                                              int detached)
 {
 #if APR_HAS_SHARED_MEMORY
     if (!detached) {