Coverage Report

Created: 2025-10-10 06:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libusb/libusb/os/threads_posix.h
Line
Count
Source
1
/*
2
 * libusb synchronization using POSIX Threads
3
 *
4
 * Copyright © 2010 Peter Stuge <peter@stuge.se>
5
 *
6
 * This library is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU Lesser General Public
8
 * License as published by the Free Software Foundation; either
9
 * version 2.1 of the License, or (at your option) any later version.
10
 *
11
 * This library is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
 * Lesser General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU Lesser General Public
17
 * License along with this library; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
 */
20
21
#ifndef LIBUSB_THREADS_POSIX_H
22
#define LIBUSB_THREADS_POSIX_H
23
24
#include <pthread.h>
25
26
532
#define PTHREAD_CHECK(expression) ASSERT_EQ(expression, 0)
27
28
#define USBI_MUTEX_INITIALIZER  PTHREAD_MUTEX_INITIALIZER
29
typedef pthread_mutex_t usbi_mutex_static_t;
30
static inline void usbi_mutex_static_lock(usbi_mutex_static_t *mutex)
31
0
{
32
0
  PTHREAD_CHECK(pthread_mutex_lock(mutex));
33
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_mutex_static_lock(pthread_mutex_t*)
Unexecuted instantiation: io.c:usbi_mutex_static_lock
Unexecuted instantiation: events_posix.c:usbi_mutex_static_lock
Unexecuted instantiation: threads_posix.c:usbi_mutex_static_lock
Unexecuted instantiation: linux_usbfs.c:usbi_mutex_static_lock
Unexecuted instantiation: linux_udev.c:usbi_mutex_static_lock
Unexecuted instantiation: core.c:usbi_mutex_static_lock
Unexecuted instantiation: descriptor.c:usbi_mutex_static_lock
Unexecuted instantiation: hotplug.c:usbi_mutex_static_lock
Unexecuted instantiation: sync.c:usbi_mutex_static_lock
34
static inline void usbi_mutex_static_unlock(usbi_mutex_static_t *mutex)
35
0
{
36
0
  PTHREAD_CHECK(pthread_mutex_unlock(mutex));
37
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_mutex_static_unlock(pthread_mutex_t*)
Unexecuted instantiation: io.c:usbi_mutex_static_unlock
Unexecuted instantiation: events_posix.c:usbi_mutex_static_unlock
Unexecuted instantiation: threads_posix.c:usbi_mutex_static_unlock
Unexecuted instantiation: linux_usbfs.c:usbi_mutex_static_unlock
Unexecuted instantiation: linux_udev.c:usbi_mutex_static_unlock
Unexecuted instantiation: core.c:usbi_mutex_static_unlock
Unexecuted instantiation: descriptor.c:usbi_mutex_static_unlock
Unexecuted instantiation: hotplug.c:usbi_mutex_static_unlock
Unexecuted instantiation: sync.c:usbi_mutex_static_unlock
38
39
typedef pthread_mutex_t usbi_mutex_t;
40
static inline void usbi_mutex_init(usbi_mutex_t *mutex)
41
266
{
42
266
  PTHREAD_CHECK(pthread_mutex_init(mutex, NULL));
43
266
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_mutex_init(pthread_mutex_t*)
io.c:usbi_mutex_init
Line
Count
Source
41
266
{
42
  PTHREAD_CHECK(pthread_mutex_init(mutex, NULL));
43
266
}
Unexecuted instantiation: events_posix.c:usbi_mutex_init
Unexecuted instantiation: threads_posix.c:usbi_mutex_init
Unexecuted instantiation: linux_usbfs.c:usbi_mutex_init
Unexecuted instantiation: linux_udev.c:usbi_mutex_init
Unexecuted instantiation: core.c:usbi_mutex_init
Unexecuted instantiation: descriptor.c:usbi_mutex_init
Unexecuted instantiation: hotplug.c:usbi_mutex_init
Unexecuted instantiation: sync.c:usbi_mutex_init
44
static inline void usbi_mutex_lock(usbi_mutex_t *mutex)
45
0
{
46
0
  PTHREAD_CHECK(pthread_mutex_lock(mutex));
47
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_mutex_lock(pthread_mutex_t*)
Unexecuted instantiation: io.c:usbi_mutex_lock
Unexecuted instantiation: events_posix.c:usbi_mutex_lock
Unexecuted instantiation: threads_posix.c:usbi_mutex_lock
Unexecuted instantiation: linux_usbfs.c:usbi_mutex_lock
Unexecuted instantiation: linux_udev.c:usbi_mutex_lock
Unexecuted instantiation: core.c:usbi_mutex_lock
Unexecuted instantiation: descriptor.c:usbi_mutex_lock
Unexecuted instantiation: hotplug.c:usbi_mutex_lock
Unexecuted instantiation: sync.c:usbi_mutex_lock
48
static inline void usbi_mutex_unlock(usbi_mutex_t *mutex)
49
0
{
50
0
  PTHREAD_CHECK(pthread_mutex_unlock(mutex));
51
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_mutex_unlock(pthread_mutex_t*)
Unexecuted instantiation: io.c:usbi_mutex_unlock
Unexecuted instantiation: events_posix.c:usbi_mutex_unlock
Unexecuted instantiation: threads_posix.c:usbi_mutex_unlock
Unexecuted instantiation: linux_usbfs.c:usbi_mutex_unlock
Unexecuted instantiation: linux_udev.c:usbi_mutex_unlock
Unexecuted instantiation: core.c:usbi_mutex_unlock
Unexecuted instantiation: descriptor.c:usbi_mutex_unlock
Unexecuted instantiation: hotplug.c:usbi_mutex_unlock
Unexecuted instantiation: sync.c:usbi_mutex_unlock
52
static inline int usbi_mutex_trylock(usbi_mutex_t *mutex)
53
0
{
54
0
  int mutexIsLocked = pthread_mutex_trylock(mutex) == 0;
55
0
  return mutexIsLocked;
56
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_mutex_trylock(pthread_mutex_t*)
Unexecuted instantiation: io.c:usbi_mutex_trylock
Unexecuted instantiation: events_posix.c:usbi_mutex_trylock
Unexecuted instantiation: threads_posix.c:usbi_mutex_trylock
Unexecuted instantiation: linux_usbfs.c:usbi_mutex_trylock
Unexecuted instantiation: linux_udev.c:usbi_mutex_trylock
Unexecuted instantiation: core.c:usbi_mutex_trylock
Unexecuted instantiation: descriptor.c:usbi_mutex_trylock
Unexecuted instantiation: hotplug.c:usbi_mutex_trylock
Unexecuted instantiation: sync.c:usbi_mutex_trylock
57
static inline void usbi_mutex_destroy(usbi_mutex_t *mutex)
58
266
{
59
266
  PTHREAD_CHECK(pthread_mutex_destroy(mutex));
60
266
}
libusb_fuzzer.cc:usbi_mutex_destroy(pthread_mutex_t*)
Line
Count
Source
58
266
{
59
  PTHREAD_CHECK(pthread_mutex_destroy(mutex));
60
266
}
Unexecuted instantiation: io.c:usbi_mutex_destroy
Unexecuted instantiation: events_posix.c:usbi_mutex_destroy
Unexecuted instantiation: threads_posix.c:usbi_mutex_destroy
Unexecuted instantiation: linux_usbfs.c:usbi_mutex_destroy
Unexecuted instantiation: linux_udev.c:usbi_mutex_destroy
Unexecuted instantiation: core.c:usbi_mutex_destroy
Unexecuted instantiation: descriptor.c:usbi_mutex_destroy
Unexecuted instantiation: hotplug.c:usbi_mutex_destroy
Unexecuted instantiation: sync.c:usbi_mutex_destroy
61
62
#define USBI_COND_INITIALIZER PTHREAD_COND_INITIALIZER
63
typedef pthread_cond_t usbi_cond_t;
64
void usbi_cond_init(usbi_cond_t *cond);
65
static inline void usbi_cond_wait(usbi_cond_t *cond, usbi_mutex_t *mutex)
66
0
{
67
0
  PTHREAD_CHECK(pthread_cond_wait(cond, mutex));
68
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_cond_wait(pthread_cond_t*, pthread_mutex_t*)
Unexecuted instantiation: io.c:usbi_cond_wait
Unexecuted instantiation: events_posix.c:usbi_cond_wait
Unexecuted instantiation: threads_posix.c:usbi_cond_wait
Unexecuted instantiation: linux_usbfs.c:usbi_cond_wait
Unexecuted instantiation: linux_udev.c:usbi_cond_wait
Unexecuted instantiation: core.c:usbi_cond_wait
Unexecuted instantiation: descriptor.c:usbi_cond_wait
Unexecuted instantiation: hotplug.c:usbi_cond_wait
Unexecuted instantiation: sync.c:usbi_cond_wait
69
int usbi_cond_timedwait(usbi_cond_t *cond,
70
  usbi_mutex_t *mutex, const struct timeval *tv);
71
static inline void usbi_cond_signal(usbi_cond_t *cond)
72
0
{
73
0
  PTHREAD_CHECK(pthread_cond_signal(cond));
74
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_cond_signal(pthread_cond_t*)
Unexecuted instantiation: io.c:usbi_cond_signal
Unexecuted instantiation: events_posix.c:usbi_cond_signal
Unexecuted instantiation: threads_posix.c:usbi_cond_signal
Unexecuted instantiation: linux_usbfs.c:usbi_cond_signal
Unexecuted instantiation: linux_udev.c:usbi_cond_signal
Unexecuted instantiation: core.c:usbi_cond_signal
Unexecuted instantiation: descriptor.c:usbi_cond_signal
Unexecuted instantiation: hotplug.c:usbi_cond_signal
Unexecuted instantiation: sync.c:usbi_cond_signal
75
static inline void usbi_cond_broadcast(usbi_cond_t *cond)
76
0
{
77
0
  PTHREAD_CHECK(pthread_cond_broadcast(cond));
78
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_cond_broadcast(pthread_cond_t*)
Unexecuted instantiation: io.c:usbi_cond_broadcast
Unexecuted instantiation: events_posix.c:usbi_cond_broadcast
Unexecuted instantiation: threads_posix.c:usbi_cond_broadcast
Unexecuted instantiation: linux_usbfs.c:usbi_cond_broadcast
Unexecuted instantiation: linux_udev.c:usbi_cond_broadcast
Unexecuted instantiation: core.c:usbi_cond_broadcast
Unexecuted instantiation: descriptor.c:usbi_cond_broadcast
Unexecuted instantiation: hotplug.c:usbi_cond_broadcast
Unexecuted instantiation: sync.c:usbi_cond_broadcast
79
static inline void usbi_cond_destroy(usbi_cond_t *cond)
80
0
{
81
0
  PTHREAD_CHECK(pthread_cond_destroy(cond));
82
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_cond_destroy(pthread_cond_t*)
Unexecuted instantiation: io.c:usbi_cond_destroy
Unexecuted instantiation: events_posix.c:usbi_cond_destroy
Unexecuted instantiation: threads_posix.c:usbi_cond_destroy
Unexecuted instantiation: linux_usbfs.c:usbi_cond_destroy
Unexecuted instantiation: linux_udev.c:usbi_cond_destroy
Unexecuted instantiation: core.c:usbi_cond_destroy
Unexecuted instantiation: descriptor.c:usbi_cond_destroy
Unexecuted instantiation: hotplug.c:usbi_cond_destroy
Unexecuted instantiation: sync.c:usbi_cond_destroy
83
84
typedef pthread_key_t usbi_tls_key_t;
85
static inline void usbi_tls_key_create(usbi_tls_key_t *key)
86
0
{
87
0
  PTHREAD_CHECK(pthread_key_create(key, NULL));
88
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_tls_key_create(unsigned int*)
Unexecuted instantiation: io.c:usbi_tls_key_create
Unexecuted instantiation: events_posix.c:usbi_tls_key_create
Unexecuted instantiation: threads_posix.c:usbi_tls_key_create
Unexecuted instantiation: linux_usbfs.c:usbi_tls_key_create
Unexecuted instantiation: linux_udev.c:usbi_tls_key_create
Unexecuted instantiation: core.c:usbi_tls_key_create
Unexecuted instantiation: descriptor.c:usbi_tls_key_create
Unexecuted instantiation: hotplug.c:usbi_tls_key_create
Unexecuted instantiation: sync.c:usbi_tls_key_create
89
static inline void *usbi_tls_key_get(usbi_tls_key_t key)
90
0
{
91
0
  return pthread_getspecific(key);
92
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_tls_key_get(unsigned int)
Unexecuted instantiation: io.c:usbi_tls_key_get
Unexecuted instantiation: events_posix.c:usbi_tls_key_get
Unexecuted instantiation: threads_posix.c:usbi_tls_key_get
Unexecuted instantiation: linux_usbfs.c:usbi_tls_key_get
Unexecuted instantiation: linux_udev.c:usbi_tls_key_get
Unexecuted instantiation: core.c:usbi_tls_key_get
Unexecuted instantiation: descriptor.c:usbi_tls_key_get
Unexecuted instantiation: hotplug.c:usbi_tls_key_get
Unexecuted instantiation: sync.c:usbi_tls_key_get
93
static inline void usbi_tls_key_set(usbi_tls_key_t key, void *ptr)
94
0
{
95
0
  PTHREAD_CHECK(pthread_setspecific(key, ptr));
96
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_tls_key_set(unsigned int, void*)
Unexecuted instantiation: io.c:usbi_tls_key_set
Unexecuted instantiation: events_posix.c:usbi_tls_key_set
Unexecuted instantiation: threads_posix.c:usbi_tls_key_set
Unexecuted instantiation: linux_usbfs.c:usbi_tls_key_set
Unexecuted instantiation: linux_udev.c:usbi_tls_key_set
Unexecuted instantiation: core.c:usbi_tls_key_set
Unexecuted instantiation: descriptor.c:usbi_tls_key_set
Unexecuted instantiation: hotplug.c:usbi_tls_key_set
Unexecuted instantiation: sync.c:usbi_tls_key_set
97
static inline void usbi_tls_key_delete(usbi_tls_key_t key)
98
0
{
99
  PTHREAD_CHECK(pthread_key_delete(key));
100
0
}
Unexecuted instantiation: libusb_fuzzer.cc:usbi_tls_key_delete(unsigned int)
Unexecuted instantiation: io.c:usbi_tls_key_delete
Unexecuted instantiation: events_posix.c:usbi_tls_key_delete
Unexecuted instantiation: threads_posix.c:usbi_tls_key_delete
Unexecuted instantiation: linux_usbfs.c:usbi_tls_key_delete
Unexecuted instantiation: linux_udev.c:usbi_tls_key_delete
Unexecuted instantiation: core.c:usbi_tls_key_delete
Unexecuted instantiation: descriptor.c:usbi_tls_key_delete
Unexecuted instantiation: hotplug.c:usbi_tls_key_delete
Unexecuted instantiation: sync.c:usbi_tls_key_delete
101
102
unsigned long usbi_get_tid(void);
103
104
#endif /* LIBUSB_THREADS_POSIX_H */