SomeAlphabetGuy 9de0fefb31 core: Avoid possible data race in log_v()
The logging function usbi_dbg() called from udev event thread needs to
safely get the log level of the default context or the fallback context.
This is not trivial because udev thread may log events while contexts
are created and destroyed. Locking the default context mutex is not an
option because usbi_dbg() may be called from code that already holds
this mutex, which would lead to a deadlock. The solution implemented in
this commit is to maintain a separate atomic global variable with the
default debug level.

The issue was found with ThreadSanitizer, although no actual bugs have
been observed.

libusb_set_debug() was also changed to call libusb_set_option() instead
of doing its own option setting which had fewer checks.

Closes #1332
2023-11-30 11:36:27 +01:00
2020-12-19 13:29:38 -08:00
2022-06-26 17:09:14 +02:00
2022-04-10 10:57:16 +02:00
2022-04-10 10:57:16 +02:00
2007-12-02 22:54:59 +00:00
2022-06-26 17:09:14 +02:00
2016-07-24 20:00:00 -06:00
2020-03-25 00:09:26 -07:00
2020-08-23 17:32:06 +02:00
2016-07-24 20:02:31 -06:00

libusb

Build Status Build Status Coverity Scan Build Status

libusb is a library for USB device access from Linux, macOS, Windows, OpenBSD/NetBSD, Haiku, Solaris userspace, and WebAssembly via WebUSB. It is written in C (Haiku backend in C++) and licensed under the GNU Lesser General Public License version 2.1 or, at your option, any later version (see COPYING).

libusb is abstracted internally in such a way that it can hopefully be ported to other operating systems. Please see the PORTING file for more information.

libusb homepage: http://libusb.info/

Developers will wish to consult the API documentation: http://api.libusb.info

Use the mailing list for questions, comments, etc: http://mailing-list.libusb.info

(Please use the mailing list rather than mailing developers directly)

Description
⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-01-31T05:30:30.373Z
Readme 4.9 MiB
Languages
C 91.5%
C++ 4.8%
M4 1.3%
Makefile 1.1%
CMake 0.6%
Other 0.6%