Author: bnicholes Date: Wed Sep 21 15:17:35 2005 New Revision: 290849 URL: http://svn.apache.org/viewcvs?rev=290849&view=rev Log: Backport the apr_procattr_addrspace_set() API to allow a platform to specify which address space the process should be started in. Reviewed by: jjclar, bnicholes, trawick Modified: apr/apr/branches/0.9.x/include/apr_thread_proc.h apr/apr/branches/0.9.x/include/arch/netware/apr_arch_threadproc.h apr/apr/branches/0.9.x/threadproc/beos/proc.c apr/apr/branches/0.9.x/threadproc/netware/proc.c apr/apr/branches/0.9.x/threadproc/os2/proc.c apr/apr/branches/0.9.x/threadproc/unix/proc.c apr/apr/branches/0.9.x/threadproc/win32/proc.c Modified: apr/apr/branches/0.9.x/include/apr_thread_proc.h URL: http://svn.apache.org/viewcvs/apr/apr/branches/0.9.x/include/apr_thread_proc.h?rev=290849&r1=290848&r2=290849&view=diff ============================================================================== --- apr/apr/branches/0.9.x/include/apr_thread_proc.h (original) +++ apr/apr/branches/0.9.x/include/apr_thread_proc.h Wed Sep 21 15:17:35 2005 @@ -505,6 +505,16 @@ APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, apr_int32_t chk); +/** + * Determine if the child should start in its own address space or using the + * current one from its parent + * @param attr The procattr we care about. + * @param addrspace Should the child start in its own address space? Default + * is no on NetWare and yes on other platforms. + */ +APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, + apr_int32_t addrspace); + #if APR_HAS_FORK /** * This is currently the only non-portable call in APR. This executes Modified: apr/apr/branches/0.9.x/include/arch/netware/apr_arch_threadproc.h URL: http://svn.apache.org/viewcvs/apr/apr/branches/0.9.x/include/arch/netware/apr_arch_threadproc.h?rev=290849&r1=290848&r2=290849&view=diff ============================================================================== --- apr/apr/branches/0.9.x/include/arch/netware/apr_arch_threadproc.h (original) +++ apr/apr/branches/0.9.x/include/arch/netware/apr_arch_threadproc.h Wed Sep 21 15:17:35 2005 @@ -61,6 +61,7 @@ char *currdir; apr_int32_t cmdtype; apr_int32_t detached; + apr_int32_t addrspace; }; struct apr_thread_once_t { Modified: apr/apr/branches/0.9.x/threadproc/beos/proc.c URL: http://svn.apache.org/viewcvs/apr/apr/branches/0.9.x/threadproc/beos/proc.c?rev=290849&r1=290848&r2=290849&view=diff ============================================================================== --- apr/apr/branches/0.9.x/threadproc/beos/proc.c (original) +++ apr/apr/branches/0.9.x/threadproc/beos/proc.c Wed Sep 21 15:17:35 2005 @@ -177,6 +177,13 @@ return APR_SUCCESS; } +APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, + apr_int32_t addrspace) +{ + /* won't ever be used on this platform, so don't save the flag */ + return APR_SUCCESS; +} + APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, const char * const *args, const char * const *env, Modified: apr/apr/branches/0.9.x/threadproc/netware/proc.c URL: http://svn.apache.org/viewcvs/apr/apr/branches/0.9.x/threadproc/netware/proc.c?rev=290849&r1=290848&r2=290849&view=diff ============================================================================== --- apr/apr/branches/0.9.x/threadproc/netware/proc.c (original) +++ apr/apr/branches/0.9.x/threadproc/netware/proc.c Wed Sep 21 15:17:35 2005 @@ -174,9 +174,7 @@ APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, apr_cmdtype_e cmd) { - if ((cmd != APR_PROGRAM) && (cmd != APR_PROGRAM_ENV)) - return APR_ENOTIMPL; - attr->cmdtype = cmd; + /* won't ever be called on this platform, so don't save the flag */ return APR_SUCCESS; } @@ -268,6 +266,13 @@ return APR_SUCCESS; } +APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, + apr_int32_t addrspace) +{ + attr->addrspace = addrspace; + return APR_SUCCESS; +} + APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *newproc, const char *progname, const char * const *args, @@ -289,7 +294,7 @@ /* attr->detached and PROC_DETACHED do not mean the same thing. attr->detached means * start the NLM in a separate address space. PROC_DETACHED means don't wait for the * NLM to unload by calling wait() or waitpid(), just clean up */ - addr_space = PROC_LOAD_SILENT | ((attr->cmdtype == APR_PROGRAM_ENV) ? 0 : PROC_CURRENT_SPACE); + addr_space = PROC_LOAD_SILENT | (attr->addrspace ? 0 : PROC_CURRENT_SPACE); addr_space |= (attr->detached ? PROC_DETACHED : 0); if (attr->currdir) { Modified: apr/apr/branches/0.9.x/threadproc/os2/proc.c URL: http://svn.apache.org/viewcvs/apr/apr/branches/0.9.x/threadproc/os2/proc.c?rev=290849&r1=290848&r2=290849&view=diff ============================================================================== --- apr/apr/branches/0.9.x/threadproc/os2/proc.c (original) +++ apr/apr/branches/0.9.x/threadproc/os2/proc.c Wed Sep 21 15:17:35 2005 @@ -256,6 +256,13 @@ return APR_SUCCESS; } +APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, + apr_int32_t addrspace) +{ + /* won't ever be used on this platform, so don't save the flag */ + return APR_SUCCESS; +} + APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname, Modified: apr/apr/branches/0.9.x/threadproc/unix/proc.c URL: http://svn.apache.org/viewcvs/apr/apr/branches/0.9.x/threadproc/unix/proc.c?rev=290849&r1=290848&r2=290849&view=diff ============================================================================== --- apr/apr/branches/0.9.x/threadproc/unix/proc.c (original) +++ apr/apr/branches/0.9.x/threadproc/unix/proc.c Wed Sep 21 15:17:35 2005 @@ -277,6 +277,13 @@ return APR_SUCCESS; } +APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, + apr_int32_t addrspace) +{ + /* won't ever be used on this platform, so don't save the flag */ + return APR_SUCCESS; +} + APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, const char * const *args, Modified: apr/apr/branches/0.9.x/threadproc/win32/proc.c URL: http://svn.apache.org/viewcvs/apr/apr/branches/0.9.x/threadproc/win32/proc.c?rev=290849&r1=290848&r2=290849&view=diff ============================================================================== --- apr/apr/branches/0.9.x/threadproc/win32/proc.c (original) +++ apr/apr/branches/0.9.x/threadproc/win32/proc.c Wed Sep 21 15:17:35 2005 @@ -257,6 +257,13 @@ return APR_SUCCESS; } +APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, + apr_int32_t addrspace) +{ + /* won't ever be used on this platform, so don't save the flag */ + return APR_SUCCESS; +} + APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, const char * const *args,