VLC 4.0.0-dev
|
Thread primitive declarations. More...
Go to the source code of this file.
Data Structures | |
struct | vlc_thread_t |
Thread handle. More... | |
struct | vlc_mutex_t |
Mutex. More... | |
struct | vlc_cond_t |
Condition variable. More... | |
struct | vlc_sem_t |
Semaphore. More... | |
struct | vlc_latch_t |
Latch. More... | |
struct | vlc_once_t |
One-time initialization. More... | |
Macros | |
#define | LIBVLC_USE_PTHREAD 1 |
Whether LibVLC threads are based on POSIX threads. | |
#define | LIBVLC_USE_PTHREAD_CLEANUP 1 |
Whether LibVLC thread cancellation is based on POSIX threads. | |
#define | VLC_THREAD_CANCELED PTHREAD_CANCELED |
Return value of a canceled thread. | |
#define | VLC_STATIC_MUTEX |
Static initializer for (static) mutex. | |
#define | vlc_mutex_assert(m) assert(vlc_mutex_held(m)) |
Asserts that a mutex is locked by the calling thread. | |
#define | VLC_STATIC_COND { NULL, VLC_STATIC_MUTEX } |
Static initializer for (static) condition variable. | |
#define | VLC_STATIC_ONCE { 0 } |
Static initializer for one-time initialization. | |
#define | vlc_once_begin(once) vlc_once_begin_inline(once) |
#define | VLC_HARD_MIN_SLEEP VLC_TICK_FROM_MS(10) /* 10 milliseconds = 1 tick at 100Hz */ |
#define | VLC_SOFT_MIN_SLEEP VLC_TICK_FROM_SEC(9) /* 9 seconds */ |
#define | VLC_TIMER_DISARM (0) |
#define | VLC_TIMER_FIRE_ONCE (0) |
#define | vlc_cleanup_push(routine, arg) pthread_cleanup_push (routine, arg) |
Registers a thread cancellation handler. | |
#define | vlc_cleanup_pop() pthread_cleanup_pop (0) |
Unregisters the last cancellation handler. | |
#define | vlc_global_lock(n) vlc_global_mutex(n, true) |
Acquires a global mutex. | |
#define | vlc_global_unlock(n) vlc_global_mutex(n, false) |
Releases a global mutex. | |
Typedefs | |
typedef pthread_key_t | vlc_threadvar_t |
Thread-local key handle. | |
typedef struct vlc_timer * | vlc_timer_t |
Threaded timer handle. | |
typedef struct vlc_cleanup_t | vlc_cleanup_t |
Enumerations | |
enum | { VLC_AVCODEC_MUTEX = 0 , VLC_GCRYPT_MUTEX , VLC_XLIB_MUTEX , VLC_MOSAIC_MUTEX , VLC_MAX_MUTEX } |
Functions | |
void | vlc_testcancel (void) |
Issues an explicit deferred cancellation point. | |
void | vlc_mutex_init (vlc_mutex_t *) |
Initializes a fast mutex. | |
void | vlc_mutex_init_recursive (vlc_mutex_t *) |
Initializes a recursive mutex. | |
void | vlc_mutex_lock (vlc_mutex_t *) |
Acquires a mutex. | |
int | vlc_mutex_trylock (vlc_mutex_t *) |
Tries to acquire a mutex. | |
void | vlc_mutex_unlock (vlc_mutex_t *) |
Releases a mutex. | |
bool | vlc_mutex_held (const vlc_mutex_t *) |
Checks if a mutex is locked. | |
void | vlc_cond_init (vlc_cond_t *) |
Initializes a condition variable. | |
void | vlc_cond_signal (vlc_cond_t *) |
Wakes up one thread waiting on a condition variable. | |
void | vlc_cond_broadcast (vlc_cond_t *) |
Wakes up all threads waiting on a condition variable. | |
void | vlc_cond_wait (vlc_cond_t *cond, vlc_mutex_t *mutex) |
Waits on a condition variable. | |
int | vlc_cond_timedwait (vlc_cond_t *cond, vlc_mutex_t *mutex, vlc_tick_t deadline) |
Waits on a condition variable up to a certain date. | |
void | vlc_sem_init (vlc_sem_t *sem, unsigned count) |
Initializes a semaphore. | |
int | vlc_sem_post (vlc_sem_t *) |
Increments the value of a semaphore. | |
void | vlc_sem_wait (vlc_sem_t *) |
Waits on a semaphore. | |
int | vlc_sem_trywait (vlc_sem_t *sem) |
Tries to decrement a semaphore. | |
int | vlc_sem_timedwait (vlc_sem_t *sem, vlc_tick_t deadline) |
Waits on a semaphore within a deadline. | |
void | vlc_latch_init (vlc_latch_t *latch, size_t value) |
Initializes a latch. | |
void | vlc_latch_count_down (vlc_latch_t *latch, size_t n) |
Decrements the value of a latch. | |
void | vlc_latch_count_down_and_wait (vlc_latch_t *latch, size_t n) |
Decrements the value of a latch and waits on it. | |
bool | vlc_latch_is_ready (const vlc_latch_t *latch) |
Checks if a latch is ready. | |
void | vlc_latch_wait (vlc_latch_t *) |
Waits on a latch. | |
bool | vlc_once_begin (vlc_once_t *restrict once) |
Begins a one-time initialization. | |
static bool | vlc_once_begin_inline (vlc_once_t *restrict once) |
void | vlc_once_complete (vlc_once_t *restrict once) |
Completes a one-time initialization. | |
static void | vlc_once (vlc_once_t *restrict once, void(*cb)(void *), void *opaque) |
Executes a function one time. | |
int | vlc_threadvar_create (vlc_threadvar_t *key, void(*destr)(void *)) |
Allocates a thread-specific variable. | |
void | vlc_threadvar_delete (vlc_threadvar_t *) |
Deallocates a thread-specific variable. | |
int | vlc_threadvar_set (vlc_threadvar_t key, void *value) |
Sets a thread-specific variable. | |
void * | vlc_threadvar_get (vlc_threadvar_t) |
Gets the value of a thread-local variable for the calling thread. | |
int | vlc_clone (vlc_thread_t *th, void *(*entry)(void *), void *data) |
Creates and starts a new thread. | |
void | vlc_thread_set_name (const char *name) |
Set the thread name of the current thread. | |
void | vlc_cancel (vlc_thread_t) |
Marks a thread as cancelled. | |
void | vlc_join (vlc_thread_t th, void **result) |
Waits for a thread to complete (if needed), then destroys it. | |
int | vlc_savecancel (void) |
Disables thread cancellation. | |
void | vlc_restorecancel (int state) |
Restores the cancellation state. | |
void | vlc_control_cancel (vlc_cleanup_t *) |
Internal handler for thread cancellation. | |
unsigned long | vlc_thread_id (void) |
Thread identifier. | |
vlc_tick_t | vlc_tick_now (void) |
Precision monotonic clock. | |
void | vlc_tick_wait (vlc_tick_t deadline) |
Waits until a deadline. | |
void | vlc_tick_sleep (vlc_tick_t delay) |
Waits for an interval of time. | |
int | vlc_timer_create (vlc_timer_t *id, void(*func)(void *), void *data) |
Initializes an asynchronous timer. | |
void | vlc_timer_destroy (vlc_timer_t timer) |
Destroys an initialized timer. | |
void | vlc_timer_schedule (vlc_timer_t timer, bool absolute, vlc_tick_t value, vlc_tick_t interval) |
Arms or disarms an initialized timer. | |
static void | vlc_timer_disarm (vlc_timer_t timer) |
static void | vlc_timer_schedule_asap (vlc_timer_t timer, vlc_tick_t interval) |
unsigned | vlc_timer_getoverrun (vlc_timer_t timer) |
Fetches and resets the overrun counter for a timer. | |
unsigned | vlc_GetCPUCount (void) |
Count CPUs. | |
void | vlc_global_mutex (unsigned, bool) |
Internal handler for global mutexes. | |
Thread primitive declarations.