Coverage Report

Created: 2025-07-23 07:11

/src/vlc/include/vlc_threads.h
Line
Count
Source (jump to first uncovered line)
1
/*****************************************************************************
2
 * vlc_threads.h : threads implementation for the VideoLAN client
3
 * This header provides portable declarations for mutexes & conditions
4
 *****************************************************************************
5
 * Copyright (C) 1999, 2002 VLC authors and VideoLAN
6
 * Copyright © 2007-2016 Rémi Denis-Courmont
7
 *
8
 * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
9
 *          Samuel Hocevar <sam@via.ecp.fr>
10
 *          Gildas Bazin <gbazin@netcourrier.com>
11
 *          Christophe Massiot <massiot@via.ecp.fr>
12
 *
13
 * This program is free software; you can redistribute it and/or modify it
14
 * under the terms of the GNU Lesser General Public License as published by
15
 * the Free Software Foundation; either version 2.1 of the License, or
16
 * (at your option) any later version.
17
 *
18
 * This program is distributed in the hope that it will be useful,
19
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
 * GNU Lesser General Public License for more details.
22
 *
23
 * You should have received a copy of the GNU Lesser General Public License
24
 * along with this program; if not, write to the Free Software Foundation,
25
 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
26
 *****************************************************************************/
27
28
#ifndef VLC_THREADS_H_
29
#define VLC_THREADS_H_
30
31
#ifndef __cplusplus
32
#include <stdatomic.h>
33
#endif
34
35
#include <vlc_tick.h>
36
37
/**
38
 * \ingroup os
39
 * \defgroup thread Threads and synchronization primitives
40
 * @{
41
 * \file
42
 * Thread primitive declarations
43
 */
44
45
/**
46
 * Issues an explicit deferred cancellation point.
47
 *
48
 * This has no effects if thread cancellation is disabled.
49
 * This can be called when there is a rather slow non-sleeping operation.
50
 * This is also used to force a cancellation point in a function that would
51
 * otherwise <em>not always</em> be one (block_FifoGet() is an example).
52
 */
53
VLC_API void vlc_testcancel(void);
54
55
#if defined (_WIN32)
56
# include <process.h>
57
# ifndef ETIMEDOUT
58
#  define ETIMEDOUT 10060 /* This is the value in winsock.h. */
59
# endif
60
61
typedef struct vlc_thread *vlc_thread_t;
62
# define VLC_THREAD_CANCELED ((void*) UINTPTR_MAX)
63
64
typedef struct vlc_threadvar *vlc_threadvar_t;
65
typedef struct vlc_timer *vlc_timer_t;
66
67
#elif defined (__OS2__)
68
# include <errno.h>
69
70
typedef struct vlc_thread *vlc_thread_t;
71
#define VLC_THREAD_CANCELED ((void*) UINTPTR_MAX)
72
73
typedef struct vlc_threadvar *vlc_threadvar_t;
74
typedef struct vlc_timer *vlc_timer_t;
75
76
# define pthread_sigmask  sigprocmask
77
78
#elif defined (__ANDROID__)      /* pthreads subset without pthread_cancel() */
79
# include <unistd.h>
80
# include <pthread.h>
81
# include <poll.h>
82
# define LIBVLC_USE_PTHREAD_CLEANUP   1
83
84
typedef struct vlc_thread *vlc_thread_t;
85
#define VLC_THREAD_CANCELED ((void*) UINTPTR_MAX)
86
typedef pthread_key_t   vlc_threadvar_t;
87
typedef struct vlc_timer *vlc_timer_t;
88
89
#else /* POSIX threads */
90
# include <unistd.h> /* _POSIX_SPIN_LOCKS */
91
# include <pthread.h>
92
93
/**
94
 * Whether LibVLC threads are based on POSIX threads.
95
 */
96
# define LIBVLC_USE_PTHREAD           1
97
98
/**
99
 * Whether LibVLC thread cancellation is based on POSIX threads.
100
 */
101
# define LIBVLC_USE_PTHREAD_CLEANUP   1
102
103
/**
104
 * Thread handle.
105
 */
106
typedef struct
107
{
108
    pthread_t handle;
109
} vlc_thread_t;
110
111
/**
112
 * Return value of a canceled thread.
113
 */
114
#define VLC_THREAD_CANCELED PTHREAD_CANCELED
115
116
/**
117
 * Thread-local key handle.
118
 *
119
 * \ingroup threadvar
120
 */
121
typedef pthread_key_t   vlc_threadvar_t;
122
123
/**
124
 * Threaded timer handle.
125
 *
126
 * \ingroup timer
127
 */
128
typedef struct vlc_timer *vlc_timer_t;
129
130
#endif
131
132
/**
133
 * \defgroup mutex Mutual exclusion locks
134
 * @{
135
 */
136
/**
137
 * Mutex.
138
 *
139
 * Storage space for a mutual exclusion lock.
140
 */
141
typedef struct
142
{
143
    union {
144
#ifndef __cplusplus
145
        struct {
146
            atomic_uint value;
147
            atomic_uint recursion;
148
            atomic_ulong owner;
149
        };
150
#endif
151
        struct {
152
            unsigned int value;
153
            unsigned int recursion;
154
            unsigned long owner;
155
        } dummy;
156
    };
157
} vlc_mutex_t;
158
159
/**
160
 * Static initializer for (static) mutex.
161
 *
162
 * \note This only works in C code.
163
 * In C++, consider using a global ::vlc::threads::mutex instance instead.
164
 */
165
0
#define VLC_STATIC_MUTEX { \
166
0
    .value = 0, \
167
0
    .recursion = 0, \
168
0
    .owner = 0, \
169
0
}
170
171
/**
172
 * Initializes a fast mutex.
173
 *
174
 * Recursive locking of a fast mutex is undefined behaviour. (In debug builds,
175
 * recursive locking will cause an assertion failure.)
176
 */
177
VLC_API void vlc_mutex_init(vlc_mutex_t *);
178
179
/**
180
 * Initializes a recursive mutex.
181
 * \warning This is strongly discouraged. Please use normal mutexes.
182
 */
183
VLC_API void vlc_mutex_init_recursive(vlc_mutex_t *);
184
185
/**
186
 * Acquires a mutex.
187
 *
188
 * If needed, this waits for any other thread to release it.
189
 *
190
 * \warning Beware of deadlocks when locking multiple mutexes at the same time,
191
 * or when using mutexes from callbacks.
192
 *
193
 * \note This function is not a cancellation point.
194
 */
195
VLC_API void vlc_mutex_lock(vlc_mutex_t *);
196
197
/**
198
 * Tries to acquire a mutex.
199
 *
200
 * This function acquires the mutex if and only if it is not currently held by
201
 * another thread. This function never sleeps and can be used in delay-critical
202
 * code paths.
203
 *
204
 * \note This function is not a cancellation point.
205
 *
206
 * \warning If this function fails, then the mutex is held... by another
207
 * thread. The calling thread must deal with the error appropriately. That
208
 * typically implies postponing the operations that would have required the
209
 * mutex. If the thread cannot defer those operations, then it must use
210
 * vlc_mutex_lock(). If in doubt, use vlc_mutex_lock() instead.
211
 *
212
 * @return 0 if the mutex could be acquired, an error code otherwise.
213
 */
214
VLC_API int vlc_mutex_trylock( vlc_mutex_t * ) VLC_USED;
215
216
/**
217
 * Releases a mutex.
218
 *
219
 * If the mutex is not held by the calling thread, the behaviour is undefined.
220
 *
221
 * \note This function is not a cancellation point.
222
 */
223
VLC_API void vlc_mutex_unlock(vlc_mutex_t *);
224
225
/**
226
 * Checks if a mutex is locked.
227
 *
228
 * This function checks if the calling thread holds a given mutual exclusion
229
 * lock. It has no side effects and is essentially intended for run-time
230
 * debugging.
231
 *
232
 * @note To assert that the calling thread holds a lock, the helper macro
233
 * vlc_mutex_assert() should be used instead of this function.
234
 *
235
 * @note While it is nominally possible to implement recursive lock semantics
236
 * with this function, vlc_mutex_init_recursive() should be used instead to
237
 * create a recursive mutex explicitly..
238
 *
239
 * @retval false the mutex is not locked by the calling thread
240
 * @retval true the mutex is locked by the calling thread
241
 */
242
VLC_API bool vlc_mutex_held(const vlc_mutex_t *) VLC_USED;
243
244
/**
245
 * Asserts that a mutex is locked by the calling thread.
246
 */
247
3.27k
#define vlc_mutex_assert(m) assert(vlc_mutex_held(m))
248
249
/** @} */
250
251
/**
252
 * \defgroup condvar Condition variables
253
 *
254
 * The condition variable is the most common and generic mean for threads to
255
 * wait for events triggered by other threads.
256
 *
257
 * See also POSIX @c pthread_cond_t .
258
 * @{
259
 */
260
261
struct vlc_cond_waiter;
262
263
/**
264
 * Condition variable.
265
 *
266
 * Storage space for a thread condition variable.
267
 */
268
typedef struct
269
{
270
    struct vlc_cond_waiter *head;
271
    vlc_mutex_t lock;
272
} vlc_cond_t;
273
274
/**
275
 * Static initializer for (static) condition variable.
276
 */
277
#define VLC_STATIC_COND { NULL, VLC_STATIC_MUTEX }
278
279
/**
280
 * Initializes a condition variable.
281
 */
282
VLC_API void vlc_cond_init(vlc_cond_t *);
283
284
/**
285
 * Wakes up one thread waiting on a condition variable.
286
 *
287
 * If any thread is currently waiting on the condition variable, at least one
288
 * of those threads will be woken up. Otherwise, this function has no effects.
289
 *
290
 * \note This function is not a cancellation point.
291
 */
292
VLC_API void vlc_cond_signal(vlc_cond_t *);
293
294
/**
295
 * Wakes up all threads waiting on a condition variable.
296
 *
297
 * \note This function is not a cancellation point.
298
 */
299
VLC_API void vlc_cond_broadcast(vlc_cond_t *);
300
301
/**
302
 * Waits on a condition variable.
303
 *
304
 * The calling thread will be suspended until another thread calls
305
 * vlc_cond_signal() or vlc_cond_broadcast() on the same condition variable,
306
 * the thread is cancelled with vlc_cancel(), or the system causes a
307
 * <em>spurious</em> unsolicited wake-up.
308
 *
309
 * A mutex is needed to wait on a condition variable. It must <b>not</b> be
310
 * a recursive mutex. Although it is possible to use the same mutex for
311
 * multiple condition, it is not valid to use different mutexes for the same
312
 * condition variable at the same time from different threads.
313
 *
314
 * The canonical way to use a condition variable to wait for event foobar is:
315
 @code
316
   vlc_mutex_lock(&lock);
317
318
   while (!foobar)
319
       vlc_cond_wait(&wait, &lock);
320
321
   // -- foobar is now true, do something about it here --
322
323
   vlc_mutex_unlock(&lock);
324
  @endcode
325
 *
326
 * \param cond condition variable to wait on
327
 * \param mutex mutex which is unlocked while waiting,
328
 *              then locked again when waking up.
329
 */
330
VLC_API void vlc_cond_wait(vlc_cond_t *cond, vlc_mutex_t *mutex);
331
332
/**
333
 * Waits on a condition variable up to a certain date.
334
 *
335
 * This works like vlc_cond_wait() but with an additional time-out.
336
 * The time-out is expressed as an absolute timestamp using the same arbitrary
337
 * time reference as the vlc_tick_now() and vlc_tick_wait() functions.
338
 *
339
 * \param cond condition variable to wait on
340
 * \param mutex mutex which is unlocked while waiting,
341
 *              then locked again when waking up
342
 * \param deadline <b>absolute</b> timeout
343
 *
344
 * \return 0 if the condition was signaled, an error code in case of timeout.
345
 */
346
VLC_API int vlc_cond_timedwait(vlc_cond_t *cond, vlc_mutex_t *mutex,
347
                               vlc_tick_t deadline);
348
349
/** @} */
350
351
/**
352
 * \defgroup semaphore Semaphores
353
 *
354
 * The semaphore is the simplest thread synchronization primitive, consisting
355
 * of a simple counter.
356
 *
357
 * See also POSIX @c sem_t .
358
 *
359
 * @{
360
 */
361
/**
362
 * Semaphore.
363
 *
364
 * Storage space for a thread-safe semaphore.
365
 */
366
typedef struct
367
{
368
    union {
369
#ifndef __cplusplus
370
        atomic_uint value;
371
#endif
372
        int dummy;
373
   };
374
} vlc_sem_t;
375
376
/**
377
 * Initializes a semaphore.
378
 *
379
 * @param sem a semaphore to initialize
380
 * @param count initial semaphore value (typically 0)
381
 */
382
VLC_API void vlc_sem_init(vlc_sem_t *sem, unsigned count);
383
384
/**
385
 * Increments the value of a semaphore.
386
 *
387
 * \note This function is not a cancellation point.
388
 *
389
 * \return 0 on success, EOVERFLOW in case of integer overflow.
390
 */
391
VLC_API int vlc_sem_post(vlc_sem_t *);
392
393
/**
394
 * Waits on a semaphore.
395
 *
396
 * This function atomically waits for the semaphore to become non-zero then
397
 * decrements it, and returns. If the semaphore is non-zero on entry, it is
398
 * immediately decremented.
399
 *
400
 * \note This function may be a point of cancellation.
401
 */
402
VLC_API void vlc_sem_wait(vlc_sem_t *);
403
404
/**
405
 * Tries to decrement a semaphore.
406
 *
407
 * This function decrements the semaphore if its value is not zero.
408
 *
409
 * \param sem semaphore to decrement
410
 *
411
 * \retval 0 the semaphore was decremented
412
 * \retval EAGAIN the semaphore was zero and could not be decremented
413
 */
414
VLC_API int vlc_sem_trywait(vlc_sem_t *sem) VLC_USED;
415
416
/**
417
 * Waits on a semaphore within a deadline.
418
 *
419
 * This function waits for the semaphore just like vlc_sem_wait(), but only
420
 * up to a given deadline.
421
 *
422
 * \param sem semaphore to wait for
423
 * \param deadline deadline to wait until
424
 *
425
 * \retval 0 the semaphore was decremented
426
 * \retval ETIMEDOUT the deadline was reached
427
 */
428
VLC_API int vlc_sem_timedwait(vlc_sem_t *sem, vlc_tick_t deadline) VLC_USED;
429
430
/** @} */
431
432
#ifndef __cplusplus
433
/**
434
 * \defgroup latch Latches
435
 *
436
 * The latch is a downward counter used to synchronise threads.
437
 *
438
 * @{
439
 */
440
/**
441
 * Latch.
442
 *
443
 * Storage space for a thread-safe latch.
444
 */
445
typedef struct
446
{
447
    atomic_size_t value;
448
    atomic_uint ready;
449
} vlc_latch_t;
450
451
/**
452
 * Initializes a latch.
453
 *
454
 * @param latch a latch instance
455
 * @param value initial latch value (typically 1)
456
 */
457
VLC_API void vlc_latch_init(vlc_latch_t *latch, size_t value);
458
459
/**
460
 * Decrements the value of a latch.
461
 *
462
 * This function atomically decrements the value of a latch by the given
463
 * quantity. If the result is zero, then any thread waiting on the latch is
464
 * woken up.
465
 *
466
 * \warning If the result is (arithmetically) strictly negative, the behaviour
467
 * is undefined.
468
 *
469
 * \param latch an initialized latch
470
 * \param n quantity to subtract from the latch value (typically 1)
471
 *
472
 * \note This function is not a cancellation point.
473
 */
474
VLC_API void vlc_latch_count_down(vlc_latch_t *latch, size_t n);
475
476
/**
477
 * Decrements the value of a latch and waits on it.
478
 *
479
 * This function atomically decrements the value of a latch by the given
480
 * quantity. Then, if the result of the subtraction is strictly positive,
481
 * it waits until the value reaches zero.
482
 *
483
 * This function is equivalent to the succession of vlc_latch_count_down()
484
 * then vlc_latch_wait(), and is only an optimisation to combine the two.
485
 *
486
 * \warning If the result is strictly negative, the behaviour is undefined.
487
 *
488
 * \param latch an initialized latch
489
 * \param n number of times to decrement the value (typically 1)
490
 *
491
 * \note This function may be a cancellation point.
492
 */
493
VLC_API void vlc_latch_count_down_and_wait(vlc_latch_t *latch, size_t n);
494
495
/**
496
 * Checks if a latch is ready.
497
 *
498
 * This function compares the value of a latch with zero.
499
 *
500
 * \retval false if the latch value is non-zero
501
 * \retval true if the latch value equals zero
502
 */
503
VLC_API bool vlc_latch_is_ready(const vlc_latch_t *latch) VLC_USED;
504
505
/**
506
 * Waits on a latch.
507
 *
508
 * This function waits until the value of the latch reaches zero.
509
 *
510
 * \note This function may be a point of cancellation.
511
 */
512
VLC_API void vlc_latch_wait(vlc_latch_t *);
513
514
/** @} */
515
516
/**
517
 * One-time initialization.
518
 *
519
 * A one-time initialization object must always be initialized assigned to
520
 * \ref VLC_STATIC_ONCE before use.
521
 */
522
typedef struct
523
{
524
    atomic_uint value;
525
} vlc_once_t;
526
527
/**
528
 * Static initializer for one-time initialization.
529
 */
530
#define VLC_STATIC_ONCE { 0 }
531
532
/**
533
 * Begins a one-time initialization.
534
 *
535
 * This function checks if a one-time initialization has completed:
536
 * - If this is the first time the function is called for the given one-time
537
 *   initialization object, it marks the beginning of the initialization and
538
 *   returns true. vlc_once_complete() must be called to mark the completion
539
 *   of the initialisation.
540
 * - Otherwise, it waits until the initialization completes and returns false.
541
 * - In particular, if the initialization has already completed, the function
542
 *   returns false immediately without actually waiting.
543
 *
544
 * The specified one-time initialization object must have been initialized
545
 * with @ref VLC_STATIC_ONCE, which is a constant expression suitable as a
546
 * static initializer.
547
 *
548
 * \warning If this function is called twice without an intervening call to
549
 * vlc_once_complete(), a dead lock will occur.
550
 *
551
 * \param once one-time initialisation object
552
 * \retval false on the first call (for the given object)
553
 * \retval true on subsequent calls (for the given object)
554
 */
555
VLC_API bool vlc_once_begin(vlc_once_t *restrict once);
556
557
static inline bool vlc_once_begin_inline(vlc_once_t *restrict once)
558
0
{
559
0
    /* Fast path: check if already initialized */
560
0
    if (unlikely(atomic_load_explicit(&once->value, memory_order_acquire) < 3))
561
0
        return vlc_once_begin(once);
562
0
    return true;
563
0
}
Unexecuted instantiation: demux-run.c:vlc_once_begin_inline
Unexecuted instantiation: common.c:vlc_once_begin_inline
Unexecuted instantiation: var.c:vlc_once_begin_inline
Unexecuted instantiation: decoder.c:vlc_once_begin_inline
Unexecuted instantiation: core.c:vlc_once_begin_inline
Unexecuted instantiation: error.c:vlc_once_begin_inline
Unexecuted instantiation: aiff.c:vlc_once_begin_inline
Unexecuted instantiation: asf.c:vlc_once_begin_inline
Unexecuted instantiation: libasf.c:vlc_once_begin_inline
Unexecuted instantiation: asfpacket.c:vlc_once_begin_inline
Unexecuted instantiation: au.c:vlc_once_begin_inline
Unexecuted instantiation: avi.c:vlc_once_begin_inline
Unexecuted instantiation: libavi.c:vlc_once_begin_inline
Unexecuted instantiation: caf.c:vlc_once_begin_inline
Unexecuted instantiation: cdg.c:vlc_once_begin_inline
Unexecuted instantiation: es.c:vlc_once_begin_inline
Unexecuted instantiation: dts_header.c:vlc_once_begin_inline
Unexecuted instantiation: flac.c:vlc_once_begin_inline
Unexecuted instantiation: xiph_metadata.c:vlc_once_begin_inline
Unexecuted instantiation: h26x.c:vlc_once_begin_inline
Unexecuted instantiation: mjpeg.c:vlc_once_begin_inline
Unexecuted instantiation: mp4.c:vlc_once_begin_inline
Unexecuted instantiation: fragments.c:vlc_once_begin_inline
Unexecuted instantiation: attachments.c:vlc_once_begin_inline
Unexecuted instantiation: heif.c:vlc_once_begin_inline
Unexecuted instantiation: essetup.c:vlc_once_begin_inline
Unexecuted instantiation: meta.c:vlc_once_begin_inline
Unexecuted instantiation: libmp4.c:vlc_once_begin_inline
Unexecuted instantiation: nsv.c:vlc_once_begin_inline
Unexecuted instantiation: ps.c:vlc_once_begin_inline
Unexecuted instantiation: pva.c:vlc_once_begin_inline
Unexecuted instantiation: sap.c:vlc_once_begin_inline
Unexecuted instantiation: smf.c:vlc_once_begin_inline
Unexecuted instantiation: subtitle.c:vlc_once_begin_inline
Unexecuted instantiation: tta.c:vlc_once_begin_inline
Unexecuted instantiation: encttml.c:vlc_once_begin_inline
Unexecuted instantiation: substtml.c:vlc_once_begin_inline
Unexecuted instantiation: ttml.c:vlc_once_begin_inline
Unexecuted instantiation: ty.c:vlc_once_begin_inline
Unexecuted instantiation: voc.c:vlc_once_begin_inline
Unexecuted instantiation: wav.c:vlc_once_begin_inline
Unexecuted instantiation: webvtt.c:vlc_once_begin_inline
Unexecuted instantiation: encvtt.c:vlc_once_begin_inline
Unexecuted instantiation: subsvtt.c:vlc_once_begin_inline
Unexecuted instantiation: xa.c:vlc_once_begin_inline
Unexecuted instantiation: a52.c:vlc_once_begin_inline
Unexecuted instantiation: copy.c:vlc_once_begin_inline
Unexecuted instantiation: dts.c:vlc_once_begin_inline
Unexecuted instantiation: h264.c:vlc_once_begin_inline
Unexecuted instantiation: hxxx_sei.c:vlc_once_begin_inline
Unexecuted instantiation: hxxx_common.c:vlc_once_begin_inline
Unexecuted instantiation: h264_nal.c:vlc_once_begin_inline
Unexecuted instantiation: h264_slice.c:vlc_once_begin_inline
Unexecuted instantiation: hevc.c:vlc_once_begin_inline
Unexecuted instantiation: hevc_nal.c:vlc_once_begin_inline
Unexecuted instantiation: mlp.c:vlc_once_begin_inline
Unexecuted instantiation: mpeg4audio.c:vlc_once_begin_inline
Unexecuted instantiation: mpeg4video.c:vlc_once_begin_inline
Unexecuted instantiation: mpegaudio.c:vlc_once_begin_inline
Unexecuted instantiation: mpegvideo.c:vlc_once_begin_inline
Unexecuted instantiation: vc1.c:vlc_once_begin_inline
Unexecuted instantiation: rawaud.c:vlc_once_begin_inline
Unexecuted instantiation: rawvid.c:vlc_once_begin_inline
Unexecuted instantiation: file.c:vlc_once_begin_inline
Unexecuted instantiation: directory.c:vlc_once_begin_inline
Unexecuted instantiation: libxml.c:vlc_once_begin_inline
Unexecuted instantiation: ogg.c:vlc_once_begin_inline
Unexecuted instantiation: oggseek.c:vlc_once_begin_inline
Unexecuted instantiation: adpcm.c:vlc_once_begin_inline
Unexecuted instantiation: aes3.c:vlc_once_begin_inline
Unexecuted instantiation: araw.c:vlc_once_begin_inline
Unexecuted instantiation: g711.c:vlc_once_begin_inline
Unexecuted instantiation: lpcm.c:vlc_once_begin_inline
Unexecuted instantiation: uleaddvaudio.c:vlc_once_begin_inline
Unexecuted instantiation: rawvideo.c:vlc_once_begin_inline
Unexecuted instantiation: cc.c:vlc_once_begin_inline
Unexecuted instantiation: cea708.c:vlc_once_begin_inline
Unexecuted instantiation: cvdsub.c:vlc_once_begin_inline
Unexecuted instantiation: dvbsub.c:vlc_once_begin_inline
Unexecuted instantiation: scte18.c:vlc_once_begin_inline
Unexecuted instantiation: scte27.c:vlc_once_begin_inline
Unexecuted instantiation: spudec.c:vlc_once_begin_inline
Unexecuted instantiation: parse.c:vlc_once_begin_inline
Unexecuted instantiation: stl.c:vlc_once_begin_inline
Unexecuted instantiation: subsdec.c:vlc_once_begin_inline
Unexecuted instantiation: subsusf.c:vlc_once_begin_inline
Unexecuted instantiation: svcdsub.c:vlc_once_begin_inline
Unexecuted instantiation: textst.c:vlc_once_begin_inline
Unexecuted instantiation: substx3g.c:vlc_once_begin_inline
Unexecuted instantiation: libvlc.c:vlc_once_begin_inline
Unexecuted instantiation: chain.c:vlc_once_begin_inline
Unexecuted instantiation: help.c:vlc_once_begin_inline
Unexecuted instantiation: cmdline.c:vlc_once_begin_inline
Unexecuted instantiation: media_source.c:vlc_once_begin_inline
Unexecuted instantiation: media_tree.c:vlc_once_begin_inline
Unexecuted instantiation: modules.c:vlc_once_begin_inline
Unexecuted instantiation: bank.c:vlc_once_begin_inline
Unexecuted instantiation: entry.c:vlc_once_begin_inline
Unexecuted instantiation: dialog.c:vlc_once_begin_inline
Unexecuted instantiation: interface.c:vlc_once_begin_inline
Unexecuted instantiation: content.c:vlc_once_begin_inline
Unexecuted instantiation: control.c:vlc_once_begin_inline
Unexecuted instantiation: item.c:vlc_once_begin_inline
Unexecuted instantiation: notify.c:vlc_once_begin_inline
Unexecuted instantiation: player.c:vlc_once_begin_inline
Unexecuted instantiation: playlist.c:vlc_once_begin_inline
Unexecuted instantiation: preparse.c:vlc_once_begin_inline
Unexecuted instantiation: preparser.c:vlc_once_begin_inline
Unexecuted instantiation: access.c:vlc_once_begin_inline
Unexecuted instantiation: decoder_device.c:vlc_once_begin_inline
Unexecuted instantiation: decoder_helpers.c:vlc_once_begin_inline
Unexecuted instantiation: demux.c:vlc_once_begin_inline
Unexecuted instantiation: input.c:vlc_once_begin_inline
Unexecuted instantiation: attachment.c:vlc_once_begin_inline
Unexecuted instantiation: timer.c:vlc_once_begin_inline
Unexecuted instantiation: track.c:vlc_once_begin_inline
Unexecuted instantiation: title.c:vlc_once_begin_inline
Unexecuted instantiation: aout.c:vlc_once_begin_inline
Unexecuted instantiation: vout.c:vlc_once_begin_inline
Unexecuted instantiation: osd.c:vlc_once_begin_inline
Unexecuted instantiation: medialib.c:vlc_once_begin_inline
Unexecuted instantiation: resource.c:vlc_once_begin_inline
Unexecuted instantiation: services_discovery.c:vlc_once_begin_inline
Unexecuted instantiation: stats.c:vlc_once_begin_inline
Unexecuted instantiation: stream.c:vlc_once_begin_inline
Unexecuted instantiation: stream_extractor.c:vlc_once_begin_inline
Unexecuted instantiation: stream_filter.c:vlc_once_begin_inline
Unexecuted instantiation: stream_memory.c:vlc_once_begin_inline
Unexecuted instantiation: subtitles.c:vlc_once_begin_inline
Unexecuted instantiation: dec.c:vlc_once_begin_inline
Unexecuted instantiation: filters.c:vlc_once_begin_inline
Unexecuted instantiation: meter.c:vlc_once_begin_inline
Unexecuted instantiation: output.c:vlc_once_begin_inline
Unexecuted instantiation: volume.c:vlc_once_begin_inline
Unexecuted instantiation: video_output.c:vlc_once_begin_inline
Unexecuted instantiation: video_text.c:vlc_once_begin_inline
Unexecuted instantiation: video_widgets.c:vlc_once_begin_inline
Unexecuted instantiation: vout_subpictures.c:vlc_once_begin_inline
Unexecuted instantiation: video_window.c:vlc_once_begin_inline
Unexecuted instantiation: window.c:vlc_once_begin_inline
Unexecuted instantiation: vout_intf.c:vlc_once_begin_inline
Unexecuted instantiation: charset.c:vlc_once_begin_inline
Unexecuted instantiation: strings.c:vlc_once_begin_inline
Unexecuted instantiation: unicode.c:vlc_once_begin_inline
Unexecuted instantiation: actions.c:vlc_once_begin_inline
Unexecuted instantiation: executor.c:vlc_once_begin_inline
Unexecuted instantiation: probe.c:vlc_once_begin_inline
Unexecuted instantiation: frame.c:vlc_once_begin_inline
Unexecuted instantiation: fifo.c:vlc_once_begin_inline
Unexecuted instantiation: picture.c:vlc_once_begin_inline
Unexecuted instantiation: picture_fifo.c:vlc_once_begin_inline
Unexecuted instantiation: picture_pool.c:vlc_once_begin_inline
Unexecuted instantiation: interrupt.c:vlc_once_begin_inline
Unexecuted instantiation: keystore.c:vlc_once_begin_inline
Unexecuted instantiation: rcu.c:vlc_once_begin_inline
Unexecuted instantiation: renderer_discovery.c:vlc_once_begin_inline
Unexecuted instantiation: threads.c:vlc_once_begin_inline
Unexecuted instantiation: cpu.c:vlc_once_begin_inline
Unexecuted instantiation: exit.c:vlc_once_begin_inline
Unexecuted instantiation: image.c:vlc_once_begin_inline
Unexecuted instantiation: messages.c:vlc_once_begin_inline
Unexecuted instantiation: tracer.c:vlc_once_begin_inline
Unexecuted instantiation: objects.c:vlc_once_begin_inline
Unexecuted instantiation: objres.c:vlc_once_begin_inline
Unexecuted instantiation: queue.c:vlc_once_begin_inline
Unexecuted instantiation: variables.c:vlc_once_begin_inline
Unexecuted instantiation: xml.c:vlc_once_begin_inline
Unexecuted instantiation: filter.c:vlc_once_begin_inline
Unexecuted instantiation: filter_chain.c:vlc_once_begin_inline
Unexecuted instantiation: httpcookies.c:vlc_once_begin_inline
Unexecuted instantiation: subpicture.c:vlc_once_begin_inline
Unexecuted instantiation: medialibrary.c:vlc_once_begin_inline
Unexecuted instantiation: thread.c:vlc_once_begin_inline
Unexecuted instantiation: rand.c:vlc_once_begin_inline
Unexecuted instantiation: specific.c:vlc_once_begin_inline
Unexecuted instantiation: stream_output.c:vlc_once_begin_inline
Unexecuted instantiation: vlm.c:vlc_once_begin_inline
Unexecuted instantiation: vlm_event.c:vlc_once_begin_inline
Unexecuted instantiation: vlmshell.c:vlc_once_begin_inline
Unexecuted instantiation: libvlc-module.c:vlc_once_begin_inline
Unexecuted instantiation: art.c:vlc_once_begin_inline
Unexecuted instantiation: fetcher.c:vlc_once_begin_inline
Unexecuted instantiation: clock.c:vlc_once_begin_inline
Unexecuted instantiation: es_out.c:vlc_once_begin_inline
Unexecuted instantiation: es_out_source.c:vlc_once_begin_inline
Unexecuted instantiation: es_out_timeshift.c:vlc_once_begin_inline
Unexecuted instantiation: display.c:vlc_once_begin_inline
Unexecuted instantiation: inhibit.c:vlc_once_begin_inline
Unexecuted instantiation: interlacing.c:vlc_once_begin_inline
Unexecuted instantiation: snapshot.c:vlc_once_begin_inline
Unexecuted instantiation: io.c:vlc_once_begin_inline
Unexecuted instantiation: chroma_probe.c:vlc_once_begin_inline
Unexecuted instantiation: dirs.c:vlc_once_begin_inline
Unexecuted instantiation: getaddrinfo.c:vlc_once_begin_inline
Unexecuted instantiation: input_clock.c:vlc_once_begin_inline
564
#define vlc_once_begin(once) vlc_once_begin_inline(once)
565
566
/**
567
 * Completes a one-time initialization.
568
 *
569
 * This function marks the end of an ongoing one-time initialization.
570
 * If any thread is waiting for the completion of that initialization, its
571
 * execution will be resumed.
572
 *
573
 * \warning The behavior is undefined if the one-time initialization object
574
 * is uninitialized, if one-time initialization has not started, or
575
 * if one-time initialization has already completed.
576
 *
577
 * \param once one-time initialisation object
578
 */
579
VLC_API void vlc_once_complete(vlc_once_t *restrict once);
580
581
/**
582
 * Executes a function one time.
583
 *
584
 * The first time this function is called with a given one-time initialization
585
 * object, it executes the provided callback with the provided data pointer as
586
 * sole parameter. Any further call with the same object will be a no-op.
587
 *
588
 * In the corner case that the first time execution is ongoing in another
589
 * thread, then the function will wait for completion on the other thread
590
 * (and then synchronize memory) before it returns.
591
 * This ensures that, no matter what, the callback has been executed exactly
592
 * once and its side effects are visible after the function returns.
593
 *
594
 * \param once a one-time initialization object
595
 * \param cb callback to execute (the first time)
596
 * \param opaque data pointer for the callback
597
 */
598
static inline void vlc_once(vlc_once_t *restrict once, void (*cb)(void *),
599
                            void *opaque)
600
0
{
601
0
    if (unlikely(!vlc_once_begin(once))) {
602
0
        cb(opaque);
603
0
        vlc_once_complete(once);
604
0
    }
605
0
}
Unexecuted instantiation: demux-run.c:vlc_once
Unexecuted instantiation: common.c:vlc_once
Unexecuted instantiation: var.c:vlc_once
Unexecuted instantiation: decoder.c:vlc_once
Unexecuted instantiation: core.c:vlc_once
Unexecuted instantiation: error.c:vlc_once
Unexecuted instantiation: aiff.c:vlc_once
Unexecuted instantiation: asf.c:vlc_once
Unexecuted instantiation: libasf.c:vlc_once
Unexecuted instantiation: asfpacket.c:vlc_once
Unexecuted instantiation: au.c:vlc_once
Unexecuted instantiation: avi.c:vlc_once
Unexecuted instantiation: libavi.c:vlc_once
Unexecuted instantiation: caf.c:vlc_once
Unexecuted instantiation: cdg.c:vlc_once
Unexecuted instantiation: es.c:vlc_once
Unexecuted instantiation: dts_header.c:vlc_once
Unexecuted instantiation: flac.c:vlc_once
Unexecuted instantiation: xiph_metadata.c:vlc_once
Unexecuted instantiation: h26x.c:vlc_once
Unexecuted instantiation: mjpeg.c:vlc_once
Unexecuted instantiation: mp4.c:vlc_once
Unexecuted instantiation: fragments.c:vlc_once
Unexecuted instantiation: attachments.c:vlc_once
Unexecuted instantiation: heif.c:vlc_once
Unexecuted instantiation: essetup.c:vlc_once
Unexecuted instantiation: meta.c:vlc_once
Unexecuted instantiation: libmp4.c:vlc_once
Unexecuted instantiation: nsv.c:vlc_once
Unexecuted instantiation: ps.c:vlc_once
Unexecuted instantiation: pva.c:vlc_once
Unexecuted instantiation: sap.c:vlc_once
Unexecuted instantiation: smf.c:vlc_once
Unexecuted instantiation: subtitle.c:vlc_once
Unexecuted instantiation: tta.c:vlc_once
Unexecuted instantiation: encttml.c:vlc_once
Unexecuted instantiation: substtml.c:vlc_once
Unexecuted instantiation: ttml.c:vlc_once
Unexecuted instantiation: ty.c:vlc_once
Unexecuted instantiation: voc.c:vlc_once
Unexecuted instantiation: wav.c:vlc_once
Unexecuted instantiation: webvtt.c:vlc_once
Unexecuted instantiation: encvtt.c:vlc_once
Unexecuted instantiation: subsvtt.c:vlc_once
Unexecuted instantiation: xa.c:vlc_once
Unexecuted instantiation: a52.c:vlc_once
Unexecuted instantiation: copy.c:vlc_once
Unexecuted instantiation: dts.c:vlc_once
Unexecuted instantiation: h264.c:vlc_once
Unexecuted instantiation: hxxx_sei.c:vlc_once
Unexecuted instantiation: hxxx_common.c:vlc_once
Unexecuted instantiation: h264_nal.c:vlc_once
Unexecuted instantiation: h264_slice.c:vlc_once
Unexecuted instantiation: hevc.c:vlc_once
Unexecuted instantiation: hevc_nal.c:vlc_once
Unexecuted instantiation: mlp.c:vlc_once
Unexecuted instantiation: mpeg4audio.c:vlc_once
Unexecuted instantiation: mpeg4video.c:vlc_once
Unexecuted instantiation: mpegaudio.c:vlc_once
Unexecuted instantiation: mpegvideo.c:vlc_once
Unexecuted instantiation: vc1.c:vlc_once
Unexecuted instantiation: rawaud.c:vlc_once
Unexecuted instantiation: rawvid.c:vlc_once
Unexecuted instantiation: file.c:vlc_once
Unexecuted instantiation: directory.c:vlc_once
Unexecuted instantiation: libxml.c:vlc_once
Unexecuted instantiation: ogg.c:vlc_once
Unexecuted instantiation: oggseek.c:vlc_once
Unexecuted instantiation: adpcm.c:vlc_once
Unexecuted instantiation: aes3.c:vlc_once
Unexecuted instantiation: araw.c:vlc_once
Unexecuted instantiation: g711.c:vlc_once
Unexecuted instantiation: lpcm.c:vlc_once
Unexecuted instantiation: uleaddvaudio.c:vlc_once
Unexecuted instantiation: rawvideo.c:vlc_once
Unexecuted instantiation: cc.c:vlc_once
Unexecuted instantiation: cea708.c:vlc_once
Unexecuted instantiation: cvdsub.c:vlc_once
Unexecuted instantiation: dvbsub.c:vlc_once
Unexecuted instantiation: scte18.c:vlc_once
Unexecuted instantiation: scte27.c:vlc_once
Unexecuted instantiation: spudec.c:vlc_once
Unexecuted instantiation: parse.c:vlc_once
Unexecuted instantiation: stl.c:vlc_once
Unexecuted instantiation: subsdec.c:vlc_once
Unexecuted instantiation: subsusf.c:vlc_once
Unexecuted instantiation: svcdsub.c:vlc_once
Unexecuted instantiation: textst.c:vlc_once
Unexecuted instantiation: substx3g.c:vlc_once
Unexecuted instantiation: libvlc.c:vlc_once
Unexecuted instantiation: chain.c:vlc_once
Unexecuted instantiation: help.c:vlc_once
Unexecuted instantiation: cmdline.c:vlc_once
Unexecuted instantiation: media_source.c:vlc_once
Unexecuted instantiation: media_tree.c:vlc_once
Unexecuted instantiation: modules.c:vlc_once
Unexecuted instantiation: bank.c:vlc_once
Unexecuted instantiation: entry.c:vlc_once
Unexecuted instantiation: dialog.c:vlc_once
Unexecuted instantiation: interface.c:vlc_once
Unexecuted instantiation: content.c:vlc_once
Unexecuted instantiation: control.c:vlc_once
Unexecuted instantiation: item.c:vlc_once
Unexecuted instantiation: notify.c:vlc_once
Unexecuted instantiation: player.c:vlc_once
Unexecuted instantiation: playlist.c:vlc_once
Unexecuted instantiation: preparse.c:vlc_once
Unexecuted instantiation: preparser.c:vlc_once
Unexecuted instantiation: access.c:vlc_once
Unexecuted instantiation: decoder_device.c:vlc_once
Unexecuted instantiation: decoder_helpers.c:vlc_once
Unexecuted instantiation: demux.c:vlc_once
Unexecuted instantiation: input.c:vlc_once
Unexecuted instantiation: attachment.c:vlc_once
Unexecuted instantiation: timer.c:vlc_once
Unexecuted instantiation: track.c:vlc_once
Unexecuted instantiation: title.c:vlc_once
Unexecuted instantiation: aout.c:vlc_once
Unexecuted instantiation: vout.c:vlc_once
Unexecuted instantiation: osd.c:vlc_once
Unexecuted instantiation: medialib.c:vlc_once
Unexecuted instantiation: resource.c:vlc_once
Unexecuted instantiation: services_discovery.c:vlc_once
Unexecuted instantiation: stats.c:vlc_once
Unexecuted instantiation: stream.c:vlc_once
Unexecuted instantiation: stream_extractor.c:vlc_once
Unexecuted instantiation: stream_filter.c:vlc_once
Unexecuted instantiation: stream_memory.c:vlc_once
Unexecuted instantiation: subtitles.c:vlc_once
Unexecuted instantiation: dec.c:vlc_once
Unexecuted instantiation: filters.c:vlc_once
Unexecuted instantiation: meter.c:vlc_once
Unexecuted instantiation: output.c:vlc_once
Unexecuted instantiation: volume.c:vlc_once
Unexecuted instantiation: video_output.c:vlc_once
Unexecuted instantiation: video_text.c:vlc_once
Unexecuted instantiation: video_widgets.c:vlc_once
Unexecuted instantiation: vout_subpictures.c:vlc_once
Unexecuted instantiation: video_window.c:vlc_once
Unexecuted instantiation: window.c:vlc_once
Unexecuted instantiation: vout_intf.c:vlc_once
Unexecuted instantiation: charset.c:vlc_once
Unexecuted instantiation: strings.c:vlc_once
Unexecuted instantiation: unicode.c:vlc_once
Unexecuted instantiation: actions.c:vlc_once
Unexecuted instantiation: executor.c:vlc_once
Unexecuted instantiation: probe.c:vlc_once
Unexecuted instantiation: frame.c:vlc_once
Unexecuted instantiation: fifo.c:vlc_once
Unexecuted instantiation: picture.c:vlc_once
Unexecuted instantiation: picture_fifo.c:vlc_once
Unexecuted instantiation: picture_pool.c:vlc_once
Unexecuted instantiation: interrupt.c:vlc_once
Unexecuted instantiation: keystore.c:vlc_once
Unexecuted instantiation: rcu.c:vlc_once
Unexecuted instantiation: renderer_discovery.c:vlc_once
Unexecuted instantiation: threads.c:vlc_once
Unexecuted instantiation: cpu.c:vlc_once
Unexecuted instantiation: exit.c:vlc_once
Unexecuted instantiation: image.c:vlc_once
Unexecuted instantiation: messages.c:vlc_once
Unexecuted instantiation: tracer.c:vlc_once
Unexecuted instantiation: objects.c:vlc_once
Unexecuted instantiation: objres.c:vlc_once
Unexecuted instantiation: queue.c:vlc_once
Unexecuted instantiation: variables.c:vlc_once
Unexecuted instantiation: xml.c:vlc_once
Unexecuted instantiation: filter.c:vlc_once
Unexecuted instantiation: filter_chain.c:vlc_once
Unexecuted instantiation: httpcookies.c:vlc_once
Unexecuted instantiation: subpicture.c:vlc_once
Unexecuted instantiation: medialibrary.c:vlc_once
Unexecuted instantiation: thread.c:vlc_once
Unexecuted instantiation: rand.c:vlc_once
Unexecuted instantiation: specific.c:vlc_once
Unexecuted instantiation: stream_output.c:vlc_once
Unexecuted instantiation: vlm.c:vlc_once
Unexecuted instantiation: vlm_event.c:vlc_once
Unexecuted instantiation: vlmshell.c:vlc_once
Unexecuted instantiation: libvlc-module.c:vlc_once
Unexecuted instantiation: art.c:vlc_once
Unexecuted instantiation: fetcher.c:vlc_once
Unexecuted instantiation: clock.c:vlc_once
Unexecuted instantiation: es_out.c:vlc_once
Unexecuted instantiation: es_out_source.c:vlc_once
Unexecuted instantiation: es_out_timeshift.c:vlc_once
Unexecuted instantiation: display.c:vlc_once
Unexecuted instantiation: inhibit.c:vlc_once
Unexecuted instantiation: interlacing.c:vlc_once
Unexecuted instantiation: snapshot.c:vlc_once
Unexecuted instantiation: io.c:vlc_once
Unexecuted instantiation: chroma_probe.c:vlc_once
Unexecuted instantiation: dirs.c:vlc_once
Unexecuted instantiation: getaddrinfo.c:vlc_once
Unexecuted instantiation: input_clock.c:vlc_once
606
#endif
607
608
/**
609
 * \defgroup threadvar Thread-specific variables
610
 * @{
611
 */
612
/**
613
 * Allocates a thread-specific variable.
614
 *
615
 * @param key where to store the thread-specific variable handle
616
 * @param destr a destruction callback. It is called whenever a thread exits
617
 * and the thread-specific variable has a non-NULL value.
618
 *
619
 * @return 0 on success, a system error code otherwise.
620
 * This function can actually fail: on most systems, there is a fixed limit to
621
 * the number of thread-specific variables in a given process.
622
 */
623
VLC_API int vlc_threadvar_create(vlc_threadvar_t *key, void (*destr) (void *));
624
625
/**
626
 * Deallocates a thread-specific variable.
627
 */
628
VLC_API void vlc_threadvar_delete(vlc_threadvar_t *);
629
630
/**
631
 * Sets a thread-specific variable.
632
633
 * \param key thread-local variable key (created with vlc_threadvar_create())
634
 * \param value new value for the variable for the calling thread
635
 * \return 0 on success, a system error code otherwise.
636
 */
637
VLC_API int vlc_threadvar_set(vlc_threadvar_t key, void *value);
638
639
/**
640
 * Gets the value of a thread-local variable for the calling thread.
641
 * This function cannot fail.
642
 *
643
 * \return the value associated with the given variable for the calling
644
 * or NULL if no value was set.
645
 */
646
VLC_API void *vlc_threadvar_get(vlc_threadvar_t);
647
648
/** @} */
649
650
/**
651
 * Creates and starts a new thread.
652
 *
653
 * The thread must be <i>joined</i> with vlc_join() to reclaim resources
654
 * when it is not needed anymore.
655
 *
656
 * @param th storage space for the handle of the new thread (cannot be NULL)
657
 *           [OUT]
658
 * @param entry entry point for the thread
659
 * @param data data parameter given to the entry point
660
 * @return 0 on success, a standard error code on error.
661
 * @note In case of error, the value of *th is undefined.
662
 */
663
VLC_API int vlc_clone(vlc_thread_t *th, void *(*entry)(void *),
664
                      void *data) VLC_USED;
665
666
#if defined(__GNUC__)
667
static
668
VLC_UNUSED_FUNC
669
VLC_WARN_CALL("thread name too big")
670
const char * vlc_thread_name_too_big( const char * thread_name )
671
0
{
672
0
    return thread_name;
673
0
}
Unexecuted instantiation: demux-run.c:vlc_thread_name_too_big
Unexecuted instantiation: common.c:vlc_thread_name_too_big
Unexecuted instantiation: var.c:vlc_thread_name_too_big
Unexecuted instantiation: decoder.c:vlc_thread_name_too_big
Unexecuted instantiation: core.c:vlc_thread_name_too_big
Unexecuted instantiation: error.c:vlc_thread_name_too_big
Unexecuted instantiation: aiff.c:vlc_thread_name_too_big
Unexecuted instantiation: asf.c:vlc_thread_name_too_big
Unexecuted instantiation: libasf.c:vlc_thread_name_too_big
Unexecuted instantiation: asfpacket.c:vlc_thread_name_too_big
Unexecuted instantiation: au.c:vlc_thread_name_too_big
Unexecuted instantiation: avi.c:vlc_thread_name_too_big
Unexecuted instantiation: libavi.c:vlc_thread_name_too_big
Unexecuted instantiation: caf.c:vlc_thread_name_too_big
Unexecuted instantiation: cdg.c:vlc_thread_name_too_big
Unexecuted instantiation: es.c:vlc_thread_name_too_big
Unexecuted instantiation: dts_header.c:vlc_thread_name_too_big
Unexecuted instantiation: flac.c:vlc_thread_name_too_big
Unexecuted instantiation: xiph_metadata.c:vlc_thread_name_too_big
Unexecuted instantiation: h26x.c:vlc_thread_name_too_big
Unexecuted instantiation: mjpeg.c:vlc_thread_name_too_big
Unexecuted instantiation: mp4.c:vlc_thread_name_too_big
Unexecuted instantiation: fragments.c:vlc_thread_name_too_big
Unexecuted instantiation: attachments.c:vlc_thread_name_too_big
Unexecuted instantiation: heif.c:vlc_thread_name_too_big
Unexecuted instantiation: essetup.c:vlc_thread_name_too_big
Unexecuted instantiation: meta.c:vlc_thread_name_too_big
Unexecuted instantiation: libmp4.c:vlc_thread_name_too_big
Unexecuted instantiation: nsv.c:vlc_thread_name_too_big
Unexecuted instantiation: ps.c:vlc_thread_name_too_big
Unexecuted instantiation: pva.c:vlc_thread_name_too_big
Unexecuted instantiation: sap.c:vlc_thread_name_too_big
Unexecuted instantiation: smf.c:vlc_thread_name_too_big
Unexecuted instantiation: subtitle.c:vlc_thread_name_too_big
Unexecuted instantiation: tta.c:vlc_thread_name_too_big
Unexecuted instantiation: encttml.c:vlc_thread_name_too_big
Unexecuted instantiation: substtml.c:vlc_thread_name_too_big
Unexecuted instantiation: ttml.c:vlc_thread_name_too_big
Unexecuted instantiation: ty.c:vlc_thread_name_too_big
Unexecuted instantiation: voc.c:vlc_thread_name_too_big
Unexecuted instantiation: wav.c:vlc_thread_name_too_big
Unexecuted instantiation: webvtt.c:vlc_thread_name_too_big
Unexecuted instantiation: encvtt.c:vlc_thread_name_too_big
Unexecuted instantiation: subsvtt.c:vlc_thread_name_too_big
Unexecuted instantiation: xa.c:vlc_thread_name_too_big
Unexecuted instantiation: a52.c:vlc_thread_name_too_big
Unexecuted instantiation: copy.c:vlc_thread_name_too_big
Unexecuted instantiation: dts.c:vlc_thread_name_too_big
Unexecuted instantiation: h264.c:vlc_thread_name_too_big
Unexecuted instantiation: hxxx_sei.c:vlc_thread_name_too_big
Unexecuted instantiation: hxxx_common.c:vlc_thread_name_too_big
Unexecuted instantiation: h264_nal.c:vlc_thread_name_too_big
Unexecuted instantiation: h264_slice.c:vlc_thread_name_too_big
Unexecuted instantiation: hevc.c:vlc_thread_name_too_big
Unexecuted instantiation: hevc_nal.c:vlc_thread_name_too_big
Unexecuted instantiation: mlp.c:vlc_thread_name_too_big
Unexecuted instantiation: mpeg4audio.c:vlc_thread_name_too_big
Unexecuted instantiation: mpeg4video.c:vlc_thread_name_too_big
Unexecuted instantiation: mpegaudio.c:vlc_thread_name_too_big
Unexecuted instantiation: mpegvideo.c:vlc_thread_name_too_big
Unexecuted instantiation: vc1.c:vlc_thread_name_too_big
Unexecuted instantiation: rawaud.c:vlc_thread_name_too_big
Unexecuted instantiation: rawvid.c:vlc_thread_name_too_big
Unexecuted instantiation: file.c:vlc_thread_name_too_big
Unexecuted instantiation: directory.c:vlc_thread_name_too_big
Unexecuted instantiation: libxml.c:vlc_thread_name_too_big
Unexecuted instantiation: ogg.c:vlc_thread_name_too_big
Unexecuted instantiation: oggseek.c:vlc_thread_name_too_big
Unexecuted instantiation: mkv.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: util.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: virtual_segment.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: matroska_segment.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: matroska_segment_parse.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: matroska_segment_seeker.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: demux.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: events.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: Ebml_parser.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: chapters.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: chapter_command.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: chapter_command_dvd.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: chapter_command_script.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: chapter_command_script_common.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: stream_io_callback.cpp:vlc_thread_name_too_big(char const*)
Unexecuted instantiation: adpcm.c:vlc_thread_name_too_big
Unexecuted instantiation: aes3.c:vlc_thread_name_too_big
Unexecuted instantiation: araw.c:vlc_thread_name_too_big
Unexecuted instantiation: g711.c:vlc_thread_name_too_big
Unexecuted instantiation: lpcm.c:vlc_thread_name_too_big
Unexecuted instantiation: uleaddvaudio.c:vlc_thread_name_too_big
Unexecuted instantiation: rawvideo.c:vlc_thread_name_too_big
Unexecuted instantiation: cc.c:vlc_thread_name_too_big
Unexecuted instantiation: cea708.c:vlc_thread_name_too_big
Unexecuted instantiation: cvdsub.c:vlc_thread_name_too_big
Unexecuted instantiation: dvbsub.c:vlc_thread_name_too_big
Unexecuted instantiation: scte18.c:vlc_thread_name_too_big
Unexecuted instantiation: scte27.c:vlc_thread_name_too_big
Unexecuted instantiation: spudec.c:vlc_thread_name_too_big
Unexecuted instantiation: parse.c:vlc_thread_name_too_big
Unexecuted instantiation: stl.c:vlc_thread_name_too_big
Unexecuted instantiation: subsdec.c:vlc_thread_name_too_big
Unexecuted instantiation: subsusf.c:vlc_thread_name_too_big
Unexecuted instantiation: svcdsub.c:vlc_thread_name_too_big
Unexecuted instantiation: textst.c:vlc_thread_name_too_big
Unexecuted instantiation: substx3g.c:vlc_thread_name_too_big
Unexecuted instantiation: libvlc.c:vlc_thread_name_too_big
Unexecuted instantiation: chain.c:vlc_thread_name_too_big
Unexecuted instantiation: help.c:vlc_thread_name_too_big
Unexecuted instantiation: cmdline.c:vlc_thread_name_too_big
Unexecuted instantiation: media_source.c:vlc_thread_name_too_big
Unexecuted instantiation: media_tree.c:vlc_thread_name_too_big
Unexecuted instantiation: modules.c:vlc_thread_name_too_big
Unexecuted instantiation: bank.c:vlc_thread_name_too_big
Unexecuted instantiation: entry.c:vlc_thread_name_too_big
Unexecuted instantiation: dialog.c:vlc_thread_name_too_big
Unexecuted instantiation: interface.c:vlc_thread_name_too_big
Unexecuted instantiation: content.c:vlc_thread_name_too_big
Unexecuted instantiation: control.c:vlc_thread_name_too_big
Unexecuted instantiation: item.c:vlc_thread_name_too_big
Unexecuted instantiation: notify.c:vlc_thread_name_too_big
Unexecuted instantiation: player.c:vlc_thread_name_too_big
Unexecuted instantiation: playlist.c:vlc_thread_name_too_big
Unexecuted instantiation: preparse.c:vlc_thread_name_too_big
Unexecuted instantiation: preparser.c:vlc_thread_name_too_big
Unexecuted instantiation: access.c:vlc_thread_name_too_big
Unexecuted instantiation: decoder_device.c:vlc_thread_name_too_big
Unexecuted instantiation: decoder_helpers.c:vlc_thread_name_too_big
Unexecuted instantiation: demux.c:vlc_thread_name_too_big
Unexecuted instantiation: input.c:vlc_thread_name_too_big
Unexecuted instantiation: attachment.c:vlc_thread_name_too_big
Unexecuted instantiation: timer.c:vlc_thread_name_too_big
Unexecuted instantiation: track.c:vlc_thread_name_too_big
Unexecuted instantiation: title.c:vlc_thread_name_too_big
Unexecuted instantiation: aout.c:vlc_thread_name_too_big
Unexecuted instantiation: vout.c:vlc_thread_name_too_big
Unexecuted instantiation: osd.c:vlc_thread_name_too_big
Unexecuted instantiation: medialib.c:vlc_thread_name_too_big
Unexecuted instantiation: resource.c:vlc_thread_name_too_big
Unexecuted instantiation: services_discovery.c:vlc_thread_name_too_big
Unexecuted instantiation: stats.c:vlc_thread_name_too_big
Unexecuted instantiation: stream.c:vlc_thread_name_too_big
Unexecuted instantiation: stream_extractor.c:vlc_thread_name_too_big
Unexecuted instantiation: stream_filter.c:vlc_thread_name_too_big
Unexecuted instantiation: stream_memory.c:vlc_thread_name_too_big
Unexecuted instantiation: subtitles.c:vlc_thread_name_too_big
Unexecuted instantiation: dec.c:vlc_thread_name_too_big
Unexecuted instantiation: filters.c:vlc_thread_name_too_big
Unexecuted instantiation: meter.c:vlc_thread_name_too_big
Unexecuted instantiation: output.c:vlc_thread_name_too_big
Unexecuted instantiation: volume.c:vlc_thread_name_too_big
Unexecuted instantiation: video_output.c:vlc_thread_name_too_big
Unexecuted instantiation: video_text.c:vlc_thread_name_too_big
Unexecuted instantiation: video_widgets.c:vlc_thread_name_too_big
Unexecuted instantiation: vout_subpictures.c:vlc_thread_name_too_big
Unexecuted instantiation: video_window.c:vlc_thread_name_too_big
Unexecuted instantiation: window.c:vlc_thread_name_too_big
Unexecuted instantiation: vout_intf.c:vlc_thread_name_too_big
Unexecuted instantiation: charset.c:vlc_thread_name_too_big
Unexecuted instantiation: strings.c:vlc_thread_name_too_big
Unexecuted instantiation: unicode.c:vlc_thread_name_too_big
Unexecuted instantiation: actions.c:vlc_thread_name_too_big
Unexecuted instantiation: executor.c:vlc_thread_name_too_big
Unexecuted instantiation: probe.c:vlc_thread_name_too_big
Unexecuted instantiation: frame.c:vlc_thread_name_too_big
Unexecuted instantiation: fifo.c:vlc_thread_name_too_big
Unexecuted instantiation: picture.c:vlc_thread_name_too_big
Unexecuted instantiation: picture_fifo.c:vlc_thread_name_too_big
Unexecuted instantiation: picture_pool.c:vlc_thread_name_too_big
Unexecuted instantiation: interrupt.c:vlc_thread_name_too_big
Unexecuted instantiation: keystore.c:vlc_thread_name_too_big
Unexecuted instantiation: rcu.c:vlc_thread_name_too_big
Unexecuted instantiation: renderer_discovery.c:vlc_thread_name_too_big
Unexecuted instantiation: threads.c:vlc_thread_name_too_big
Unexecuted instantiation: cpu.c:vlc_thread_name_too_big
Unexecuted instantiation: exit.c:vlc_thread_name_too_big
Unexecuted instantiation: image.c:vlc_thread_name_too_big
Unexecuted instantiation: messages.c:vlc_thread_name_too_big
Unexecuted instantiation: tracer.c:vlc_thread_name_too_big
Unexecuted instantiation: objects.c:vlc_thread_name_too_big
Unexecuted instantiation: objres.c:vlc_thread_name_too_big
Unexecuted instantiation: queue.c:vlc_thread_name_too_big
Unexecuted instantiation: variables.c:vlc_thread_name_too_big
Unexecuted instantiation: xml.c:vlc_thread_name_too_big
Unexecuted instantiation: filter.c:vlc_thread_name_too_big
Unexecuted instantiation: filter_chain.c:vlc_thread_name_too_big
Unexecuted instantiation: httpcookies.c:vlc_thread_name_too_big
Unexecuted instantiation: subpicture.c:vlc_thread_name_too_big
Unexecuted instantiation: medialibrary.c:vlc_thread_name_too_big
Unexecuted instantiation: thread.c:vlc_thread_name_too_big
Unexecuted instantiation: rand.c:vlc_thread_name_too_big
Unexecuted instantiation: specific.c:vlc_thread_name_too_big
Unexecuted instantiation: stream_output.c:vlc_thread_name_too_big
Unexecuted instantiation: vlm.c:vlc_thread_name_too_big
Unexecuted instantiation: vlm_event.c:vlc_thread_name_too_big
Unexecuted instantiation: vlmshell.c:vlc_thread_name_too_big
Unexecuted instantiation: libvlc-module.c:vlc_thread_name_too_big
Unexecuted instantiation: art.c:vlc_thread_name_too_big
Unexecuted instantiation: fetcher.c:vlc_thread_name_too_big
Unexecuted instantiation: clock.c:vlc_thread_name_too_big
Unexecuted instantiation: es_out.c:vlc_thread_name_too_big
Unexecuted instantiation: es_out_source.c:vlc_thread_name_too_big
Unexecuted instantiation: es_out_timeshift.c:vlc_thread_name_too_big
Unexecuted instantiation: display.c:vlc_thread_name_too_big
Unexecuted instantiation: inhibit.c:vlc_thread_name_too_big
Unexecuted instantiation: interlacing.c:vlc_thread_name_too_big
Unexecuted instantiation: snapshot.c:vlc_thread_name_too_big
Unexecuted instantiation: io.c:vlc_thread_name_too_big
Unexecuted instantiation: chroma_probe.c:vlc_thread_name_too_big
Unexecuted instantiation: dirs.c:vlc_thread_name_too_big
Unexecuted instantiation: getaddrinfo.c:vlc_thread_name_too_big
Unexecuted instantiation: input_clock.c:vlc_thread_name_too_big
674
675
# define check_name_length( thread_name ) \
676
0
    ((__builtin_constant_p(__builtin_strlen(thread_name) > 15) && \
677
0
      __builtin_strlen(thread_name) > 15) \
678
0
      ? vlc_thread_name_too_big(thread_name): thread_name)
679
#endif
680
681
/**
682
 * Set the thread name of the current thread.
683
 *
684
 * \param name the string to use as the thread name
685
 *
686
 * \note On Linux the name can be up to 16-byte long, including the terminating
687
 *       nul character. If larger, the name will be truncated.
688
 */
689
VLC_API void vlc_thread_set_name(const char *name);
690
#if defined(check_name_length)
691
0
# define vlc_thread_set_name(name)  vlc_thread_set_name(check_name_length(name))
692
#endif
693
694
/**
695
 * Marks a thread as cancelled.
696
 *
697
 * Next time the target thread reaches a cancellation point (while not having
698
 * disabled cancellation), it will run its cancellation cleanup handler, the
699
 * thread variable destructors, and terminate.
700
 *
701
 * vlc_join() must be used regardless of a thread being cancelled or not, to
702
 * avoid leaking resources.
703
 */
704
VLC_API void vlc_cancel(vlc_thread_t);
705
706
/**
707
 * Waits for a thread to complete (if needed), then destroys it.
708
 *
709
 * \note This is a cancellation point. In case of cancellation, the thread is
710
 * <b>not</b> joined.
711
712
 * \warning A thread cannot join itself (normally VLC will abort if this is
713
 * attempted).
714
 *
715
 * @param th thread handle
716
 * @param result [OUT] pointer to write the thread return value or NULL
717
 */
718
VLC_API void vlc_join(vlc_thread_t th, void **result);
719
720
/**
721
 * Disables thread cancellation.
722
 *
723
 * This functions saves the current cancellation state (enabled or disabled),
724
 * then disables cancellation for the calling thread. It must be called before
725
 * entering a piece of code that is not cancellation-safe, unless it can be
726
 * proven that the calling thread will not be cancelled.
727
 *
728
 * \note This function is not a cancellation point.
729
 *
730
 * \return Previous cancellation state (opaque value for vlc_restorecancel()).
731
 */
732
VLC_API int vlc_savecancel(void);
733
734
/**
735
 * Restores the cancellation state.
736
 *
737
 * This function restores the cancellation state of the calling thread to
738
 * a state previously saved by vlc_savecancel().
739
 *
740
 * \note This function is not a cancellation point.
741
 *
742
 * \param state previous state as returned by vlc_savecancel().
743
 */
744
VLC_API void vlc_restorecancel(int state);
745
746
typedef struct vlc_cleanup_t vlc_cleanup_t;
747
748
/**
749
 * Internal handler for thread cancellation.
750
 *
751
 * Do not call this function directly. Use wrapper macros instead:
752
 * vlc_cleanup_push(), vlc_cleanup_pop().
753
 */
754
VLC_API void vlc_control_cancel(vlc_cleanup_t *);
755
756
/**
757
 * Thread identifier.
758
 *
759
 * This function returns a non-zero unique identifier of the calling thread.
760
 * The identifier cannot change for the entire lifetime of the thread, and two
761
 * concurrent threads cannot have the same identifier.
762
 *
763
 * The thread identifier has no defined semantics other than uniqueness,
764
 * and no particular purposes within LibVLC.
765
 * It is provided mainly for tracing and debugging.
766
 *
767
 * On some but not all supported platforms, the thread identifier is in fact
768
 * the OS/kernel thread identifier (a.k.a. task PID), and is temporally unique
769
 * not only within the process but across the entire system.
770
 *
771
 * \note
772
 * The `main()` thread identifier is typically identical to the process
773
 * identifier, but this is not portable.
774
 *
775
 * \return the thread identifier (cannot fail)
776
 */
777
VLC_API unsigned long vlc_thread_id(void) VLC_USED;
778
779
/**
780
 * Precision monotonic clock.
781
 *
782
 * In principles, the clock has a precision of 1 MHz. But the actual resolution
783
 * may be much lower, especially when it comes to sleeping with vlc_tick_wait() or
784
 * vlc_tick_sleep(). Most general-purpose operating systems provide a resolution of
785
 * only 100 to 1000 Hz.
786
 *
787
 * \warning The origin date (time value "zero") is not specified. It is
788
 * typically the time the kernel started, but this is platform-dependent.
789
 * If you need wall clock time, use gettimeofday() instead.
790
 *
791
 * \return a timestamp in microseconds.
792
 */
793
VLC_API vlc_tick_t vlc_tick_now(void);
794
795
/**
796
 * Waits until a deadline.
797
 *
798
 * \param deadline timestamp to wait for (\ref vlc_tick_now())
799
 *
800
 * \note The deadline may be exceeded due to OS scheduling.
801
 * \note This function is a cancellation point.
802
 */
803
VLC_API void vlc_tick_wait(vlc_tick_t deadline);
804
805
/**
806
 * Waits for an interval of time.
807
 *
808
 * \param delay how long to wait (in microseconds)
809
 *
810
 * \note The delay may be exceeded due to OS scheduling.
811
 * \note This function is a cancellation point.
812
 */
813
VLC_API void vlc_tick_sleep(vlc_tick_t delay);
814
815
0
#define VLC_HARD_MIN_SLEEP  VLC_TICK_FROM_MS(10)   /* 10 milliseconds = 1 tick at 100Hz */
816
0
#define VLC_SOFT_MIN_SLEEP  VLC_TICK_FROM_SEC(9)   /* 9 seconds */
817
818
#if defined(__GNUC__)
819
820
/* Linux has 100, 250, 300 or 1000Hz
821
 *
822
 * HZ=100 by default on FreeBSD, but some architectures use a 1000Hz timer
823
 */
824
825
static
826
VLC_UNUSED_FUNC
827
VLC_ERROR_CALL("sorry, cannot sleep for such short a time")
828
vlc_tick_t impossible_delay( vlc_tick_t delay )
829
0
{
830
0
    (void) delay;
831
0
    return VLC_HARD_MIN_SLEEP;
832
0
}
Unexecuted instantiation: demux-run.c:impossible_delay
Unexecuted instantiation: common.c:impossible_delay
Unexecuted instantiation: var.c:impossible_delay
Unexecuted instantiation: decoder.c:impossible_delay
Unexecuted instantiation: core.c:impossible_delay
Unexecuted instantiation: error.c:impossible_delay
Unexecuted instantiation: aiff.c:impossible_delay
Unexecuted instantiation: asf.c:impossible_delay
Unexecuted instantiation: libasf.c:impossible_delay
Unexecuted instantiation: asfpacket.c:impossible_delay
Unexecuted instantiation: au.c:impossible_delay
Unexecuted instantiation: avi.c:impossible_delay
Unexecuted instantiation: libavi.c:impossible_delay
Unexecuted instantiation: caf.c:impossible_delay
Unexecuted instantiation: cdg.c:impossible_delay
Unexecuted instantiation: es.c:impossible_delay
Unexecuted instantiation: dts_header.c:impossible_delay
Unexecuted instantiation: flac.c:impossible_delay
Unexecuted instantiation: xiph_metadata.c:impossible_delay
Unexecuted instantiation: h26x.c:impossible_delay
Unexecuted instantiation: mjpeg.c:impossible_delay
Unexecuted instantiation: mp4.c:impossible_delay
Unexecuted instantiation: fragments.c:impossible_delay
Unexecuted instantiation: attachments.c:impossible_delay
Unexecuted instantiation: heif.c:impossible_delay
Unexecuted instantiation: essetup.c:impossible_delay
Unexecuted instantiation: meta.c:impossible_delay
Unexecuted instantiation: libmp4.c:impossible_delay
Unexecuted instantiation: nsv.c:impossible_delay
Unexecuted instantiation: ps.c:impossible_delay
Unexecuted instantiation: pva.c:impossible_delay
Unexecuted instantiation: sap.c:impossible_delay
Unexecuted instantiation: smf.c:impossible_delay
Unexecuted instantiation: subtitle.c:impossible_delay
Unexecuted instantiation: tta.c:impossible_delay
Unexecuted instantiation: encttml.c:impossible_delay
Unexecuted instantiation: substtml.c:impossible_delay
Unexecuted instantiation: ttml.c:impossible_delay
Unexecuted instantiation: ty.c:impossible_delay
Unexecuted instantiation: voc.c:impossible_delay
Unexecuted instantiation: wav.c:impossible_delay
Unexecuted instantiation: webvtt.c:impossible_delay
Unexecuted instantiation: encvtt.c:impossible_delay
Unexecuted instantiation: subsvtt.c:impossible_delay
Unexecuted instantiation: xa.c:impossible_delay
Unexecuted instantiation: a52.c:impossible_delay
Unexecuted instantiation: copy.c:impossible_delay
Unexecuted instantiation: dts.c:impossible_delay
Unexecuted instantiation: h264.c:impossible_delay
Unexecuted instantiation: hxxx_sei.c:impossible_delay
Unexecuted instantiation: hxxx_common.c:impossible_delay
Unexecuted instantiation: h264_nal.c:impossible_delay
Unexecuted instantiation: h264_slice.c:impossible_delay
Unexecuted instantiation: hevc.c:impossible_delay
Unexecuted instantiation: hevc_nal.c:impossible_delay
Unexecuted instantiation: mlp.c:impossible_delay
Unexecuted instantiation: mpeg4audio.c:impossible_delay
Unexecuted instantiation: mpeg4video.c:impossible_delay
Unexecuted instantiation: mpegaudio.c:impossible_delay
Unexecuted instantiation: mpegvideo.c:impossible_delay
Unexecuted instantiation: vc1.c:impossible_delay
Unexecuted instantiation: rawaud.c:impossible_delay
Unexecuted instantiation: rawvid.c:impossible_delay
Unexecuted instantiation: file.c:impossible_delay
Unexecuted instantiation: directory.c:impossible_delay
Unexecuted instantiation: libxml.c:impossible_delay
Unexecuted instantiation: ogg.c:impossible_delay
Unexecuted instantiation: oggseek.c:impossible_delay
Unexecuted instantiation: mkv.cpp:impossible_delay(long)
Unexecuted instantiation: util.cpp:impossible_delay(long)
Unexecuted instantiation: virtual_segment.cpp:impossible_delay(long)
Unexecuted instantiation: matroska_segment.cpp:impossible_delay(long)
Unexecuted instantiation: matroska_segment_parse.cpp:impossible_delay(long)
Unexecuted instantiation: matroska_segment_seeker.cpp:impossible_delay(long)
Unexecuted instantiation: demux.cpp:impossible_delay(long)
Unexecuted instantiation: events.cpp:impossible_delay(long)
Unexecuted instantiation: Ebml_parser.cpp:impossible_delay(long)
Unexecuted instantiation: chapters.cpp:impossible_delay(long)
Unexecuted instantiation: chapter_command.cpp:impossible_delay(long)
Unexecuted instantiation: chapter_command_dvd.cpp:impossible_delay(long)
Unexecuted instantiation: chapter_command_script.cpp:impossible_delay(long)
Unexecuted instantiation: chapter_command_script_common.cpp:impossible_delay(long)
Unexecuted instantiation: stream_io_callback.cpp:impossible_delay(long)
Unexecuted instantiation: adpcm.c:impossible_delay
Unexecuted instantiation: aes3.c:impossible_delay
Unexecuted instantiation: araw.c:impossible_delay
Unexecuted instantiation: g711.c:impossible_delay
Unexecuted instantiation: lpcm.c:impossible_delay
Unexecuted instantiation: uleaddvaudio.c:impossible_delay
Unexecuted instantiation: rawvideo.c:impossible_delay
Unexecuted instantiation: cc.c:impossible_delay
Unexecuted instantiation: cea708.c:impossible_delay
Unexecuted instantiation: cvdsub.c:impossible_delay
Unexecuted instantiation: dvbsub.c:impossible_delay
Unexecuted instantiation: scte18.c:impossible_delay
Unexecuted instantiation: scte27.c:impossible_delay
Unexecuted instantiation: spudec.c:impossible_delay
Unexecuted instantiation: parse.c:impossible_delay
Unexecuted instantiation: stl.c:impossible_delay
Unexecuted instantiation: subsdec.c:impossible_delay
Unexecuted instantiation: subsusf.c:impossible_delay
Unexecuted instantiation: svcdsub.c:impossible_delay
Unexecuted instantiation: textst.c:impossible_delay
Unexecuted instantiation: substx3g.c:impossible_delay
Unexecuted instantiation: libvlc.c:impossible_delay
Unexecuted instantiation: chain.c:impossible_delay
Unexecuted instantiation: help.c:impossible_delay
Unexecuted instantiation: cmdline.c:impossible_delay
Unexecuted instantiation: media_source.c:impossible_delay
Unexecuted instantiation: media_tree.c:impossible_delay
Unexecuted instantiation: modules.c:impossible_delay
Unexecuted instantiation: bank.c:impossible_delay
Unexecuted instantiation: entry.c:impossible_delay
Unexecuted instantiation: dialog.c:impossible_delay
Unexecuted instantiation: interface.c:impossible_delay
Unexecuted instantiation: content.c:impossible_delay
Unexecuted instantiation: control.c:impossible_delay
Unexecuted instantiation: item.c:impossible_delay
Unexecuted instantiation: notify.c:impossible_delay
Unexecuted instantiation: player.c:impossible_delay
Unexecuted instantiation: playlist.c:impossible_delay
Unexecuted instantiation: preparse.c:impossible_delay
Unexecuted instantiation: preparser.c:impossible_delay
Unexecuted instantiation: access.c:impossible_delay
Unexecuted instantiation: decoder_device.c:impossible_delay
Unexecuted instantiation: decoder_helpers.c:impossible_delay
Unexecuted instantiation: demux.c:impossible_delay
Unexecuted instantiation: input.c:impossible_delay
Unexecuted instantiation: attachment.c:impossible_delay
Unexecuted instantiation: timer.c:impossible_delay
Unexecuted instantiation: track.c:impossible_delay
Unexecuted instantiation: title.c:impossible_delay
Unexecuted instantiation: aout.c:impossible_delay
Unexecuted instantiation: vout.c:impossible_delay
Unexecuted instantiation: osd.c:impossible_delay
Unexecuted instantiation: medialib.c:impossible_delay
Unexecuted instantiation: resource.c:impossible_delay
Unexecuted instantiation: services_discovery.c:impossible_delay
Unexecuted instantiation: stats.c:impossible_delay
Unexecuted instantiation: stream.c:impossible_delay
Unexecuted instantiation: stream_extractor.c:impossible_delay
Unexecuted instantiation: stream_filter.c:impossible_delay
Unexecuted instantiation: stream_memory.c:impossible_delay
Unexecuted instantiation: subtitles.c:impossible_delay
Unexecuted instantiation: dec.c:impossible_delay
Unexecuted instantiation: filters.c:impossible_delay
Unexecuted instantiation: meter.c:impossible_delay
Unexecuted instantiation: output.c:impossible_delay
Unexecuted instantiation: volume.c:impossible_delay
Unexecuted instantiation: video_output.c:impossible_delay
Unexecuted instantiation: video_text.c:impossible_delay
Unexecuted instantiation: video_widgets.c:impossible_delay
Unexecuted instantiation: vout_subpictures.c:impossible_delay
Unexecuted instantiation: video_window.c:impossible_delay
Unexecuted instantiation: window.c:impossible_delay
Unexecuted instantiation: vout_intf.c:impossible_delay
Unexecuted instantiation: charset.c:impossible_delay
Unexecuted instantiation: strings.c:impossible_delay
Unexecuted instantiation: unicode.c:impossible_delay
Unexecuted instantiation: actions.c:impossible_delay
Unexecuted instantiation: executor.c:impossible_delay
Unexecuted instantiation: probe.c:impossible_delay
Unexecuted instantiation: frame.c:impossible_delay
Unexecuted instantiation: fifo.c:impossible_delay
Unexecuted instantiation: picture.c:impossible_delay
Unexecuted instantiation: picture_fifo.c:impossible_delay
Unexecuted instantiation: picture_pool.c:impossible_delay
Unexecuted instantiation: interrupt.c:impossible_delay
Unexecuted instantiation: keystore.c:impossible_delay
Unexecuted instantiation: rcu.c:impossible_delay
Unexecuted instantiation: renderer_discovery.c:impossible_delay
Unexecuted instantiation: threads.c:impossible_delay
Unexecuted instantiation: cpu.c:impossible_delay
Unexecuted instantiation: exit.c:impossible_delay
Unexecuted instantiation: image.c:impossible_delay
Unexecuted instantiation: messages.c:impossible_delay
Unexecuted instantiation: tracer.c:impossible_delay
Unexecuted instantiation: objects.c:impossible_delay
Unexecuted instantiation: objres.c:impossible_delay
Unexecuted instantiation: queue.c:impossible_delay
Unexecuted instantiation: variables.c:impossible_delay
Unexecuted instantiation: xml.c:impossible_delay
Unexecuted instantiation: filter.c:impossible_delay
Unexecuted instantiation: filter_chain.c:impossible_delay
Unexecuted instantiation: httpcookies.c:impossible_delay
Unexecuted instantiation: subpicture.c:impossible_delay
Unexecuted instantiation: medialibrary.c:impossible_delay
Unexecuted instantiation: thread.c:impossible_delay
Unexecuted instantiation: rand.c:impossible_delay
Unexecuted instantiation: specific.c:impossible_delay
Unexecuted instantiation: stream_output.c:impossible_delay
Unexecuted instantiation: vlm.c:impossible_delay
Unexecuted instantiation: vlm_event.c:impossible_delay
Unexecuted instantiation: vlmshell.c:impossible_delay
Unexecuted instantiation: libvlc-module.c:impossible_delay
Unexecuted instantiation: art.c:impossible_delay
Unexecuted instantiation: fetcher.c:impossible_delay
Unexecuted instantiation: clock.c:impossible_delay
Unexecuted instantiation: es_out.c:impossible_delay
Unexecuted instantiation: es_out_source.c:impossible_delay
Unexecuted instantiation: es_out_timeshift.c:impossible_delay
Unexecuted instantiation: display.c:impossible_delay
Unexecuted instantiation: inhibit.c:impossible_delay
Unexecuted instantiation: interlacing.c:impossible_delay
Unexecuted instantiation: snapshot.c:impossible_delay
Unexecuted instantiation: io.c:impossible_delay
Unexecuted instantiation: chroma_probe.c:impossible_delay
Unexecuted instantiation: dirs.c:impossible_delay
Unexecuted instantiation: getaddrinfo.c:impossible_delay
Unexecuted instantiation: input_clock.c:impossible_delay
833
834
static
835
VLC_UNUSED_FUNC
836
VLC_WARN_CALL("use proper event handling instead of short delay")
837
vlc_tick_t harmful_delay( vlc_tick_t delay )
838
0
{
839
0
    return delay;
840
0
}
Unexecuted instantiation: demux-run.c:harmful_delay
Unexecuted instantiation: common.c:harmful_delay
Unexecuted instantiation: var.c:harmful_delay
Unexecuted instantiation: decoder.c:harmful_delay
Unexecuted instantiation: core.c:harmful_delay
Unexecuted instantiation: error.c:harmful_delay
Unexecuted instantiation: aiff.c:harmful_delay
Unexecuted instantiation: asf.c:harmful_delay
Unexecuted instantiation: libasf.c:harmful_delay
Unexecuted instantiation: asfpacket.c:harmful_delay
Unexecuted instantiation: au.c:harmful_delay
Unexecuted instantiation: avi.c:harmful_delay
Unexecuted instantiation: libavi.c:harmful_delay
Unexecuted instantiation: caf.c:harmful_delay
Unexecuted instantiation: cdg.c:harmful_delay
Unexecuted instantiation: es.c:harmful_delay
Unexecuted instantiation: dts_header.c:harmful_delay
Unexecuted instantiation: flac.c:harmful_delay
Unexecuted instantiation: xiph_metadata.c:harmful_delay
Unexecuted instantiation: h26x.c:harmful_delay
Unexecuted instantiation: mjpeg.c:harmful_delay
Unexecuted instantiation: mp4.c:harmful_delay
Unexecuted instantiation: fragments.c:harmful_delay
Unexecuted instantiation: attachments.c:harmful_delay
Unexecuted instantiation: heif.c:harmful_delay
Unexecuted instantiation: essetup.c:harmful_delay
Unexecuted instantiation: meta.c:harmful_delay
Unexecuted instantiation: libmp4.c:harmful_delay
Unexecuted instantiation: nsv.c:harmful_delay
Unexecuted instantiation: ps.c:harmful_delay
Unexecuted instantiation: pva.c:harmful_delay
Unexecuted instantiation: sap.c:harmful_delay
Unexecuted instantiation: smf.c:harmful_delay
Unexecuted instantiation: subtitle.c:harmful_delay
Unexecuted instantiation: tta.c:harmful_delay
Unexecuted instantiation: encttml.c:harmful_delay
Unexecuted instantiation: substtml.c:harmful_delay
Unexecuted instantiation: ttml.c:harmful_delay
Unexecuted instantiation: ty.c:harmful_delay
Unexecuted instantiation: voc.c:harmful_delay
Unexecuted instantiation: wav.c:harmful_delay
Unexecuted instantiation: webvtt.c:harmful_delay
Unexecuted instantiation: encvtt.c:harmful_delay
Unexecuted instantiation: subsvtt.c:harmful_delay
Unexecuted instantiation: xa.c:harmful_delay
Unexecuted instantiation: a52.c:harmful_delay
Unexecuted instantiation: copy.c:harmful_delay
Unexecuted instantiation: dts.c:harmful_delay
Unexecuted instantiation: h264.c:harmful_delay
Unexecuted instantiation: hxxx_sei.c:harmful_delay
Unexecuted instantiation: hxxx_common.c:harmful_delay
Unexecuted instantiation: h264_nal.c:harmful_delay
Unexecuted instantiation: h264_slice.c:harmful_delay
Unexecuted instantiation: hevc.c:harmful_delay
Unexecuted instantiation: hevc_nal.c:harmful_delay
Unexecuted instantiation: mlp.c:harmful_delay
Unexecuted instantiation: mpeg4audio.c:harmful_delay
Unexecuted instantiation: mpeg4video.c:harmful_delay
Unexecuted instantiation: mpegaudio.c:harmful_delay
Unexecuted instantiation: mpegvideo.c:harmful_delay
Unexecuted instantiation: vc1.c:harmful_delay
Unexecuted instantiation: rawaud.c:harmful_delay
Unexecuted instantiation: rawvid.c:harmful_delay
Unexecuted instantiation: file.c:harmful_delay
Unexecuted instantiation: directory.c:harmful_delay
Unexecuted instantiation: libxml.c:harmful_delay
Unexecuted instantiation: ogg.c:harmful_delay
Unexecuted instantiation: oggseek.c:harmful_delay
Unexecuted instantiation: mkv.cpp:harmful_delay(long)
Unexecuted instantiation: util.cpp:harmful_delay(long)
Unexecuted instantiation: virtual_segment.cpp:harmful_delay(long)
Unexecuted instantiation: matroska_segment.cpp:harmful_delay(long)
Unexecuted instantiation: matroska_segment_parse.cpp:harmful_delay(long)
Unexecuted instantiation: matroska_segment_seeker.cpp:harmful_delay(long)
Unexecuted instantiation: demux.cpp:harmful_delay(long)
Unexecuted instantiation: events.cpp:harmful_delay(long)
Unexecuted instantiation: Ebml_parser.cpp:harmful_delay(long)
Unexecuted instantiation: chapters.cpp:harmful_delay(long)
Unexecuted instantiation: chapter_command.cpp:harmful_delay(long)
Unexecuted instantiation: chapter_command_dvd.cpp:harmful_delay(long)
Unexecuted instantiation: chapter_command_script.cpp:harmful_delay(long)
Unexecuted instantiation: chapter_command_script_common.cpp:harmful_delay(long)
Unexecuted instantiation: stream_io_callback.cpp:harmful_delay(long)
Unexecuted instantiation: adpcm.c:harmful_delay
Unexecuted instantiation: aes3.c:harmful_delay
Unexecuted instantiation: araw.c:harmful_delay
Unexecuted instantiation: g711.c:harmful_delay
Unexecuted instantiation: lpcm.c:harmful_delay
Unexecuted instantiation: uleaddvaudio.c:harmful_delay
Unexecuted instantiation: rawvideo.c:harmful_delay
Unexecuted instantiation: cc.c:harmful_delay
Unexecuted instantiation: cea708.c:harmful_delay
Unexecuted instantiation: cvdsub.c:harmful_delay
Unexecuted instantiation: dvbsub.c:harmful_delay
Unexecuted instantiation: scte18.c:harmful_delay
Unexecuted instantiation: scte27.c:harmful_delay
Unexecuted instantiation: spudec.c:harmful_delay
Unexecuted instantiation: parse.c:harmful_delay
Unexecuted instantiation: stl.c:harmful_delay
Unexecuted instantiation: subsdec.c:harmful_delay
Unexecuted instantiation: subsusf.c:harmful_delay
Unexecuted instantiation: svcdsub.c:harmful_delay
Unexecuted instantiation: textst.c:harmful_delay
Unexecuted instantiation: substx3g.c:harmful_delay
Unexecuted instantiation: libvlc.c:harmful_delay
Unexecuted instantiation: chain.c:harmful_delay
Unexecuted instantiation: help.c:harmful_delay
Unexecuted instantiation: cmdline.c:harmful_delay
Unexecuted instantiation: media_source.c:harmful_delay
Unexecuted instantiation: media_tree.c:harmful_delay
Unexecuted instantiation: modules.c:harmful_delay
Unexecuted instantiation: bank.c:harmful_delay
Unexecuted instantiation: entry.c:harmful_delay
Unexecuted instantiation: dialog.c:harmful_delay
Unexecuted instantiation: interface.c:harmful_delay
Unexecuted instantiation: content.c:harmful_delay
Unexecuted instantiation: control.c:harmful_delay
Unexecuted instantiation: item.c:harmful_delay
Unexecuted instantiation: notify.c:harmful_delay
Unexecuted instantiation: player.c:harmful_delay
Unexecuted instantiation: playlist.c:harmful_delay
Unexecuted instantiation: preparse.c:harmful_delay
Unexecuted instantiation: preparser.c:harmful_delay
Unexecuted instantiation: access.c:harmful_delay
Unexecuted instantiation: decoder_device.c:harmful_delay
Unexecuted instantiation: decoder_helpers.c:harmful_delay
Unexecuted instantiation: demux.c:harmful_delay
Unexecuted instantiation: input.c:harmful_delay
Unexecuted instantiation: attachment.c:harmful_delay
Unexecuted instantiation: timer.c:harmful_delay
Unexecuted instantiation: track.c:harmful_delay
Unexecuted instantiation: title.c:harmful_delay
Unexecuted instantiation: aout.c:harmful_delay
Unexecuted instantiation: vout.c:harmful_delay
Unexecuted instantiation: osd.c:harmful_delay
Unexecuted instantiation: medialib.c:harmful_delay
Unexecuted instantiation: resource.c:harmful_delay
Unexecuted instantiation: services_discovery.c:harmful_delay
Unexecuted instantiation: stats.c:harmful_delay
Unexecuted instantiation: stream.c:harmful_delay
Unexecuted instantiation: stream_extractor.c:harmful_delay
Unexecuted instantiation: stream_filter.c:harmful_delay
Unexecuted instantiation: stream_memory.c:harmful_delay
Unexecuted instantiation: subtitles.c:harmful_delay
Unexecuted instantiation: dec.c:harmful_delay
Unexecuted instantiation: filters.c:harmful_delay
Unexecuted instantiation: meter.c:harmful_delay
Unexecuted instantiation: output.c:harmful_delay
Unexecuted instantiation: volume.c:harmful_delay
Unexecuted instantiation: video_output.c:harmful_delay
Unexecuted instantiation: video_text.c:harmful_delay
Unexecuted instantiation: video_widgets.c:harmful_delay
Unexecuted instantiation: vout_subpictures.c:harmful_delay
Unexecuted instantiation: video_window.c:harmful_delay
Unexecuted instantiation: window.c:harmful_delay
Unexecuted instantiation: vout_intf.c:harmful_delay
Unexecuted instantiation: charset.c:harmful_delay
Unexecuted instantiation: strings.c:harmful_delay
Unexecuted instantiation: unicode.c:harmful_delay
Unexecuted instantiation: actions.c:harmful_delay
Unexecuted instantiation: executor.c:harmful_delay
Unexecuted instantiation: probe.c:harmful_delay
Unexecuted instantiation: frame.c:harmful_delay
Unexecuted instantiation: fifo.c:harmful_delay
Unexecuted instantiation: picture.c:harmful_delay
Unexecuted instantiation: picture_fifo.c:harmful_delay
Unexecuted instantiation: picture_pool.c:harmful_delay
Unexecuted instantiation: interrupt.c:harmful_delay
Unexecuted instantiation: keystore.c:harmful_delay
Unexecuted instantiation: rcu.c:harmful_delay
Unexecuted instantiation: renderer_discovery.c:harmful_delay
Unexecuted instantiation: threads.c:harmful_delay
Unexecuted instantiation: cpu.c:harmful_delay
Unexecuted instantiation: exit.c:harmful_delay
Unexecuted instantiation: image.c:harmful_delay
Unexecuted instantiation: messages.c:harmful_delay
Unexecuted instantiation: tracer.c:harmful_delay
Unexecuted instantiation: objects.c:harmful_delay
Unexecuted instantiation: objres.c:harmful_delay
Unexecuted instantiation: queue.c:harmful_delay
Unexecuted instantiation: variables.c:harmful_delay
Unexecuted instantiation: xml.c:harmful_delay
Unexecuted instantiation: filter.c:harmful_delay
Unexecuted instantiation: filter_chain.c:harmful_delay
Unexecuted instantiation: httpcookies.c:harmful_delay
Unexecuted instantiation: subpicture.c:harmful_delay
Unexecuted instantiation: medialibrary.c:harmful_delay
Unexecuted instantiation: thread.c:harmful_delay
Unexecuted instantiation: rand.c:harmful_delay
Unexecuted instantiation: specific.c:harmful_delay
Unexecuted instantiation: stream_output.c:harmful_delay
Unexecuted instantiation: vlm.c:harmful_delay
Unexecuted instantiation: vlm_event.c:harmful_delay
Unexecuted instantiation: vlmshell.c:harmful_delay
Unexecuted instantiation: libvlc-module.c:harmful_delay
Unexecuted instantiation: art.c:harmful_delay
Unexecuted instantiation: fetcher.c:harmful_delay
Unexecuted instantiation: clock.c:harmful_delay
Unexecuted instantiation: es_out.c:harmful_delay
Unexecuted instantiation: es_out_source.c:harmful_delay
Unexecuted instantiation: es_out_timeshift.c:harmful_delay
Unexecuted instantiation: display.c:harmful_delay
Unexecuted instantiation: inhibit.c:harmful_delay
Unexecuted instantiation: interlacing.c:harmful_delay
Unexecuted instantiation: snapshot.c:harmful_delay
Unexecuted instantiation: io.c:harmful_delay
Unexecuted instantiation: chroma_probe.c:harmful_delay
Unexecuted instantiation: dirs.c:harmful_delay
Unexecuted instantiation: getaddrinfo.c:harmful_delay
Unexecuted instantiation: input_clock.c:harmful_delay
841
842
# define check_delay( d ) \
843
0
    ((__builtin_constant_p(d < VLC_HARD_MIN_SLEEP) \
844
0
   && (d < VLC_HARD_MIN_SLEEP)) \
845
0
       ? impossible_delay(d) \
846
0
       : ((__builtin_constant_p(d < VLC_SOFT_MIN_SLEEP) \
847
0
       && (d < VLC_SOFT_MIN_SLEEP)) \
848
0
           ? harmful_delay(d) \
849
0
           : d))
850
851
static
852
VLC_UNUSED_FUNC
853
VLC_ERROR_CALL("deadlines can not be constant")
854
vlc_tick_t impossible_deadline( vlc_tick_t deadline )
855
0
{
856
0
    return deadline;
857
0
}
Unexecuted instantiation: demux-run.c:impossible_deadline
Unexecuted instantiation: common.c:impossible_deadline
Unexecuted instantiation: var.c:impossible_deadline
Unexecuted instantiation: decoder.c:impossible_deadline
Unexecuted instantiation: core.c:impossible_deadline
Unexecuted instantiation: error.c:impossible_deadline
Unexecuted instantiation: aiff.c:impossible_deadline
Unexecuted instantiation: asf.c:impossible_deadline
Unexecuted instantiation: libasf.c:impossible_deadline
Unexecuted instantiation: asfpacket.c:impossible_deadline
Unexecuted instantiation: au.c:impossible_deadline
Unexecuted instantiation: avi.c:impossible_deadline
Unexecuted instantiation: libavi.c:impossible_deadline
Unexecuted instantiation: caf.c:impossible_deadline
Unexecuted instantiation: cdg.c:impossible_deadline
Unexecuted instantiation: es.c:impossible_deadline
Unexecuted instantiation: dts_header.c:impossible_deadline
Unexecuted instantiation: flac.c:impossible_deadline
Unexecuted instantiation: xiph_metadata.c:impossible_deadline
Unexecuted instantiation: h26x.c:impossible_deadline
Unexecuted instantiation: mjpeg.c:impossible_deadline
Unexecuted instantiation: mp4.c:impossible_deadline
Unexecuted instantiation: fragments.c:impossible_deadline
Unexecuted instantiation: attachments.c:impossible_deadline
Unexecuted instantiation: heif.c:impossible_deadline
Unexecuted instantiation: essetup.c:impossible_deadline
Unexecuted instantiation: meta.c:impossible_deadline
Unexecuted instantiation: libmp4.c:impossible_deadline
Unexecuted instantiation: nsv.c:impossible_deadline
Unexecuted instantiation: ps.c:impossible_deadline
Unexecuted instantiation: pva.c:impossible_deadline
Unexecuted instantiation: sap.c:impossible_deadline
Unexecuted instantiation: smf.c:impossible_deadline
Unexecuted instantiation: subtitle.c:impossible_deadline
Unexecuted instantiation: tta.c:impossible_deadline
Unexecuted instantiation: encttml.c:impossible_deadline
Unexecuted instantiation: substtml.c:impossible_deadline
Unexecuted instantiation: ttml.c:impossible_deadline
Unexecuted instantiation: ty.c:impossible_deadline
Unexecuted instantiation: voc.c:impossible_deadline
Unexecuted instantiation: wav.c:impossible_deadline
Unexecuted instantiation: webvtt.c:impossible_deadline
Unexecuted instantiation: encvtt.c:impossible_deadline
Unexecuted instantiation: subsvtt.c:impossible_deadline
Unexecuted instantiation: xa.c:impossible_deadline
Unexecuted instantiation: a52.c:impossible_deadline
Unexecuted instantiation: copy.c:impossible_deadline
Unexecuted instantiation: dts.c:impossible_deadline
Unexecuted instantiation: h264.c:impossible_deadline
Unexecuted instantiation: hxxx_sei.c:impossible_deadline
Unexecuted instantiation: hxxx_common.c:impossible_deadline
Unexecuted instantiation: h264_nal.c:impossible_deadline
Unexecuted instantiation: h264_slice.c:impossible_deadline
Unexecuted instantiation: hevc.c:impossible_deadline
Unexecuted instantiation: hevc_nal.c:impossible_deadline
Unexecuted instantiation: mlp.c:impossible_deadline
Unexecuted instantiation: mpeg4audio.c:impossible_deadline
Unexecuted instantiation: mpeg4video.c:impossible_deadline
Unexecuted instantiation: mpegaudio.c:impossible_deadline
Unexecuted instantiation: mpegvideo.c:impossible_deadline
Unexecuted instantiation: vc1.c:impossible_deadline
Unexecuted instantiation: rawaud.c:impossible_deadline
Unexecuted instantiation: rawvid.c:impossible_deadline
Unexecuted instantiation: file.c:impossible_deadline
Unexecuted instantiation: directory.c:impossible_deadline
Unexecuted instantiation: libxml.c:impossible_deadline
Unexecuted instantiation: ogg.c:impossible_deadline
Unexecuted instantiation: oggseek.c:impossible_deadline
Unexecuted instantiation: mkv.cpp:impossible_deadline(long)
Unexecuted instantiation: util.cpp:impossible_deadline(long)
Unexecuted instantiation: virtual_segment.cpp:impossible_deadline(long)
Unexecuted instantiation: matroska_segment.cpp:impossible_deadline(long)
Unexecuted instantiation: matroska_segment_parse.cpp:impossible_deadline(long)
Unexecuted instantiation: matroska_segment_seeker.cpp:impossible_deadline(long)
Unexecuted instantiation: demux.cpp:impossible_deadline(long)
Unexecuted instantiation: events.cpp:impossible_deadline(long)
Unexecuted instantiation: Ebml_parser.cpp:impossible_deadline(long)
Unexecuted instantiation: chapters.cpp:impossible_deadline(long)
Unexecuted instantiation: chapter_command.cpp:impossible_deadline(long)
Unexecuted instantiation: chapter_command_dvd.cpp:impossible_deadline(long)
Unexecuted instantiation: chapter_command_script.cpp:impossible_deadline(long)
Unexecuted instantiation: chapter_command_script_common.cpp:impossible_deadline(long)
Unexecuted instantiation: stream_io_callback.cpp:impossible_deadline(long)
Unexecuted instantiation: adpcm.c:impossible_deadline
Unexecuted instantiation: aes3.c:impossible_deadline
Unexecuted instantiation: araw.c:impossible_deadline
Unexecuted instantiation: g711.c:impossible_deadline
Unexecuted instantiation: lpcm.c:impossible_deadline
Unexecuted instantiation: uleaddvaudio.c:impossible_deadline
Unexecuted instantiation: rawvideo.c:impossible_deadline
Unexecuted instantiation: cc.c:impossible_deadline
Unexecuted instantiation: cea708.c:impossible_deadline
Unexecuted instantiation: cvdsub.c:impossible_deadline
Unexecuted instantiation: dvbsub.c:impossible_deadline
Unexecuted instantiation: scte18.c:impossible_deadline
Unexecuted instantiation: scte27.c:impossible_deadline
Unexecuted instantiation: spudec.c:impossible_deadline
Unexecuted instantiation: parse.c:impossible_deadline
Unexecuted instantiation: stl.c:impossible_deadline
Unexecuted instantiation: subsdec.c:impossible_deadline
Unexecuted instantiation: subsusf.c:impossible_deadline
Unexecuted instantiation: svcdsub.c:impossible_deadline
Unexecuted instantiation: textst.c:impossible_deadline
Unexecuted instantiation: substx3g.c:impossible_deadline
Unexecuted instantiation: libvlc.c:impossible_deadline
Unexecuted instantiation: chain.c:impossible_deadline
Unexecuted instantiation: help.c:impossible_deadline
Unexecuted instantiation: cmdline.c:impossible_deadline
Unexecuted instantiation: media_source.c:impossible_deadline
Unexecuted instantiation: media_tree.c:impossible_deadline
Unexecuted instantiation: modules.c:impossible_deadline
Unexecuted instantiation: bank.c:impossible_deadline
Unexecuted instantiation: entry.c:impossible_deadline
Unexecuted instantiation: dialog.c:impossible_deadline
Unexecuted instantiation: interface.c:impossible_deadline
Unexecuted instantiation: content.c:impossible_deadline
Unexecuted instantiation: control.c:impossible_deadline
Unexecuted instantiation: item.c:impossible_deadline
Unexecuted instantiation: notify.c:impossible_deadline
Unexecuted instantiation: player.c:impossible_deadline
Unexecuted instantiation: playlist.c:impossible_deadline
Unexecuted instantiation: preparse.c:impossible_deadline
Unexecuted instantiation: preparser.c:impossible_deadline
Unexecuted instantiation: access.c:impossible_deadline
Unexecuted instantiation: decoder_device.c:impossible_deadline
Unexecuted instantiation: decoder_helpers.c:impossible_deadline
Unexecuted instantiation: demux.c:impossible_deadline
Unexecuted instantiation: input.c:impossible_deadline
Unexecuted instantiation: attachment.c:impossible_deadline
Unexecuted instantiation: timer.c:impossible_deadline
Unexecuted instantiation: track.c:impossible_deadline
Unexecuted instantiation: title.c:impossible_deadline
Unexecuted instantiation: aout.c:impossible_deadline
Unexecuted instantiation: vout.c:impossible_deadline
Unexecuted instantiation: osd.c:impossible_deadline
Unexecuted instantiation: medialib.c:impossible_deadline
Unexecuted instantiation: resource.c:impossible_deadline
Unexecuted instantiation: services_discovery.c:impossible_deadline
Unexecuted instantiation: stats.c:impossible_deadline
Unexecuted instantiation: stream.c:impossible_deadline
Unexecuted instantiation: stream_extractor.c:impossible_deadline
Unexecuted instantiation: stream_filter.c:impossible_deadline
Unexecuted instantiation: stream_memory.c:impossible_deadline
Unexecuted instantiation: subtitles.c:impossible_deadline
Unexecuted instantiation: dec.c:impossible_deadline
Unexecuted instantiation: filters.c:impossible_deadline
Unexecuted instantiation: meter.c:impossible_deadline
Unexecuted instantiation: output.c:impossible_deadline
Unexecuted instantiation: volume.c:impossible_deadline
Unexecuted instantiation: video_output.c:impossible_deadline
Unexecuted instantiation: video_text.c:impossible_deadline
Unexecuted instantiation: video_widgets.c:impossible_deadline
Unexecuted instantiation: vout_subpictures.c:impossible_deadline
Unexecuted instantiation: video_window.c:impossible_deadline
Unexecuted instantiation: window.c:impossible_deadline
Unexecuted instantiation: vout_intf.c:impossible_deadline
Unexecuted instantiation: charset.c:impossible_deadline
Unexecuted instantiation: strings.c:impossible_deadline
Unexecuted instantiation: unicode.c:impossible_deadline
Unexecuted instantiation: actions.c:impossible_deadline
Unexecuted instantiation: executor.c:impossible_deadline
Unexecuted instantiation: probe.c:impossible_deadline
Unexecuted instantiation: frame.c:impossible_deadline
Unexecuted instantiation: fifo.c:impossible_deadline
Unexecuted instantiation: picture.c:impossible_deadline
Unexecuted instantiation: picture_fifo.c:impossible_deadline
Unexecuted instantiation: picture_pool.c:impossible_deadline
Unexecuted instantiation: interrupt.c:impossible_deadline
Unexecuted instantiation: keystore.c:impossible_deadline
Unexecuted instantiation: rcu.c:impossible_deadline
Unexecuted instantiation: renderer_discovery.c:impossible_deadline
Unexecuted instantiation: threads.c:impossible_deadline
Unexecuted instantiation: cpu.c:impossible_deadline
Unexecuted instantiation: exit.c:impossible_deadline
Unexecuted instantiation: image.c:impossible_deadline
Unexecuted instantiation: messages.c:impossible_deadline
Unexecuted instantiation: tracer.c:impossible_deadline
Unexecuted instantiation: objects.c:impossible_deadline
Unexecuted instantiation: objres.c:impossible_deadline
Unexecuted instantiation: queue.c:impossible_deadline
Unexecuted instantiation: variables.c:impossible_deadline
Unexecuted instantiation: xml.c:impossible_deadline
Unexecuted instantiation: filter.c:impossible_deadline
Unexecuted instantiation: filter_chain.c:impossible_deadline
Unexecuted instantiation: httpcookies.c:impossible_deadline
Unexecuted instantiation: subpicture.c:impossible_deadline
Unexecuted instantiation: medialibrary.c:impossible_deadline
Unexecuted instantiation: thread.c:impossible_deadline
Unexecuted instantiation: rand.c:impossible_deadline
Unexecuted instantiation: specific.c:impossible_deadline
Unexecuted instantiation: stream_output.c:impossible_deadline
Unexecuted instantiation: vlm.c:impossible_deadline
Unexecuted instantiation: vlm_event.c:impossible_deadline
Unexecuted instantiation: vlmshell.c:impossible_deadline
Unexecuted instantiation: libvlc-module.c:impossible_deadline
Unexecuted instantiation: art.c:impossible_deadline
Unexecuted instantiation: fetcher.c:impossible_deadline
Unexecuted instantiation: clock.c:impossible_deadline
Unexecuted instantiation: es_out.c:impossible_deadline
Unexecuted instantiation: es_out_source.c:impossible_deadline
Unexecuted instantiation: es_out_timeshift.c:impossible_deadline
Unexecuted instantiation: display.c:impossible_deadline
Unexecuted instantiation: inhibit.c:impossible_deadline
Unexecuted instantiation: interlacing.c:impossible_deadline
Unexecuted instantiation: snapshot.c:impossible_deadline
Unexecuted instantiation: io.c:impossible_deadline
Unexecuted instantiation: chroma_probe.c:impossible_deadline
Unexecuted instantiation: dirs.c:impossible_deadline
Unexecuted instantiation: getaddrinfo.c:impossible_deadline
Unexecuted instantiation: input_clock.c:impossible_deadline
858
859
# define check_deadline( d ) \
860
0
    (__builtin_constant_p(d) ? impossible_deadline(d) : d)
861
#endif
862
863
#if defined(check_delay)
864
0
#define vlc_tick_sleep(d) vlc_tick_sleep(check_delay(d))
865
#endif
866
#if defined(check_deadline)
867
0
#define vlc_tick_wait(d) vlc_tick_wait(check_deadline(d))
868
#endif
869
870
/**
871
 * \defgroup timer Asynchronous/threaded timers
872
 * @{
873
 */
874
/**
875
 * Initializes an asynchronous timer.
876
 *
877
 * \param id pointer to timer to be initialized
878
 * \param func function that the timer will call
879
 * \param data parameter for the timer function
880
 * \return 0 on success, a system error code otherwise.
881
 *
882
 * \warning Asynchronous timers are processed from an unspecified thread.
883
 * \note Multiple occurrences of a single interval timer are serialized:
884
 * they cannot run concurrently.
885
 */
886
VLC_API int vlc_timer_create(vlc_timer_t *id, void (*func)(void *), void *data)
887
VLC_USED;
888
889
/**
890
 * Destroys an initialized timer.
891
 *
892
 * If needed, the timer is first disarmed. Behaviour is undefined if the
893
 * specified timer is not initialized.
894
 *
895
 * \warning This function <b>must</b> be called before the timer data can be
896
 * freed and before the timer callback function can be unmapped/unloaded.
897
 *
898
 * \param timer timer to destroy
899
 */
900
VLC_API void vlc_timer_destroy(vlc_timer_t timer);
901
902
#define VLC_TIMER_DISARM    (0)
903
#define VLC_TIMER_FIRE_ONCE (0)
904
905
/**
906
 * Arms or disarms an initialized timer.
907
 *
908
 * This functions overrides any previous call to itself.
909
 *
910
 * \note A timer can fire later than requested due to system scheduling
911
 * limitations. An interval timer can fail to trigger sometimes, either because
912
 * the system is busy or suspended, or because a previous iteration of the
913
 * timer is still running. See also vlc_timer_getoverrun().
914
 *
915
 * \param timer initialized timer
916
 * \param absolute the timer value origin is the same as vlc_tick_now() if true,
917
 *                 the timer value is relative to now if false.
918
 * \param value zero to disarm the timer, otherwise the initial time to wait
919
 *              before firing the timer.
920
 * \param interval zero to fire the timer just once, otherwise the timer
921
 *                 repetition interval.
922
 */
923
VLC_API void vlc_timer_schedule(vlc_timer_t timer, bool absolute,
924
                                vlc_tick_t value, vlc_tick_t interval);
925
926
static inline void vlc_timer_disarm(vlc_timer_t timer)
927
0
{
928
0
    vlc_timer_schedule( timer, false, VLC_TIMER_DISARM, 0 );
929
0
}
Unexecuted instantiation: demux-run.c:vlc_timer_disarm
Unexecuted instantiation: common.c:vlc_timer_disarm
Unexecuted instantiation: var.c:vlc_timer_disarm
Unexecuted instantiation: decoder.c:vlc_timer_disarm
Unexecuted instantiation: core.c:vlc_timer_disarm
Unexecuted instantiation: error.c:vlc_timer_disarm
Unexecuted instantiation: aiff.c:vlc_timer_disarm
Unexecuted instantiation: asf.c:vlc_timer_disarm
Unexecuted instantiation: libasf.c:vlc_timer_disarm
Unexecuted instantiation: asfpacket.c:vlc_timer_disarm
Unexecuted instantiation: au.c:vlc_timer_disarm
Unexecuted instantiation: avi.c:vlc_timer_disarm
Unexecuted instantiation: libavi.c:vlc_timer_disarm
Unexecuted instantiation: caf.c:vlc_timer_disarm
Unexecuted instantiation: cdg.c:vlc_timer_disarm
Unexecuted instantiation: es.c:vlc_timer_disarm
Unexecuted instantiation: dts_header.c:vlc_timer_disarm
Unexecuted instantiation: flac.c:vlc_timer_disarm
Unexecuted instantiation: xiph_metadata.c:vlc_timer_disarm
Unexecuted instantiation: h26x.c:vlc_timer_disarm
Unexecuted instantiation: mjpeg.c:vlc_timer_disarm
Unexecuted instantiation: mp4.c:vlc_timer_disarm
Unexecuted instantiation: fragments.c:vlc_timer_disarm
Unexecuted instantiation: attachments.c:vlc_timer_disarm
Unexecuted instantiation: heif.c:vlc_timer_disarm
Unexecuted instantiation: essetup.c:vlc_timer_disarm
Unexecuted instantiation: meta.c:vlc_timer_disarm
Unexecuted instantiation: libmp4.c:vlc_timer_disarm
Unexecuted instantiation: nsv.c:vlc_timer_disarm
Unexecuted instantiation: ps.c:vlc_timer_disarm
Unexecuted instantiation: pva.c:vlc_timer_disarm
Unexecuted instantiation: sap.c:vlc_timer_disarm
Unexecuted instantiation: smf.c:vlc_timer_disarm
Unexecuted instantiation: subtitle.c:vlc_timer_disarm
Unexecuted instantiation: tta.c:vlc_timer_disarm
Unexecuted instantiation: encttml.c:vlc_timer_disarm
Unexecuted instantiation: substtml.c:vlc_timer_disarm
Unexecuted instantiation: ttml.c:vlc_timer_disarm
Unexecuted instantiation: ty.c:vlc_timer_disarm
Unexecuted instantiation: voc.c:vlc_timer_disarm
Unexecuted instantiation: wav.c:vlc_timer_disarm
Unexecuted instantiation: webvtt.c:vlc_timer_disarm
Unexecuted instantiation: encvtt.c:vlc_timer_disarm
Unexecuted instantiation: subsvtt.c:vlc_timer_disarm
Unexecuted instantiation: xa.c:vlc_timer_disarm
Unexecuted instantiation: a52.c:vlc_timer_disarm
Unexecuted instantiation: copy.c:vlc_timer_disarm
Unexecuted instantiation: dts.c:vlc_timer_disarm
Unexecuted instantiation: h264.c:vlc_timer_disarm
Unexecuted instantiation: hxxx_sei.c:vlc_timer_disarm
Unexecuted instantiation: hxxx_common.c:vlc_timer_disarm
Unexecuted instantiation: h264_nal.c:vlc_timer_disarm
Unexecuted instantiation: h264_slice.c:vlc_timer_disarm
Unexecuted instantiation: hevc.c:vlc_timer_disarm
Unexecuted instantiation: hevc_nal.c:vlc_timer_disarm
Unexecuted instantiation: mlp.c:vlc_timer_disarm
Unexecuted instantiation: mpeg4audio.c:vlc_timer_disarm
Unexecuted instantiation: mpeg4video.c:vlc_timer_disarm
Unexecuted instantiation: mpegaudio.c:vlc_timer_disarm
Unexecuted instantiation: mpegvideo.c:vlc_timer_disarm
Unexecuted instantiation: vc1.c:vlc_timer_disarm
Unexecuted instantiation: rawaud.c:vlc_timer_disarm
Unexecuted instantiation: rawvid.c:vlc_timer_disarm
Unexecuted instantiation: file.c:vlc_timer_disarm
Unexecuted instantiation: directory.c:vlc_timer_disarm
Unexecuted instantiation: libxml.c:vlc_timer_disarm
Unexecuted instantiation: ogg.c:vlc_timer_disarm
Unexecuted instantiation: oggseek.c:vlc_timer_disarm
Unexecuted instantiation: mkv.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: util.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: virtual_segment.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: matroska_segment.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: matroska_segment_parse.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: matroska_segment_seeker.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: demux.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: events.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: Ebml_parser.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: chapters.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: chapter_command.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: chapter_command_dvd.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: chapter_command_script.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: chapter_command_script_common.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: stream_io_callback.cpp:vlc_timer_disarm(vlc_timer*)
Unexecuted instantiation: adpcm.c:vlc_timer_disarm
Unexecuted instantiation: aes3.c:vlc_timer_disarm
Unexecuted instantiation: araw.c:vlc_timer_disarm
Unexecuted instantiation: g711.c:vlc_timer_disarm
Unexecuted instantiation: lpcm.c:vlc_timer_disarm
Unexecuted instantiation: uleaddvaudio.c:vlc_timer_disarm
Unexecuted instantiation: rawvideo.c:vlc_timer_disarm
Unexecuted instantiation: cc.c:vlc_timer_disarm
Unexecuted instantiation: cea708.c:vlc_timer_disarm
Unexecuted instantiation: cvdsub.c:vlc_timer_disarm
Unexecuted instantiation: dvbsub.c:vlc_timer_disarm
Unexecuted instantiation: scte18.c:vlc_timer_disarm
Unexecuted instantiation: scte27.c:vlc_timer_disarm
Unexecuted instantiation: spudec.c:vlc_timer_disarm
Unexecuted instantiation: parse.c:vlc_timer_disarm
Unexecuted instantiation: stl.c:vlc_timer_disarm
Unexecuted instantiation: subsdec.c:vlc_timer_disarm
Unexecuted instantiation: subsusf.c:vlc_timer_disarm
Unexecuted instantiation: svcdsub.c:vlc_timer_disarm
Unexecuted instantiation: textst.c:vlc_timer_disarm
Unexecuted instantiation: substx3g.c:vlc_timer_disarm
Unexecuted instantiation: libvlc.c:vlc_timer_disarm
Unexecuted instantiation: chain.c:vlc_timer_disarm
Unexecuted instantiation: help.c:vlc_timer_disarm
Unexecuted instantiation: cmdline.c:vlc_timer_disarm
Unexecuted instantiation: media_source.c:vlc_timer_disarm
Unexecuted instantiation: media_tree.c:vlc_timer_disarm
Unexecuted instantiation: modules.c:vlc_timer_disarm
Unexecuted instantiation: bank.c:vlc_timer_disarm
Unexecuted instantiation: entry.c:vlc_timer_disarm
Unexecuted instantiation: dialog.c:vlc_timer_disarm
Unexecuted instantiation: interface.c:vlc_timer_disarm
Unexecuted instantiation: content.c:vlc_timer_disarm
Unexecuted instantiation: control.c:vlc_timer_disarm
Unexecuted instantiation: item.c:vlc_timer_disarm
Unexecuted instantiation: notify.c:vlc_timer_disarm
Unexecuted instantiation: player.c:vlc_timer_disarm
Unexecuted instantiation: playlist.c:vlc_timer_disarm
Unexecuted instantiation: preparse.c:vlc_timer_disarm
Unexecuted instantiation: preparser.c:vlc_timer_disarm
Unexecuted instantiation: access.c:vlc_timer_disarm
Unexecuted instantiation: decoder_device.c:vlc_timer_disarm
Unexecuted instantiation: decoder_helpers.c:vlc_timer_disarm
Unexecuted instantiation: demux.c:vlc_timer_disarm
Unexecuted instantiation: input.c:vlc_timer_disarm
Unexecuted instantiation: attachment.c:vlc_timer_disarm
Unexecuted instantiation: timer.c:vlc_timer_disarm
Unexecuted instantiation: track.c:vlc_timer_disarm
Unexecuted instantiation: title.c:vlc_timer_disarm
Unexecuted instantiation: aout.c:vlc_timer_disarm
Unexecuted instantiation: vout.c:vlc_timer_disarm
Unexecuted instantiation: osd.c:vlc_timer_disarm
Unexecuted instantiation: medialib.c:vlc_timer_disarm
Unexecuted instantiation: resource.c:vlc_timer_disarm
Unexecuted instantiation: services_discovery.c:vlc_timer_disarm
Unexecuted instantiation: stats.c:vlc_timer_disarm
Unexecuted instantiation: stream.c:vlc_timer_disarm
Unexecuted instantiation: stream_extractor.c:vlc_timer_disarm
Unexecuted instantiation: stream_filter.c:vlc_timer_disarm
Unexecuted instantiation: stream_memory.c:vlc_timer_disarm
Unexecuted instantiation: subtitles.c:vlc_timer_disarm
Unexecuted instantiation: dec.c:vlc_timer_disarm
Unexecuted instantiation: filters.c:vlc_timer_disarm
Unexecuted instantiation: meter.c:vlc_timer_disarm
Unexecuted instantiation: output.c:vlc_timer_disarm
Unexecuted instantiation: volume.c:vlc_timer_disarm
Unexecuted instantiation: video_output.c:vlc_timer_disarm
Unexecuted instantiation: video_text.c:vlc_timer_disarm
Unexecuted instantiation: video_widgets.c:vlc_timer_disarm
Unexecuted instantiation: vout_subpictures.c:vlc_timer_disarm
Unexecuted instantiation: video_window.c:vlc_timer_disarm
Unexecuted instantiation: window.c:vlc_timer_disarm
Unexecuted instantiation: vout_intf.c:vlc_timer_disarm
Unexecuted instantiation: charset.c:vlc_timer_disarm
Unexecuted instantiation: strings.c:vlc_timer_disarm
Unexecuted instantiation: unicode.c:vlc_timer_disarm
Unexecuted instantiation: actions.c:vlc_timer_disarm
Unexecuted instantiation: executor.c:vlc_timer_disarm
Unexecuted instantiation: probe.c:vlc_timer_disarm
Unexecuted instantiation: frame.c:vlc_timer_disarm
Unexecuted instantiation: fifo.c:vlc_timer_disarm
Unexecuted instantiation: picture.c:vlc_timer_disarm
Unexecuted instantiation: picture_fifo.c:vlc_timer_disarm
Unexecuted instantiation: picture_pool.c:vlc_timer_disarm
Unexecuted instantiation: interrupt.c:vlc_timer_disarm
Unexecuted instantiation: keystore.c:vlc_timer_disarm
Unexecuted instantiation: rcu.c:vlc_timer_disarm
Unexecuted instantiation: renderer_discovery.c:vlc_timer_disarm
Unexecuted instantiation: threads.c:vlc_timer_disarm
Unexecuted instantiation: cpu.c:vlc_timer_disarm
Unexecuted instantiation: exit.c:vlc_timer_disarm
Unexecuted instantiation: image.c:vlc_timer_disarm
Unexecuted instantiation: messages.c:vlc_timer_disarm
Unexecuted instantiation: tracer.c:vlc_timer_disarm
Unexecuted instantiation: objects.c:vlc_timer_disarm
Unexecuted instantiation: objres.c:vlc_timer_disarm
Unexecuted instantiation: queue.c:vlc_timer_disarm
Unexecuted instantiation: variables.c:vlc_timer_disarm
Unexecuted instantiation: xml.c:vlc_timer_disarm
Unexecuted instantiation: filter.c:vlc_timer_disarm
Unexecuted instantiation: filter_chain.c:vlc_timer_disarm
Unexecuted instantiation: httpcookies.c:vlc_timer_disarm
Unexecuted instantiation: subpicture.c:vlc_timer_disarm
Unexecuted instantiation: medialibrary.c:vlc_timer_disarm
Unexecuted instantiation: thread.c:vlc_timer_disarm
Unexecuted instantiation: rand.c:vlc_timer_disarm
Unexecuted instantiation: specific.c:vlc_timer_disarm
Unexecuted instantiation: stream_output.c:vlc_timer_disarm
Unexecuted instantiation: vlm.c:vlc_timer_disarm
Unexecuted instantiation: vlm_event.c:vlc_timer_disarm
Unexecuted instantiation: vlmshell.c:vlc_timer_disarm
Unexecuted instantiation: libvlc-module.c:vlc_timer_disarm
Unexecuted instantiation: art.c:vlc_timer_disarm
Unexecuted instantiation: fetcher.c:vlc_timer_disarm
Unexecuted instantiation: clock.c:vlc_timer_disarm
Unexecuted instantiation: es_out.c:vlc_timer_disarm
Unexecuted instantiation: es_out_source.c:vlc_timer_disarm
Unexecuted instantiation: es_out_timeshift.c:vlc_timer_disarm
Unexecuted instantiation: display.c:vlc_timer_disarm
Unexecuted instantiation: inhibit.c:vlc_timer_disarm
Unexecuted instantiation: interlacing.c:vlc_timer_disarm
Unexecuted instantiation: snapshot.c:vlc_timer_disarm
Unexecuted instantiation: io.c:vlc_timer_disarm
Unexecuted instantiation: chroma_probe.c:vlc_timer_disarm
Unexecuted instantiation: dirs.c:vlc_timer_disarm
Unexecuted instantiation: getaddrinfo.c:vlc_timer_disarm
Unexecuted instantiation: input_clock.c:vlc_timer_disarm
930
931
static inline void vlc_timer_schedule_asap(vlc_timer_t timer, vlc_tick_t interval)
932
0
{
933
0
    vlc_timer_schedule(timer, false, 1, interval);
934
0
}
Unexecuted instantiation: demux-run.c:vlc_timer_schedule_asap
Unexecuted instantiation: common.c:vlc_timer_schedule_asap
Unexecuted instantiation: var.c:vlc_timer_schedule_asap
Unexecuted instantiation: decoder.c:vlc_timer_schedule_asap
Unexecuted instantiation: core.c:vlc_timer_schedule_asap
Unexecuted instantiation: error.c:vlc_timer_schedule_asap
Unexecuted instantiation: aiff.c:vlc_timer_schedule_asap
Unexecuted instantiation: asf.c:vlc_timer_schedule_asap
Unexecuted instantiation: libasf.c:vlc_timer_schedule_asap
Unexecuted instantiation: asfpacket.c:vlc_timer_schedule_asap
Unexecuted instantiation: au.c:vlc_timer_schedule_asap
Unexecuted instantiation: avi.c:vlc_timer_schedule_asap
Unexecuted instantiation: libavi.c:vlc_timer_schedule_asap
Unexecuted instantiation: caf.c:vlc_timer_schedule_asap
Unexecuted instantiation: cdg.c:vlc_timer_schedule_asap
Unexecuted instantiation: es.c:vlc_timer_schedule_asap
Unexecuted instantiation: dts_header.c:vlc_timer_schedule_asap
Unexecuted instantiation: flac.c:vlc_timer_schedule_asap
Unexecuted instantiation: xiph_metadata.c:vlc_timer_schedule_asap
Unexecuted instantiation: h26x.c:vlc_timer_schedule_asap
Unexecuted instantiation: mjpeg.c:vlc_timer_schedule_asap
Unexecuted instantiation: mp4.c:vlc_timer_schedule_asap
Unexecuted instantiation: fragments.c:vlc_timer_schedule_asap
Unexecuted instantiation: attachments.c:vlc_timer_schedule_asap
Unexecuted instantiation: heif.c:vlc_timer_schedule_asap
Unexecuted instantiation: essetup.c:vlc_timer_schedule_asap
Unexecuted instantiation: meta.c:vlc_timer_schedule_asap
Unexecuted instantiation: libmp4.c:vlc_timer_schedule_asap
Unexecuted instantiation: nsv.c:vlc_timer_schedule_asap
Unexecuted instantiation: ps.c:vlc_timer_schedule_asap
Unexecuted instantiation: pva.c:vlc_timer_schedule_asap
Unexecuted instantiation: sap.c:vlc_timer_schedule_asap
Unexecuted instantiation: smf.c:vlc_timer_schedule_asap
Unexecuted instantiation: subtitle.c:vlc_timer_schedule_asap
Unexecuted instantiation: tta.c:vlc_timer_schedule_asap
Unexecuted instantiation: encttml.c:vlc_timer_schedule_asap
Unexecuted instantiation: substtml.c:vlc_timer_schedule_asap
Unexecuted instantiation: ttml.c:vlc_timer_schedule_asap
Unexecuted instantiation: ty.c:vlc_timer_schedule_asap
Unexecuted instantiation: voc.c:vlc_timer_schedule_asap
Unexecuted instantiation: wav.c:vlc_timer_schedule_asap
Unexecuted instantiation: webvtt.c:vlc_timer_schedule_asap
Unexecuted instantiation: encvtt.c:vlc_timer_schedule_asap
Unexecuted instantiation: subsvtt.c:vlc_timer_schedule_asap
Unexecuted instantiation: xa.c:vlc_timer_schedule_asap
Unexecuted instantiation: a52.c:vlc_timer_schedule_asap
Unexecuted instantiation: copy.c:vlc_timer_schedule_asap
Unexecuted instantiation: dts.c:vlc_timer_schedule_asap
Unexecuted instantiation: h264.c:vlc_timer_schedule_asap
Unexecuted instantiation: hxxx_sei.c:vlc_timer_schedule_asap
Unexecuted instantiation: hxxx_common.c:vlc_timer_schedule_asap
Unexecuted instantiation: h264_nal.c:vlc_timer_schedule_asap
Unexecuted instantiation: h264_slice.c:vlc_timer_schedule_asap
Unexecuted instantiation: hevc.c:vlc_timer_schedule_asap
Unexecuted instantiation: hevc_nal.c:vlc_timer_schedule_asap
Unexecuted instantiation: mlp.c:vlc_timer_schedule_asap
Unexecuted instantiation: mpeg4audio.c:vlc_timer_schedule_asap
Unexecuted instantiation: mpeg4video.c:vlc_timer_schedule_asap
Unexecuted instantiation: mpegaudio.c:vlc_timer_schedule_asap
Unexecuted instantiation: mpegvideo.c:vlc_timer_schedule_asap
Unexecuted instantiation: vc1.c:vlc_timer_schedule_asap
Unexecuted instantiation: rawaud.c:vlc_timer_schedule_asap
Unexecuted instantiation: rawvid.c:vlc_timer_schedule_asap
Unexecuted instantiation: file.c:vlc_timer_schedule_asap
Unexecuted instantiation: directory.c:vlc_timer_schedule_asap
Unexecuted instantiation: libxml.c:vlc_timer_schedule_asap
Unexecuted instantiation: ogg.c:vlc_timer_schedule_asap
Unexecuted instantiation: oggseek.c:vlc_timer_schedule_asap
Unexecuted instantiation: mkv.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: util.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: virtual_segment.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: matroska_segment.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: matroska_segment_parse.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: matroska_segment_seeker.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: demux.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: events.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: Ebml_parser.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: chapters.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: chapter_command.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: chapter_command_dvd.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: chapter_command_script.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: chapter_command_script_common.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: stream_io_callback.cpp:vlc_timer_schedule_asap(vlc_timer*, long)
Unexecuted instantiation: adpcm.c:vlc_timer_schedule_asap
Unexecuted instantiation: aes3.c:vlc_timer_schedule_asap
Unexecuted instantiation: araw.c:vlc_timer_schedule_asap
Unexecuted instantiation: g711.c:vlc_timer_schedule_asap
Unexecuted instantiation: lpcm.c:vlc_timer_schedule_asap
Unexecuted instantiation: uleaddvaudio.c:vlc_timer_schedule_asap
Unexecuted instantiation: rawvideo.c:vlc_timer_schedule_asap
Unexecuted instantiation: cc.c:vlc_timer_schedule_asap
Unexecuted instantiation: cea708.c:vlc_timer_schedule_asap
Unexecuted instantiation: cvdsub.c:vlc_timer_schedule_asap
Unexecuted instantiation: dvbsub.c:vlc_timer_schedule_asap
Unexecuted instantiation: scte18.c:vlc_timer_schedule_asap
Unexecuted instantiation: scte27.c:vlc_timer_schedule_asap
Unexecuted instantiation: spudec.c:vlc_timer_schedule_asap
Unexecuted instantiation: parse.c:vlc_timer_schedule_asap
Unexecuted instantiation: stl.c:vlc_timer_schedule_asap
Unexecuted instantiation: subsdec.c:vlc_timer_schedule_asap
Unexecuted instantiation: subsusf.c:vlc_timer_schedule_asap
Unexecuted instantiation: svcdsub.c:vlc_timer_schedule_asap
Unexecuted instantiation: textst.c:vlc_timer_schedule_asap
Unexecuted instantiation: substx3g.c:vlc_timer_schedule_asap
Unexecuted instantiation: libvlc.c:vlc_timer_schedule_asap
Unexecuted instantiation: chain.c:vlc_timer_schedule_asap
Unexecuted instantiation: help.c:vlc_timer_schedule_asap
Unexecuted instantiation: cmdline.c:vlc_timer_schedule_asap
Unexecuted instantiation: media_source.c:vlc_timer_schedule_asap
Unexecuted instantiation: media_tree.c:vlc_timer_schedule_asap
Unexecuted instantiation: modules.c:vlc_timer_schedule_asap
Unexecuted instantiation: bank.c:vlc_timer_schedule_asap
Unexecuted instantiation: entry.c:vlc_timer_schedule_asap
Unexecuted instantiation: dialog.c:vlc_timer_schedule_asap
Unexecuted instantiation: interface.c:vlc_timer_schedule_asap
Unexecuted instantiation: content.c:vlc_timer_schedule_asap
Unexecuted instantiation: control.c:vlc_timer_schedule_asap
Unexecuted instantiation: item.c:vlc_timer_schedule_asap
Unexecuted instantiation: notify.c:vlc_timer_schedule_asap
Unexecuted instantiation: player.c:vlc_timer_schedule_asap
Unexecuted instantiation: playlist.c:vlc_timer_schedule_asap
Unexecuted instantiation: preparse.c:vlc_timer_schedule_asap
Unexecuted instantiation: preparser.c:vlc_timer_schedule_asap
Unexecuted instantiation: access.c:vlc_timer_schedule_asap
Unexecuted instantiation: decoder_device.c:vlc_timer_schedule_asap
Unexecuted instantiation: decoder_helpers.c:vlc_timer_schedule_asap
Unexecuted instantiation: demux.c:vlc_timer_schedule_asap
Unexecuted instantiation: input.c:vlc_timer_schedule_asap
Unexecuted instantiation: attachment.c:vlc_timer_schedule_asap
Unexecuted instantiation: timer.c:vlc_timer_schedule_asap
Unexecuted instantiation: track.c:vlc_timer_schedule_asap
Unexecuted instantiation: title.c:vlc_timer_schedule_asap
Unexecuted instantiation: aout.c:vlc_timer_schedule_asap
Unexecuted instantiation: vout.c:vlc_timer_schedule_asap
Unexecuted instantiation: osd.c:vlc_timer_schedule_asap
Unexecuted instantiation: medialib.c:vlc_timer_schedule_asap
Unexecuted instantiation: resource.c:vlc_timer_schedule_asap
Unexecuted instantiation: services_discovery.c:vlc_timer_schedule_asap
Unexecuted instantiation: stats.c:vlc_timer_schedule_asap
Unexecuted instantiation: stream.c:vlc_timer_schedule_asap
Unexecuted instantiation: stream_extractor.c:vlc_timer_schedule_asap
Unexecuted instantiation: stream_filter.c:vlc_timer_schedule_asap
Unexecuted instantiation: stream_memory.c:vlc_timer_schedule_asap
Unexecuted instantiation: subtitles.c:vlc_timer_schedule_asap
Unexecuted instantiation: dec.c:vlc_timer_schedule_asap
Unexecuted instantiation: filters.c:vlc_timer_schedule_asap
Unexecuted instantiation: meter.c:vlc_timer_schedule_asap
Unexecuted instantiation: output.c:vlc_timer_schedule_asap
Unexecuted instantiation: volume.c:vlc_timer_schedule_asap
Unexecuted instantiation: video_output.c:vlc_timer_schedule_asap
Unexecuted instantiation: video_text.c:vlc_timer_schedule_asap
Unexecuted instantiation: video_widgets.c:vlc_timer_schedule_asap
Unexecuted instantiation: vout_subpictures.c:vlc_timer_schedule_asap
Unexecuted instantiation: video_window.c:vlc_timer_schedule_asap
Unexecuted instantiation: window.c:vlc_timer_schedule_asap
Unexecuted instantiation: vout_intf.c:vlc_timer_schedule_asap
Unexecuted instantiation: charset.c:vlc_timer_schedule_asap
Unexecuted instantiation: strings.c:vlc_timer_schedule_asap
Unexecuted instantiation: unicode.c:vlc_timer_schedule_asap
Unexecuted instantiation: actions.c:vlc_timer_schedule_asap
Unexecuted instantiation: executor.c:vlc_timer_schedule_asap
Unexecuted instantiation: probe.c:vlc_timer_schedule_asap
Unexecuted instantiation: frame.c:vlc_timer_schedule_asap
Unexecuted instantiation: fifo.c:vlc_timer_schedule_asap
Unexecuted instantiation: picture.c:vlc_timer_schedule_asap
Unexecuted instantiation: picture_fifo.c:vlc_timer_schedule_asap
Unexecuted instantiation: picture_pool.c:vlc_timer_schedule_asap
Unexecuted instantiation: interrupt.c:vlc_timer_schedule_asap
Unexecuted instantiation: keystore.c:vlc_timer_schedule_asap
Unexecuted instantiation: rcu.c:vlc_timer_schedule_asap
Unexecuted instantiation: renderer_discovery.c:vlc_timer_schedule_asap
Unexecuted instantiation: threads.c:vlc_timer_schedule_asap
Unexecuted instantiation: cpu.c:vlc_timer_schedule_asap
Unexecuted instantiation: exit.c:vlc_timer_schedule_asap
Unexecuted instantiation: image.c:vlc_timer_schedule_asap
Unexecuted instantiation: messages.c:vlc_timer_schedule_asap
Unexecuted instantiation: tracer.c:vlc_timer_schedule_asap
Unexecuted instantiation: objects.c:vlc_timer_schedule_asap
Unexecuted instantiation: objres.c:vlc_timer_schedule_asap
Unexecuted instantiation: queue.c:vlc_timer_schedule_asap
Unexecuted instantiation: variables.c:vlc_timer_schedule_asap
Unexecuted instantiation: xml.c:vlc_timer_schedule_asap
Unexecuted instantiation: filter.c:vlc_timer_schedule_asap
Unexecuted instantiation: filter_chain.c:vlc_timer_schedule_asap
Unexecuted instantiation: httpcookies.c:vlc_timer_schedule_asap
Unexecuted instantiation: subpicture.c:vlc_timer_schedule_asap
Unexecuted instantiation: medialibrary.c:vlc_timer_schedule_asap
Unexecuted instantiation: thread.c:vlc_timer_schedule_asap
Unexecuted instantiation: rand.c:vlc_timer_schedule_asap
Unexecuted instantiation: specific.c:vlc_timer_schedule_asap
Unexecuted instantiation: stream_output.c:vlc_timer_schedule_asap
Unexecuted instantiation: vlm.c:vlc_timer_schedule_asap
Unexecuted instantiation: vlm_event.c:vlc_timer_schedule_asap
Unexecuted instantiation: vlmshell.c:vlc_timer_schedule_asap
Unexecuted instantiation: libvlc-module.c:vlc_timer_schedule_asap
Unexecuted instantiation: art.c:vlc_timer_schedule_asap
Unexecuted instantiation: fetcher.c:vlc_timer_schedule_asap
Unexecuted instantiation: clock.c:vlc_timer_schedule_asap
Unexecuted instantiation: es_out.c:vlc_timer_schedule_asap
Unexecuted instantiation: es_out_source.c:vlc_timer_schedule_asap
Unexecuted instantiation: es_out_timeshift.c:vlc_timer_schedule_asap
Unexecuted instantiation: display.c:vlc_timer_schedule_asap
Unexecuted instantiation: inhibit.c:vlc_timer_schedule_asap
Unexecuted instantiation: interlacing.c:vlc_timer_schedule_asap
Unexecuted instantiation: snapshot.c:vlc_timer_schedule_asap
Unexecuted instantiation: io.c:vlc_timer_schedule_asap
Unexecuted instantiation: chroma_probe.c:vlc_timer_schedule_asap
Unexecuted instantiation: dirs.c:vlc_timer_schedule_asap
Unexecuted instantiation: getaddrinfo.c:vlc_timer_schedule_asap
Unexecuted instantiation: input_clock.c:vlc_timer_schedule_asap
935
936
/**
937
 * Fetches and resets the overrun counter for a timer.
938
 *
939
 * This functions returns the number of times that the interval timer should
940
 * have fired, but the callback was not invoked due to scheduling problems.
941
 * The call resets the counter to zero.
942
 *
943
 * \param timer initialized timer
944
 * \return the timer overrun counter (typically zero)
945
 */
946
VLC_API unsigned vlc_timer_getoverrun(vlc_timer_t timer) VLC_USED;
947
948
/** @} */
949
950
/**
951
 * Count CPUs.
952
 *
953
 * \return number of available (logical) CPUs.
954
 */
955
VLC_API unsigned vlc_GetCPUCount(void);
956
957
#if defined (LIBVLC_USE_PTHREAD_CLEANUP)
958
/**
959
 * Registers a thread cancellation handler.
960
 *
961
 * This pushes a function to run if the thread is cancelled (or otherwise
962
 * exits prematurely).
963
 *
964
 * If multiple procedures are registered,
965
 * they are handled in last-in first-out order.
966
 *
967
 * \note Any call to vlc_cleanup_push() <b>must</b> paired with a call to
968
 * vlc_cleanup_pop().
969
 * \warning Branching into or out of the block between these two function calls
970
 * is not allowed (read: it will likely crash the whole process).
971
 *
972
 * \param routine procedure to call if the thread ends
973
 * \param arg argument for the procedure
974
 */
975
0
# define vlc_cleanup_push( routine, arg ) pthread_cleanup_push (routine, arg)
976
977
/**
978
 * Unregisters the last cancellation handler.
979
 *
980
 * This pops the cancellation handler that was last pushed with
981
 * vlc_cleanup_push() in the calling thread.
982
 */
983
0
# define vlc_cleanup_pop( ) pthread_cleanup_pop (0)
984
985
#else /* !LIBVLC_USE_PTHREAD_CLEANUP */
986
struct vlc_cleanup_t
987
{
988
    vlc_cleanup_t *next;
989
    void         (*proc) (void *);
990
    void          *data;
991
};
992
993
# ifndef __cplusplus
994
/* This macros opens a code block on purpose: It reduces the chance of
995
 * not pairing the push and pop. It also matches the POSIX Thread internals.
996
 * That way, Win32 developers will not accidentally break other platforms.
997
 */
998
# define vlc_cleanup_push( routine, arg ) \
999
    do { \
1000
        vlc_control_cancel(&(vlc_cleanup_t){ NULL, routine, arg })
1001
1002
#  define vlc_cleanup_pop( ) \
1003
        vlc_control_cancel (NULL); \
1004
    } while (0)
1005
# else
1006
#  define vlc_cleanup_push(routine, arg) \
1007
    static_assert(false, "don't use vlc_cleanup_push in portable C++ code")
1008
#  define vlc_cleanup_pop() \
1009
    static_assert(false, "don't use vlc_cleanup_pop in portable C++ code")
1010
# endif
1011
1012
#endif /* !LIBVLC_USE_PTHREAD_CLEANUP */
1013
1014
#ifdef __cplusplus
1015
/**
1016
 * Helper C++ class to lock a mutex.
1017
 *
1018
 * The mutex is locked when the object is created, and unlocked when the object
1019
 * is destroyed.
1020
 */
1021
class vlc_mutex_locker
1022
{
1023
    private:
1024
        vlc_mutex_t *lock;
1025
    public:
1026
1.31k
        vlc_mutex_locker (vlc_mutex_t *m) : lock (m)
1027
1.31k
        {
1028
1.31k
            vlc_mutex_lock (lock);
1029
1.31k
        }
1030
1031
        ~vlc_mutex_locker (void)
1032
1.31k
        {
1033
1.31k
            vlc_mutex_unlock (lock);
1034
1.31k
        }
1035
};
1036
1037
#endif
1038
1039
enum
1040
{
1041
   VLC_AVCODEC_MUTEX = 0,
1042
   VLC_GCRYPT_MUTEX,
1043
   VLC_XLIB_MUTEX,
1044
   VLC_MOSAIC_MUTEX,
1045
#ifdef _WIN32
1046
   VLC_MTA_MUTEX,
1047
#endif
1048
   /* Insert new entry HERE */
1049
   VLC_MAX_MUTEX
1050
};
1051
1052
/**
1053
 * Internal handler for global mutexes.
1054
 *
1055
 * Do not use this function directly. Use helper macros instead:
1056
 * vlc_global_lock(), vlc_global_unlock().
1057
 */
1058
VLC_API void vlc_global_mutex(unsigned, bool);
1059
1060
/**
1061
 * Acquires a global mutex.
1062
 */
1063
#define vlc_global_lock( n ) vlc_global_mutex(n, true)
1064
1065
/**
1066
 * Releases a global mutex.
1067
 */
1068
#define vlc_global_unlock( n ) vlc_global_mutex(n, false)
1069
1070
/** @} */
1071
1072
#endif /* !_VLC_THREADS_H */