Eina_Module_Group

Langue: en

Version: 381004 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Module -

Eina module provides some helpers over POSIX dlopen().

Defines


#define EINA_MODULE_INIT(f) EAPI Eina_Module_Init __eina_module_init = &f
declares the given function as the module initializer (__eina_module_init).
#define EINA_MODULE_SHUTDOWN(f) EAPI Eina_Module_Shutdown __eina_module_shutdown = &f
declares the given function as the module shutdownializer (__eina_module_shutdown).

Typedefs


typedef struct _Eina_Module Eina_Module
Dynamic module loader handle.
typedef Eina_Bool(* Eina_Module_Cb )(Eina_Module *m, void *data)

typedef Eina_Bool(* Eina_Module_Init )(void)
If a function with such signature is exported by module as __eina_module_init, it will be called on the first load after dlopen() and if EINA_FALSE is returned, load will fail, EINA_TRUE means the module was successfully initialized.
typedef void(* Eina_Module_Shutdown )(void)
If a function with such signature is exported by module as __eina_module_shutdown, it will be called before calling dlclose().

Functions


EAPI Eina_Module * eina_module_new (const char *file)
Return a new module.
EAPI Eina_Bool eina_module_free (Eina_Module *m)
Delete a module.
EAPI Eina_Bool eina_module_load (Eina_Module *m)
Load a module.
EAPI Eina_Bool eina_module_unload (Eina_Module *m)
Unload a module.
EAPI void * eina_module_symbol_get (const Eina_Module *m, const char *symbol)
Retrive the data associated to a symbol.
EAPI const char * eina_module_file_get (const Eina_Module *m)
Return the file name associated to the module.
EAPI char * eina_module_symbol_path_get (const void *symbol, const char *sub_dir) EINA_PURE EINA_MALLOC EINA_ARG_NONNULL(1

EAPI char *EAPI char * eina_module_environment_path_get (const char *env, const char *sub_dir) EINA_PURE EINA_MALLOC EINA_ARG_NONNULL(1

EAPI char *EAPI char *EAPI Eina_Array * eina_module_arch_list_get (Eina_Array *array, const char *path, const char *arch)
Get a list of modules found on the directory path.
EAPI Eina_Array * eina_module_list_get (Eina_Array *array, const char *path, unsigned int recursive, Eina_Module_Cb cb, void *data)
Get a list of modules found on the directory path.
EAPI void eina_module_list_load (Eina_Array *array)
Load every module on the list of modules.
EAPI void eina_module_list_unload (Eina_Array *array)
Unload every module on the list of modules.
EAPI void eina_module_list_free (Eina_Array *array)
Helper function that iterates over the list of modules and calls eina_module_free on each.
EAPI Eina_Module * eina_module_find (const Eina_Array *array, const char *module)
Find an module in array.
static void _dir_arch_list_db (const char *name, const char *path, void *data)

Variables


EAPI Eina_Error EINA_ERROR_WRONG_MODULE
Error identifier corresponding to a wrong module.
EAPI Eina_Error EINA_ERROR_MODULE_INIT_FAILED
Error identifier corresponding to a failure during the initialisation of a module.
EAPI void * EINA_WARN_UNUSED_RESULT

Detailed Description

Eina module provides some helpers over POSIX dlopen().

These functions provide module management.

It is not meant to replace, abstract or make a 'portable' version of the POSIX, but enhance its usage by defining some good practices.

Modules are created with eina_module_new() and later loaded with eina_module_load(). Loads are reference counted and there must be the same number of eina_module_unload() in order to have it to call dlclose(). This makes simple to have different users for the same module.

The loaded shared objects may have two visible functions that will be called and might provide initialization and shutdown proceedures. The symbols are __eina_module_init and __eina_module_shutdown and will be defined by the macros EINA_MODULE_INIT() and EINA_MODULE_SHUTDOWN().

There are some helpers to automatically create modules based on directory listing. See eina_module_arch_list_get(), eina_module_list_get() and eina_module_find().

Define Documentation

#define EINA_MODULE_INIT(f) EAPI Eina_Module_Init __eina_module_init = &f

declares the given function as the module initializer (__eina_module_init). It must be of signature Eina_Module_Init

#define EINA_MODULE_SHUTDOWN(f) EAPI Eina_Module_Shutdown __eina_module_shutdown = &f

declares the given function as the module shutdownializer (__eina_module_shutdown). It must be of signature Eina_Module_Shutdown

Typedef Documentation

Eina_Module_Init

If a function with such signature is exported by module as __eina_module_init, it will be called on the first load after dlopen() and if EINA_FALSE is returned, load will fail, EINA_TRUE means the module was successfully initialized. See also:

Eina_Module_Shutdown

Eina_Module_Shutdown

If a function with such signature is exported by module as __eina_module_shutdown, it will be called before calling dlclose(). See also:

Eina_Module_Init

Function Documentation

EAPI Eina_Module * eina_module_new (const char * file)

Return a new module. Parameters:

file The name of the file module to load.

This function returns a new module. If file is NULL, the function returns NULL, otherwise, it allocates an Eina_Module, stores a duplicate string of file, sets its reference to 0 and its handle to NULL.

When the new module is not needed anymore, use eina_module_free() to free the allocated memory.

See also:

eina_module_load

EAPI Eina_Bool eina_module_free (Eina_Module * m)

Delete a module. Parameters:

m The module to delete.

Returns:

EINA_TRUE on success, EINA_FALSE otherwise.

This function calls eina_module_unload() if m has been previously loaded and frees the allocated memory. On success this function returns EINA_TRUE and EINA_FALSE otherwise. If m is NULL, the function returns immediatly.

EAPI Eina_Bool eina_module_load (Eina_Module * m)

Load a module. Parameters:

m The module to load.

Returns:

EINA_TRUE on success, EINA_FALSE otherwise.

This function load the shared file object passed in eina_module_new(). If it is a internal Eina module (like the mempools), it also initialize it. It the shared file object can not be loaded, the error EINA_ERROR_WRONG_MODULE is set and EINA_FALSE is returned. If it is a internal Eina module and the module can not be initialized, the error EINA_ERROR_MODULE_INIT_FAILED is set and EINA_FALSE is returned. If the module has already been loaded, it's refeence counter is increased by one and EINA_TRUE is returned. If m is NULL, the function returns immediatly EINA_FALSE.

When the symbols of the shared file objetcts are not needed anymore, call eina_module_unload() to unload the module.

EAPI Eina_Bool eina_module_unload (Eina_Module * m)

Unload a module. Parameters:

m The module to load.

Returns:

EINA_TRUE on success, EINA_FALSE otherwise.

This function unload the module m that has been previously loaded by eina_module_load(). If the reference counter of m is strictly greater than 1, EINA_FALSE is returned. Otherwise, the shared object file is closed and if it is a internal Eina module, it is shutted down just before. In that case, EINA_TRUE is returned. In all case, the reference counter is decreased. If m is NULL, the function returns immediatly EINA_FALSE.

EAPI void * eina_module_symbol_get (const Eina_Module * m, const char * symbol)

Retrive the data associated to a symbol. Parameters:

m The module.
symbol The symbol.

Returns:

The data associated to the symbol, or NULL on failure.

This function returns the data associated to symbol of m. m must have been loaded before with eina_module_load(). If m is NULL, or if it has not been correctly loaded before, the function returns immediatly NULL.

EAPI const char * eina_module_file_get (const Eina_Module * m)

Return the file name associated to the module. Parameters:

m The module.

Returns:

The file name.

Return the file name passed in eina_module_new(). If m is NULL, the function returns immediatly NULL. The returned value must no be freed.

EAPI Eina_Array * eina_module_arch_list_get (Eina_Array * array, const char * path, const char * arch)

Get a list of modules found on the directory path. Parameters:

array The array that stores the list of the modules.
path The directory's path to search for modules
arch the architecture string
cb Callback function to call, if the return value of the callback is zero it won't be added to the list, if it is one, it will.
data Data passed to the callback function

EAPI Eina_Array * eina_module_list_get (Eina_Array * array, const char * path, unsigned int recursive, Eina_Module_Cb cb, void * data)

Get a list of modules found on the directory path. Parameters:

array The array that stores the list of the modules.
path The directory's path to search for modules
recursive Iterate recursively on the path
cb Callback function to call, if the return value of the callback is zero it won't be added to the list, if it is one, it will.
data Data passed to the callback function

EAPI void eina_module_list_load (Eina_Array * array)

Load every module on the list of modules. Parameters:

array The array of modules to load

EAPI void eina_module_list_unload (Eina_Array * array)

Unload every module on the list of modules. Parameters:

array The array of modules to unload

EAPI Eina_Module * eina_module_find (const Eina_Array * array, const char * module)

Find an module in array. Parameters:

array The array to find the module.
module The name of module to be searched;

This function finds an module in an array; If the element is found return the module else NULL.

Author

Generated automatically by Doxygen for Eina from the source code.