|
|
|
@ -3218,8 +3218,6 @@ static void __kill_work(void)
@@ -3218,8 +3218,6 @@ static void __kill_work(void)
|
|
|
|
|
/* Release USB resources in case it's a restart
|
|
|
|
|
* and not a QUIT */ |
|
|
|
|
if (!opt_scrypt) { |
|
|
|
|
usb_polling = false; |
|
|
|
|
|
|
|
|
|
applog(LOG_DEBUG, "Releasing all USB devices"); |
|
|
|
|
usb_cleanup(); |
|
|
|
|
|
|
|
|
@ -7221,6 +7219,8 @@ static void clean_up(void)
@@ -7221,6 +7219,8 @@ static void clean_up(void)
|
|
|
|
|
clear_adl(nDevs); |
|
|
|
|
#endif |
|
|
|
|
#ifdef USE_USBUTILS |
|
|
|
|
usb_polling = false; |
|
|
|
|
pthread_join(usb_poll_thread, NULL); |
|
|
|
|
libusb_exit(NULL); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
@ -7792,11 +7792,12 @@ static void probe_pools(void)
@@ -7792,11 +7792,12 @@ static void probe_pools(void)
|
|
|
|
|
#ifdef USE_USBUTILS |
|
|
|
|
static void *libusb_poll_thread(void __maybe_unused *arg) |
|
|
|
|
{ |
|
|
|
|
struct timeval tv_end = {0, 200000}; |
|
|
|
|
|
|
|
|
|
RenameThread("usbpoll"); |
|
|
|
|
|
|
|
|
|
pthread_detach(pthread_self()); |
|
|
|
|
while (usb_polling) |
|
|
|
|
libusb_handle_events(NULL); |
|
|
|
|
libusb_handle_events_timeout_completed(NULL, &tv_end, NULL); |
|
|
|
|
|
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|