VLC  3.0.0-git
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Functions | Variables
bank.c File Reference
Include dependency graph for bank.c:

Functions

static void module_StoreBank (vlc_plugin_t *lib)
 
static vlc_plugin_tmodule_InitStatic (vlc_plugin_cb entry)
 Registers a statically-linked plug-in. More...
 
static void module_InitStaticModules (void)
 
int module_Map (vlc_object_t *obj, vlc_plugin_t *plugin)
 
static void module_Unmap (vlc_plugin_t *plugin)
 
void module_InitBank (void)
 Init bank. More...
 
void module_EndBank (bool b_plugins)
 Unloads all unused plugin modules and empties the module bank in case of success. More...
 
size_t module_LoadPlugins (vlc_object_t *obj)
 Loads module descriptions for all available plugins. More...
 
void module_list_free (module_t **list)
 Frees the flat list of VLC modules. More...
 
module_t ** module_list_get (size_t *n)
 Gets the flat list of VLC modules. More...
 
static int modulecmp (const void *a, const void *b)
 
ssize_t module_list_cap (module_t ***restrict list, const char *cap)
 Builds a sorted list of all VLC modules with a given capability. More...
 

Variables

struct {
   vlc_mutex_t   lock
 
   block_t *   caches
 
   unsigned   usage
 
modules = { PTHREAD_MUTEX_INITIALIZER , NULL, 0 }
 
vlc_plugin_tvlc_plugins = NULL
 List of all plug-ins. More...
 
vlc_plugin_cb vlc_static_modules []
 

Function Documentation

void module_EndBank ( bool  b_plugins)

Unloads all unused plugin modules and empties the module bank in case of success.

References block_ChainRelease(), caches, config_UnsortConfig(), module_Unmap(), modules, vlc_plugin_t::next, vlc_mutex_lock(), vlc_mutex_unlock(), vlc_plugin_destroy(), and vlc_plugins.

Referenced by libvlc_InternalCleanup(), and libvlc_InternalInit().

void module_InitBank ( void  )

Init bank.

Creates a module bank structure which will be filled later on with all the modules found.

References config_SortConfig(), likely, module_InitStatic(), module_StoreBank(), modules, vlc_entry__core(), and vlc_mutex_lock().

Referenced by libvlc_InternalInit().

static vlc_plugin_t* module_InitStatic ( vlc_plugin_cb  entry)
static

Registers a statically-linked plug-in.

References atomic_init, unlikely, and vlc_plugin_describe().

Referenced by module_InitBank(), and module_InitStaticModules().

static void module_InitStaticModules ( void  )
static
ssize_t module_list_cap ( module_t ***restrict  list,
const char *  cap 
)

Builds a sorted list of all VLC modules with a given capability.

The list is sorted from the highest module score to the lowest.

Parameters
listpointer to the table of modules [OUT]
capcapability of modules to look for
Returns
the number of matching found, or -1 on error (*list is then NULL).
Note
*list must be freed with module_list_free().

References module_provides(), modulecmp(), vlc_plugin_t::next, module_t::next, and unlikely.

Referenced by config_ListModules(), and vlc_module_load().

void module_list_free ( module_t **  list)

Frees the flat list of VLC modules.

Parameters
listlist obtained by module_list_get()
lengthnumber of items on the list
Returns
nothing.

Referenced by config_ListModules(), ListModules(), module_find(), module_LoadPlugins(), and vlc_module_load().

module_t** module_list_get ( size_t *  n)

Gets the flat list of VLC modules.

Parameters
n[OUT] pointer to the number of modules
Returns
table of module pointers (release with module_list_free()), or NULL in case of error (in that case, *n is zeroed).

References vlc_plugin_t::next, module_t::next, and unlikely.

Referenced by ListModules(), module_find(), and module_LoadPlugins().

size_t module_LoadPlugins ( vlc_object_t obj)

Loads module descriptions for all available plugins.

Fills the module bank structure with the plugin modules.

Parameters
p_thisvlc object structure
Returns
total number of modules in bank after loading all plug-ins

References config_SortConfig(), config_UnsortConfig(), count, list, module_InitStaticModules(), module_list_free(), module_list_get(), modules, msg_Dbg, and vlc_mutex_unlock().

int module_Map ( vlc_object_t obj,
vlc_plugin_t plugin 
)
static void module_StoreBank ( vlc_plugin_t lib)
static
static void module_Unmap ( vlc_plugin_t plugin)
static

Referenced by module_EndBank().

static int modulecmp ( const void *  a,
const void *  b 
)
static

References module_t::i_score.

Referenced by module_list_cap().

Variable Documentation

block_t* caches

Referenced by module_EndBank().

struct { ... } modules
unsigned usage
vlc_plugin_t* vlc_plugins = NULL
vlc_plugin_cb vlc_static_modules[]