blockdev library

blockdev library — a library for doing low-level operations with block devices

Synopsis

#include <blockdev.h>

#define             BD_INIT_ERROR
enum                BDInitError;
gboolean            bd_init                             (BDPluginSpec **require_plugins,
                                                         BDUtilsLogFunc log_func,
                                                         GError **error);
gboolean            bd_ensure_init                      (BDPluginSpec **require_plugins,
                                                         BDUtilsLogFunc log_func,
                                                         GError **error);
gboolean            bd_try_init                         (BDPluginSpec **request_plugins,
                                                         BDUtilsLogFunc log_func,
                                                         gchar ***loaded_plugin_names,
                                                         GError **error);
gboolean            bd_reinit                           (BDPluginSpec **require_plugins,
                                                         gboolean reload,
                                                         BDUtilsLogFunc log_func,
                                                         GError **error);
gboolean            bd_try_reinit                       (BDPluginSpec **require_plugins,
                                                         gboolean reload,
                                                         BDUtilsLogFunc log_func,
                                                         gchar ***loaded_plugin_names,
                                                         GError **error);
gboolean            bd_is_initialized                   ();
GQuark              bd_init_error_quark                 ();

Description

Details

BD_INIT_ERROR

#define BD_INIT_ERROR bd_init_error_quark ()

enum BDInitError

typedef enum {
    BD_INIT_ERROR_PLUGINS_FAILED,
    BD_INIT_ERROR_NOT_IMPLEMENTED,
} BDInitError;

BD_INIT_ERROR_PLUGINS_FAILED

BD_INIT_ERROR_NOT_IMPLEMENTED


bd_init ()

gboolean            bd_init                             (BDPluginSpec **require_plugins,
                                                         BDUtilsLogFunc log_func,
                                                         GError **error);

require_plugins :

NULL-terminated list of plugins that should be loaded (if no so_name is specified for the plugin, the default is used) or NULL to load all plugins. [allow-none][array zero-terminated=1]

log_func :

logging function to use. [allow-none][scope notified]

error :

place to store error (if any). [out]

Returns :

whether the library was successfully initialized with all the required or default (see require_plugins) plugins or not

bd_ensure_init ()

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:

<code> if (!bd_is_initialized()) bd_init(None, None, &error); </code>

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 :

NULL-terminated list of plugins that should be loaded (if no so_name is specified for the plugin, the default is used) or NULL to load all plugins. [allow-none][array zero-terminated=1]

log_func :

logging function to use. [allow-none][scope notified]

error :

place to store error (if any). [out]

Returns :

whether the library was successfully initialized with all the required or default (see require_plugins) plugins or not either before or by this call

bd_try_init ()

gboolean            bd_try_init                         (BDPluginSpec **request_plugins,
                                                         BDUtilsLogFunc log_func,
                                                         gchar ***loaded_plugin_names,
                                                         GError **error);

request_plugins :

NULL-terminated list of plugins that should be loaded (if no so_name is specified for the plugin, the default is used) or NULL to load all plugins. [allow-none][array zero-terminated=1]

log_func :

logging function to use. [allow-none][scope notified]

loaded_plugin_names :

names of the successfully loaded plugins. [allow-none][out][transfer container]

error :

place to store error (if any). [out]

Returns :

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*

bd_reinit ()

gboolean            bd_reinit                           (BDPluginSpec **require_plugins,
                                                         gboolean reload,
                                                         BDUtilsLogFunc log_func,
                                                         GError **error);

require_plugins :

NULL-terminated list of plugins that should be loaded (if no so_name is specified for the plugin, the default is used) or NULL to load all plugins. [allow-none][array zero-terminated=1]

reload :

whether to reload the already loaded plugins or not

log_func :

logging function to use or NULL to keep the old one. [allow-none][scope notified]

error :

place to store error (if any). [out]

Returns :

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.

bd_try_reinit ()

gboolean            bd_try_reinit                       (BDPluginSpec **require_plugins,
                                                         gboolean reload,
                                                         BDUtilsLogFunc log_func,
                                                         gchar ***loaded_plugin_names,
                                                         GError **error);

require_plugins :

NULL-terminated list of plugins that should be loaded (if no so_name is specified for the plugin, the default is used) or NULL to load all plugins. [allow-none][array zero-terminated=1]

reload :

whether to reload the already loaded plugins or not

log_func :

logging function to use or NULL to keep the old one. [allow-none][scope notified]

loaded_plugin_names :

names of the successfully loaded plugins. [allow-none][out][transfer container][array zero-terminated=1]

error :

place to store error (if any). [out]

Returns :

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*

bd_is_initialized ()

gboolean            bd_is_initialized                   ();

Returns :

whether the library is initialized or not The library is considered initialized if some of the *init*() functions was/were called and either at least one plugin is loaded or 0 plugins are loaded after an explicit call that requested 0 plugins to be loaded.

bd_init_error_quark ()

GQuark              bd_init_error_quark                 ();