mirror of
https://github.com/RPCS3/libusb.git
synced 2026-01-31 01:25:19 +01:00
darwin: Replaced low-level mach API with pthread API
Found this because clang was warning that the return value was being converted from unsigned to signed. The need for a mach API surprised me, and I found this alternative formulation in a Chromium bug: https://groups.google.com/forum/#!topic/native-client-reviews/z---hlHbQNc which describes: "mach_thread_self() needs to be balanced by mach_port_deallocate(), which is two system calls. pthread_mach_thread_np(pthread_self()) is two libc function calls and no system calls, because pthread caches the Mach port." Fixed the conversion warning too, with a cast. Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
This commit is contained in:
committed by
Chris Dickens
parent
0f59214f12
commit
860657126e
@@ -29,7 +29,7 @@
|
||||
# include <unistd.h>
|
||||
# include <sys/syscall.h>
|
||||
#elif defined(__APPLE__)
|
||||
# include <mach/mach.h>
|
||||
# include <pthread.h>
|
||||
#elif defined(__CYGWIN__)
|
||||
# include <windows.h>
|
||||
#endif
|
||||
@@ -69,8 +69,7 @@ int usbi_get_tid(void)
|
||||
real thread support. For 5.1 and earlier, -1 is returned. */
|
||||
ret = syscall(SYS_getthrid);
|
||||
#elif defined(__APPLE__)
|
||||
ret = mach_thread_self();
|
||||
mach_port_deallocate(mach_task_self(), ret);
|
||||
ret = (int)pthread_mach_thread_np(pthread_self());
|
||||
#elif defined(__CYGWIN__)
|
||||
ret = GetCurrentThreadId();
|
||||
#else
|
||||
|
||||
@@ -1 +1 @@
|
||||
#define LIBUSB_NANO 11280
|
||||
#define LIBUSB_NANO 11281
|
||||
|
||||
Reference in New Issue
Block a user