VLC 4.0.0-dev
|
Data Structures | |
struct | vlc_thread |
struct | vlc_threadvar |
Macros | |
#define | _DECL_DLLMAIN |
#define | NTDDI_WIN10_RS1 0x0A000002 |
#define | LOOKUP(s) (((s##_) = (void *)GetProcAddress(h, #s)) != NULL) |
Functions | |
int | vlc_threadvar_create (vlc_threadvar_t *p_tls, void(*destr)(void *)) |
Allocates a thread-specific variable. | |
void | vlc_threadvar_delete (vlc_threadvar_t *p_tls) |
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 key) |
Gets the value of a thread-local variable for the calling thread. | |
static void | vlc_threadvars_cleanup (void) |
static | HRESULT (WINAPI *SetThreadDescription_)(HANDLE |
void | vlc_atomic_wait (void *addr, unsigned val) |
Waits on an address. | |
int | vlc_atomic_timedwait (void *addr, unsigned val, vlc_tick_t deadline) |
Waits on an address with a time-out. | |
int | vlc_atomic_timedwait_daytime (void *addr, unsigned val, time_t deadline) |
void | vlc_atomic_notify_one (void *addr) |
Wakes up one thread on an address. | |
void | vlc_atomic_notify_all (void *addr) |
Wakes up all thread on an address. | |
static unsigned __stdcall | vlc_entry (void *p) |
int | vlc_clone (vlc_thread_t *p_handle, void *(*entry)(void *), void *data) |
Creates and starts a new thread. | |
void | vlc_join (vlc_thread_t th, void **result) |
Waits for a thread to complete (if needed), then destroys it. | |
unsigned long | vlc_thread_id (void) |
Thread identifier. | |
void() | vlc_thread_set_name (const char *name) |
Set the thread name of the current thread. | |
static void CALLBACK | vlc_cancel_self (ULONG_PTR self) |
void | vlc_cancel (vlc_thread_t th) |
Marks a thread as cancelled. | |
int | vlc_savecancel (void) |
Disables thread cancellation. | |
void | vlc_restorecancel (int state) |
Restores the cancellation state. | |
static _Noreturn void | vlc_docancel (struct vlc_thread *th) |
void | vlc_testcancel (void) |
Issues an explicit deferred cancellation point. | |
void | vlc_control_cancel (vlc_cleanup_t *cleaner) |
Internal handler for thread cancellation. | |
static vlc_tick_t | mdate_perf (void) |
static vlc_tick_t | mdate_perf_100ns (void) |
static vlc_tick_t | mdate_wall (void) |
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. | |
static void | SelectClockSource (libvlc_int_t *obj) |
unsigned | vlc_GetCPUCount (void) |
Count CPUs. | |
void | vlc_threads_setup (libvlc_int_t *vlc) |
int __stdcall | DllMain (void *hinstDll, unsigned long fdwReason, void *lpvReserved) |
Variables | ||
static SRWLOCK | super_lock = SRWLOCK_INIT | |
static thread_local struct vlc_thread * | current_thread_ctx = NULL | |
struct vlc_threadvar * | vlc_threadvar_last = NULL | |
static | PCWSTR | |
union { | ||
struct { | ||
LARGE_INTEGER freq | ||
} perf | ||
} | clk | |
static vlc_tick_t(* | mdate_selected )(void) = mdate_wall | |
#define _DECL_DLLMAIN |
#define LOOKUP | ( | s | ) | (((s##_) = (void *)GetProcAddress(h, #s)) != NULL) |
#define NTDDI_WIN10_RS1 0x0A000002 |
int __stdcall DllMain | ( | void * | hinstDll, |
unsigned long | fdwReason, | ||
void * | lpvReserved | ||
) |
References LOOKUP, and vlc_threadvars_cleanup().
|
static |
References lock.
Referenced by config_GetAppDir(), config_GetKnownFolder(), config_GetShellDir(), and GetFolderName().
|
static |
References clk, unlikely, and vlc_tick_from_frac().
Referenced by SelectClockSource().
|
static |
References unlikely, and VLC_TICK_FROM_MSFTIME.
Referenced by SelectClockSource().
|
static |
References CLOCK_FREQ, and VLC_TICK_FROM_MSFTIME.
|
static |
References clk, mdate_perf(), mdate_perf_100ns(), mdate_selected, msg_Dbg, msg_Err, name, and var_InheritString().
Referenced by vlc_threads_setup().
void vlc_atomic_notify_all | ( | void * | addr | ) |
Wakes up all thread on an address.
Wakes up all threads sleeping on the specified address (if any). Any thread sleeping within a call to vlc_atomic_wait() or vlc_atomic_timedwait() with the specified address as first call parameter will be woken up.
addr | address identifying which threads to wake up |
void vlc_atomic_notify_one | ( | void * | addr | ) |
Wakes up one thread on an address.
Wakes up (at least) one of the thread sleeping on the specified address. The address must be equal to the first parameter given by at least one thread sleeping within the vlc_atomic_wait() or vlc_atomic_timedwait() functions. If no threads are found, this function does nothing.
addr | address identifying which threads may be woken up |
int vlc_atomic_timedwait | ( | void * | addr, |
unsigned | val, | ||
vlc_tick_t | deadline | ||
) |
Waits on an address with a time-out.
This function operates as vlc_atomic_wait() but provides an additional time-out. If the deadline is reached, the thread resumes and the function returns.
addr | address to check for |
val | value to match at the address |
deadline | deadline to wait until |
0 | the function was woken up before the time-out |
ETIMEDOUT | the deadline was reached |
References MS_FROM_VLC_TICK, unlikely, and vlc_tick_now().
int vlc_atomic_timedwait_daytime | ( | void * | addr, |
unsigned | val, | ||
time_t | deadline | ||
) |
References unlikely.
void vlc_atomic_wait | ( | void * | addr, |
unsigned | val | ||
) |
Waits on an address.
Puts the calling thread to sleep if a specific unsigned 32-bits value is stored at a specified address. The thread will sleep until it is woken up by a call to vlc_atomic_notify_one() or vlc_atomic_notify_all() in another thread, or spuriously.
If the value does not match, do nothing and return immediately.
addr | address to check for |
val | value to match at the address |
|
static |
|
static |
References vlc_thread::cleaners, vlc_thread::data, vlc_thread::killable, p, and VLC_THREAD_CANCELED.
Referenced by vlc_testcancel(), and vlc_tick_wait().
|
static |
References current_thread_ctx, vlc_thread::data, vlc_thread::entry, vlc_thread::killable, p, and VLC_THREAD_CANCELED.
void vlc_threads_setup | ( | libvlc_int_t * | vlc | ) |
References msg_Dbg, SelectClockSource(), and var_InheritBool().
|
static |
References vlc_threadvar::destroy, vlc_threadvar::id, vlc_threadvar::prev, super_lock, and vlc_threadvar_last.
Referenced by DllMain().
union { ... } clk |
Referenced by mdate_perf(), and SelectClockSource().
|
static |
LARGE_INTEGER freq |
Referenced by rtp_queue(), and vlc_tick_now().
|
static |
Referenced by SelectClockSource(), and vlc_tick_now().
PCWSTR |
Referenced by GetFolderName().
struct { ... } perf |
|
static |
Referenced by vlc_threadvar_create(), vlc_threadvar_delete(), and vlc_threadvars_cleanup().
struct vlc_threadvar * vlc_threadvar_last = NULL |