How is this different from apr_dso_unload?

Ryan

On Mon, 9 Apr 2001, Doug MacEachern wrote:

> mod_perl needs to close the handle for each Perl extension .so loaded by
> Perl modules.   in 1.x we could call:
> ap_os_dso_unload(handle);
>
> where handle is the same value returned by dlopen() or similar.
> Perl's abstraction is not an option since you need to call a Perl function
> to use it, and we cannot close these handles until the interpreter is
> destroyed.
>
> something like the following for each $os/dso.c would do the trick.
> i will implement the patch if there are no objections, otherwise it will
> really suck to duplicate this functionality that is currently private in
> apr.
>
> Index: srclib/apr/dso/unix/dso.c
> ===================================================================
> RCS file: /home/cvs/apr/dso/unix/dso.c,v
> retrieving revision 1.33
> diff -u -r1.33 dso.c
> --- srclib/apr/dso/unix/dso.c 2001/02/16 21:04:17     1.33
> +++ srclib/apr/dso/unix/dso.c 2001/04/10 00:08:52
> @@ -64,19 +64,30 @@
>  #include <string.h> /* for strerror() on HP-UX */
>  #endif
>
> +APR_DECLARE(apr_status_t) apr_dso_handle_close(void *handle)
> +{
> +#if defined(HPUX) || defined(HPUX10) || defined(HPUX11)
> +    shl_unload((shl_t)dso->handle);
> +#else
> +    if (dlclose(handle) != 0) {
> +        return APR_EINIT;
> +    }
> +#endif
> +    return APR_SUCCESS;
> +}
> +
>  static apr_status_t dso_cleanup(void *thedso)
>  {
> +    apr_status_t status;
>      apr_dso_handle_t *dso = thedso;
>
>      if (dso->handle == NULL)
>          return APR_SUCCESS;
>
> -#if defined(HPUX) || defined(HPUX10) || defined(HPUX11)
> -    shl_unload((shl_t)dso->handle);
> -#else
> -    if (dlclose(dso->handle) != 0)
> -        return APR_EINIT;
> -#endif
> +    if ((status = apr_dso_handle_close(dso->handle)) != APR_SUCCESS) {
> +        return status;
> +    }
> +
>      dso->handle = NULL;
>
>      return APR_SUCCESS;
>
>


_______________________________________________________________________________
Ryan Bloom                              [EMAIL PROTECTED]
406 29th St.
San Francisco, CA 94131
-------------------------------------------------------------------------------

Reply via email to