Top |
gboolean | bd_init () |
gboolean | bd_ensure_init () |
gboolean | bd_try_init () |
gboolean | bd_reinit () |
gboolean | bd_try_reinit () |
gboolean | bd_is_initialized () |
GQuark | bd_init_error_quark () |
gboolean bd_init (BDPluginSpec **require_plugins
,BDUtilsLogFunc log_func
,GError **error
);
require_plugins |
|
[nullable][array zero-terminated=1] |
log_func |
logging function to use. |
[nullable][scope notified] |
error |
place to store error (if any). |
[out][optional] |
whether the library was successfully initialized with all the
required or default (see require_plugins
) plugins or not
Example of libblockdev initialization with 'fs' and 'lvm' plugins. Specific version of the lvm plugin is required:
1 2 3 4 5 6 |
GError *error = NULL; gboolean ret = FALSE; BDPluginSpec fs_plugin = {BD_PLUGIN_FS, NULL}; BDPluginSpec lvm_plugin = {BD_PLUGIN_LVM, "libbd_lvm.so.3"}; BDPluginSpec *plugins[] = {&fs_plugin, &lvm_plugin, NULL}; ret = bd_init (plugins, NULL, &error); |
gboolean bd_ensure_init (BDPluginSpec **require_plugins
,BDUtilsLogFunc log_func
,GError **error
);
Checks the state of the library and if it is uninitialized or not all the
require_plugins
plugins are available, tries to (re)initialize it. Otherwise
just returns early. The difference between:
1 2 |
if (!bd_is_initialized()) bd_init(None, None, &error); |
and this function is that this function does the check and init in an atomic way (holding the lock preventing other threads from doing changes in between).
require_plugins |
|
[nullable][array zero-terminated=1] |
log_func |
logging function to use. |
[nullable][scope notified] |
error |
place to store error (if any). |
[out][optional] |
gboolean bd_try_init (BDPluginSpec **request_plugins
,BDUtilsLogFunc log_func
,gchar ***loaded_plugin_names
,GError **error
);
request_plugins |
|
[nullable][array zero-terminated=1] |
log_func |
logging function to use. |
[nullable][scope notified] |
loaded_plugin_names |
names of the successfully loaded plugins. |
[optional][out][transfer container][array zero-terminated=1] |
error |
place to store error (if any). |
[out][optional] |
whether the library was successfully initialized with all the
required or default (see require_plugins
) plugins or not
*UNLIKE IN CASE OF bd_init()
AND bd_ensure_init()
, FAILURE TO LOAD A PLUGIN
IS NOT CONSIDERED ERROR*
gboolean bd_reinit (BDPluginSpec **require_plugins
,gboolean reload
,BDUtilsLogFunc log_func
,GError **error
);
require_plugins |
|
[nullable][array zero-terminated=1] |
reload |
whether to reload the already loaded plugins or not |
|
log_func |
logging function to use or |
[nullable][scope notified] |
error |
place to store error (if any). |
[out][optional] |
gboolean bd_try_reinit (BDPluginSpec **require_plugins
,gboolean reload
,BDUtilsLogFunc log_func
,gchar ***loaded_plugin_names
,GError **error
);
require_plugins |
|
[nullable][array zero-terminated=1] |
reload |
whether to reload the already loaded plugins or not |
|
log_func |
logging function to use or |
[nullable][scope notified] |
loaded_plugin_names |
names of the successfully loaded plugins. |
[optional][out][transfer container][array zero-terminated=1] |
error |
place to store error (if any). |
[out][optional] |
whether the library was successfully initialized or not
If reload
is TRUE
all the plugins are closed and reloaded otherwise only
the missing plugins are loaded.
*UNLIKE IN CASE OF bd_init()
AND bd_ensure_init()
, FAILURE TO LOAD A PLUGIN
IS NOT CONSIDERED ERROR*