VLC  4.0.0-dev
Functions

The object resource functions tie resource allocation to an instance of a module through a VLC object. More...

Collaboration diagram for Object resources:

Functions

void * vlc_obj_malloc (vlc_object_t *obj, size_t size)
 Allocates memory for a module. More...
 
void * vlc_obj_calloc (vlc_object_t *obj, size_t nmemb, size_t size)
 Allocates a zero-initialized table for a module. More...
 
char * vlc_obj_strdup (vlc_object_t *obj, const char *str)
 Duplicates a string for a module. More...
 
void vlc_obj_free (vlc_object_t *obj, void *ptr)
 Manually frees module memory. More...
 

Detailed Description

The object resource functions tie resource allocation to an instance of a module through a VLC object.

Such resource will be automatically freed, in first in last out order, when the module instance associated with the VLC object is terminated.

Specifically, if the module instance activation/probe function fails, the resource will be freed immediately after the failure. If the activation succeeds, the resource will be freed when the module instance is terminated.

This is a convenience mechanism to save explicit clean-up function calls in modules.

Function Documentation

◆ vlc_obj_calloc()

void* vlc_obj_calloc ( vlc_object_t obj,
size_t  nmemb,
size_t  size 
)

Allocates a zero-initialized table for a module.

This function allocates a table from the heap for a module instance. The memory is initialized to all zeroes.

Parameters
objVLC object to tie the memory allocation to
nmembnumber of table entries
sizebyte size of a table entry
Returns
a pointer to the allocated memory, or NULL on error (errno is set).

References likely, mul_overflow, unlikely, and vlc_obj_malloc().

Referenced by vlc_object_release().

◆ vlc_obj_free()

void vlc_obj_free ( vlc_object_t obj,
void *  ptr 
)

Manually frees module memory.

This function manually frees a resource allocated with vlc_obj_malloc(), vlc_obj_calloc() or vlc_obj_strdup() before the module instance is terminated. This is seldom necessary.

Parameters
objVLC object that the allocation was tied to
ptrpointer to the allocated resource

References ptrcmp(), and vlc_objres_remove().

Referenced by vlc_object_release().

◆ vlc_obj_malloc()

void* vlc_obj_malloc ( vlc_object_t obj,
size_t  size 
)

Allocates memory for a module.

This function allocates memory from the heap for a module instance. The memory is uninitialized.

Parameters
objVLC object to tie the memory allocation to
sizebyte size of the memory allocation
Returns
a pointer to the allocated memory, or NULL on error (errno is set).

References dummy_release(), likely, vlc_objres_new(), and vlc_objres_push().

Referenced by vlc_obj_calloc(), vlc_obj_memdup(), and vlc_object_release().

◆ vlc_obj_strdup()

char* vlc_obj_strdup ( vlc_object_t obj,
const char *  str 
)

Duplicates a string for a module.

This function allocates a copy of a nul-terminated string for a module instance.

Parameters
objVLC object to tie the memory allocation to
strstring to copy
Returns
a pointer to the copy, or NULL on error (errno is set).

References vlc_obj_memdup().

Referenced by vlc_object_release().