2.1. Driver Capabilities

Driver capabilities are essentially an array of key/value pairs which the drivers set when they're loaded. Both the libdbi framework and programs linked against libdbi can query these capabilities and adjust their behaviour accordingly.

2.1.1. Setting driver capabilities

The perfect place to set driver capabilities is in the dbd_initialize function which is called right after the driver is loaded by libdbi. To set capabilities, call the _dbd_register_driver_cap function for each of them:

void _dbd_register_driver_cap(dbi_driver_t *driver, const char *capname, int value);

Arguments

driver: the driver as passed to dbd_initialize.

capname: A string containing the name of the capability (i.e. the key).

value: The value of the capability.

2.1.2. Required driver capabilities

libdbi currently queries only one driver capability.

safe_dlclose

A nonzero value indicates that the driver can safely be unloaded from memory by calling dlclose(). A value of 0 (zero) indicates that the driver should not be unloaded when libdbi is shut down. Drivers must not be unloaded if they, or any library they are linked against, install exit handlers via atexit() as this would leave dangling pointers, causing segfaults on some platforms.