erl_ddll(3)

MODULE
erl_ddll - Dynamic Driver Loader and Linker

DESCRIPTION

The erl_ddll module can load and link a linked-in driver, if run-time loading and linking of shared objects, or dynamic libraries, is supported by the underlying operating system.

EXPORTS

load_driver(Path, Name) -> ok | {error, ErrorDesc}

    Types
        Path = Name = string() | atom()
        ErrorDesc = term()

    Loads and links the dynamic driver Name. Path is a file path to the directory containing the driver. Name must be a sharable object/dynamic library. Two drivers with different Paths cannot be loaded under the same name. The number of dynamically loadable drivers is limited by the size of driver_tab in driver_tab.c.

unload_driver(Name) -> ok | {error, ErrorDesc}

    Types
        Name = string() | atom()
        Reason = term()

    Unloads the dynamic driver Name. This will fail if any port programs are running the code that is being unloaded. Linked-in drivers cannot be unloaded. The process must previously have called load_driver/1 for the driver.

    There is no guarantee that the memory where the driver was loaded is freed. This depends on the underlying operating system.

loaded_drivers() -> {ok, Drivers}

    Types
        Drivers = [Driver()]
        Driver = string()

    Returns a list of all the available drivers, both (statically) linked-in and dynamically loaded ones.

format_error(ErrorDesc) -> string()

    Types
        ErrorDesc -- see below

    Takes an ErrorDesc returned by load_driver/2 or unload_driver/1 and returns a string which describes the error or warning.

SEE ALSO

erl_driver(4), driver_entry(4)

AUTHORS
Jan-Erik Dahlin - support@erlang.ericsson.se
Jakob Cederlund - support@erlang.ericsson.se