Dynamic Object Handling

Overview

// typedefs

typedef struct apr_dso_handle_t apr_dso_handle_t;
typedef void* apr_dso_handle_sym_t;

// global functions

apr_status_t
apr_dso_load(
    apr_dso_handle_t** res_handle,
    const char* path,
    apr_pool_t* ctx
);

apr_status_t
apr_dso_unload(apr_dso_handle_t* handle);

apr_status_t
apr_dso_sym(
    apr_dso_handle_sym_t* ressym,
    apr_dso_handle_t* handle,
    const char* symname
);

const char*
apr_dso_error(
    apr_dso_handle_t* dso,
    char* buf,
    apr_size_t bufsize
);

Detailed Documentation

Typedefs

typedef struct apr_dso_handle_t apr_dso_handle_t

Structure for referencing dynamic objects

typedef void* apr_dso_handle_sym_t

Structure for referencing symbols from dynamic objects

Global Functions

apr_status_t
apr_dso_load(
    apr_dso_handle_t** res_handle,
    const char* path,
    apr_pool_t* ctx
)

Load a DSO library. Bug We aught to provide an alternative to RTLD_GLOBAL, which is the only supported method of loading DSOs today.

Parameters:

res_handle

Location to store new handle for the DSO.

path

Path to the DSO library

ctx

Pool to use.

apr_status_t
apr_dso_unload(apr_dso_handle_t* handle)

Close a DSO library.

Parameters:

handle

handle to close.

apr_status_t
apr_dso_sym(
    apr_dso_handle_sym_t* ressym,
    apr_dso_handle_t* handle,
    const char* symname
)

Load a symbol from a DSO handle.

Parameters:

ressym

Location to store the loaded symbol

handle

handle to load the symbol from.

symname

Name of the symbol to load.

const char*
apr_dso_error(
    apr_dso_handle_t* dso,
    char* buf,
    apr_size_t bufsize
)

Report more information when a DSO function fails.

Parameters:

dso

The dso handle that has been opened

buf

Location to store the dso error

bufsize

The size of the provided buffer