VLC  4.0.0-dev
Data Structures | Macros | Functions | Variables
thread.c File Reference
Include dependency graph for thread.c:

Data Structures

struct  vlc_thread
 
struct  vlc_threadvar
 
struct  wait_bucket
 
struct  vlc_timer
 

Macros

#define Q2LL(q)   ( *( long long * )&( q ))
 

Functions

static void vlc_cancel_self (PVOID dummy)
 
static ULONG vlc_DosWaitEventSemEx (HEV hev, ULONG ulTimeout)
 
static ULONG vlc_WaitForSingleObject (HEV hev, ULONG ulTimeout)
 
static ULONG vlc_Sleep (ULONG ulTimeout)
 
int vlc_threadvar_create (vlc_threadvar_t *p_tls, void(*destr)(void *))
 Allocates a thread-specific variable. More...
 
void vlc_threadvar_delete (vlc_threadvar_t *p_tls)
 Deallocates a thread-specific variable. More...
 
int vlc_threadvar_set (vlc_threadvar_t key, void *value)
 Sets a thread-specific variable. More...
 
void * vlc_threadvar_get (vlc_threadvar_t key)
 Gets the value of a thread-local variable for the calling thread. More...
 
static void wait_bucket_init (void)
 
static void wait_bucket_destroy (void)
 
static struct wait_bucketwait_bucket_get (atomic_uint *addr)
 
static struct wait_bucketwait_bucket_enter (atomic_uint *addr)
 
static void wait_bucket_leave (void *data)
 
void vlc_atomic_wait (void *addr, unsigned value)
 Waits on an address. More...
 
int vlc_atomic_timedwait (void *addr, unsigned value, vlc_tick_t deadline)
 Waits on an address with a time-out. More...
 
int vlc_atomic_timedwait_daytime (void *addr, unsigned value, time_t deadline)
 
void vlc_atomic_notify_one (void *addr)
 Wakes up one thread on an address. More...
 
void vlc_atomic_notify_all (void *addr)
 Wakes up all thread on an address. More...
 
void vlc_threads_setup (libvlc_int_t *p_libvlc)
 
static void vlc_thread_cleanup (struct vlc_thread *th)
 
static void vlc_entry (void *p)
 
int vlc_clone (vlc_thread_t *p_handle, void *(*entry)(void *), void *data, int priority)
 Creates and starts a new thread. More...
 
void vlc_join (vlc_thread_t th, void **result)
 Waits for a thread to complete (if needed), then destroys it. More...
 
int vlc_set_priority (vlc_thread_t th, int priority)
 
unsigned long vlc_thread_id (void)
 Thread identifier. More...
 
void vlc_cancel (vlc_thread_t th)
 Marks a thread as cancelled. More...
 
int vlc_savecancel (void)
 Disables thread cancellation. More...
 
void vlc_restorecancel (int state)
 Restores the cancellation state. More...
 
void vlc_testcancel (void)
 Issues an explicit deferred cancellation point. More...
 
void vlc_control_cancel (vlc_cleanup_t *cleaner)
 Internal handler for thread cancellation. More...
 
void vlc_cancel_addr_set (atomic_uint *addr)
 
void vlc_cancel_addr_clear (atomic_uint *addr)
 
static int vlc_select (int nfds, fd_set *rdset, fd_set *wrset, fd_set *exset, struct timeval *timeout)
 
 __declspec (dllexport)
 
vlc_tick_t vlc_tick_now (void)
 Precision monotonic clock. More...
 
void vlc_tick_wait (vlc_tick_t deadline)
 Waits until a deadline. More...
 
void vlc_tick_sleep (vlc_tick_t delay)
 Waits for an interval of time. More...
 
static void vlc_timer_do (void *arg)
 
int vlc_timer_create (vlc_timer_t *id, void(*func)(void *), void *data)
 Initializes an asynchronous timer. More...
 
void vlc_timer_destroy (vlc_timer_t timer)
 Destroys an initialized timer. More...
 
void vlc_timer_schedule (vlc_timer_t timer, bool absolute, vlc_tick_t value, vlc_tick_t interval)
 Arms or disarms an initialized timer. More...
 
unsigned vlc_timer_getoverrun (vlc_timer_t timer)
 Fetches and resets the overrun counter for a timer. More...
 
unsigned vlc_GetCPUCount (void)
 Count CPUs. More...
 
int _CRT_init (void)
 
void _CRT_term (void)
 
unsigned long _System _DLL_InitTerm (unsigned long, unsigned long)
 

Variables

static vlc_mutex_t super_mutex
 
static vlc_cond_t super_variable
 
static vlc_threadvar_t thread_key
 
struct vlc_threadvarvlc_threadvar_last = NULL
 
static struct wait_bucket wait_buckets [32]
 

Macro Definition Documentation

◆ Q2LL

#define Q2LL (   q)    ( *( long long * )&( q ))

Function Documentation

◆ __declspec()

__declspec ( dllexport  )

◆ _CRT_init()

int _CRT_init ( void  )

Referenced by _DLL_InitTerm().

◆ _CRT_term()

void _CRT_term ( void  )

Referenced by _DLL_InitTerm().

◆ _DLL_InitTerm()

unsigned long _System _DLL_InitTerm ( unsigned long  hmod,
unsigned long  flag 
)

◆ vlc_cancel_self()

static void vlc_cancel_self ( PVOID  dummy)
static

References vlc_thread::killed, and likely.

Referenced by vlc_DosWaitEventSemEx(), and vlc_testcancel().

◆ vlc_DosWaitEventSemEx()

static ULONG vlc_DosWaitEventSemEx ( HEV  hev,
ULONG  ulTimeout 
)
static

◆ vlc_entry()

static void vlc_entry ( void *  p)
static

◆ vlc_select()

static int vlc_select ( int  nfds,
fd_set *  rdset,
fd_set *  wrset,
fd_set *  exset,
struct timeval *  timeout 
)
static

◆ vlc_set_priority()

int vlc_set_priority ( vlc_thread_t  th,
int  priority 
)

References VLC_EGENERIC, and VLC_SUCCESS.

◆ vlc_Sleep()

static ULONG vlc_Sleep ( ULONG  ulTimeout)
static

References vlc_DosWaitEventSemEx().

Referenced by vlc_tick_wait().

◆ vlc_thread_cleanup()

static void vlc_thread_cleanup ( struct vlc_thread th)
static

◆ vlc_threads_setup()

void vlc_threads_setup ( libvlc_int_t p_libvlc)

◆ vlc_timer_do()

static void vlc_timer_do ( void *  arg)
static

◆ vlc_WaitForSingleObject()

static ULONG vlc_WaitForSingleObject ( HEV  hev,
ULONG  ulTimeout 
)
static

◆ wait_bucket_destroy()

static void wait_bucket_destroy ( void  )
static

◆ wait_bucket_enter()

static struct wait_bucket* wait_bucket_enter ( atomic_uint *  addr)
static

◆ wait_bucket_get()

static struct wait_bucket* wait_bucket_get ( atomic_uint *  addr)
static

◆ wait_bucket_init()

static void wait_bucket_init ( void  )
static

◆ wait_bucket_leave()

static void wait_bucket_leave ( void *  data)
static

Variable Documentation

◆ super_mutex

vlc_mutex_t super_mutex
static

◆ super_variable

vlc_cond_t super_variable
static

Referenced by _DLL_InitTerm().

◆ thread_key

vlc_threadvar_t thread_key
static

◆ vlc_threadvar_last

struct vlc_threadvar * vlc_threadvar_last = NULL

◆ wait_buckets

struct wait_bucket wait_buckets[ 32 ]
static