usb lock out use cg locks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
diff --git a/cgminer.c b/cgminer.c
index fa9ca5b..b8bd5d6 100644
--- a/cgminer.c
+++ b/cgminer.c
@@ -185,7 +185,7 @@ int hotplug_time = 5;
#ifdef USE_USBUTILS
pthread_mutex_t cgusb_lock;
pthread_mutex_t cgusbres_lock;
-pthread_rwlock_t cgusb_fd_lock;
+cglock_t cgusb_fd_lock;
#endif
pthread_mutex_t hash_lock;
@@ -7340,7 +7340,7 @@ int main(int argc, char *argv[])
#ifdef USE_USBUTILS
mutex_init(&cgusb_lock);
mutex_init(&cgusbres_lock);
- rwlock_init(&cgusb_fd_lock);
+ cglock_init(&cgusb_fd_lock);
#endif
#endif
diff --git a/miner.h b/miner.h
index 89a535a..6fc82b8 100644
--- a/miner.h
+++ b/miner.h
@@ -897,7 +897,7 @@ extern int opt_expiry;
#ifdef USE_USBUTILS
extern pthread_mutex_t cgusb_lock;
extern pthread_mutex_t cgusbres_lock;
-extern pthread_rwlock_t cgusb_fd_lock;
+extern cglock_t cgusb_fd_lock;
#endif
extern cglock_t control_lock;
diff --git a/usbutils.c b/usbutils.c
index 7a3dcb4..b226fc6 100644
--- a/usbutils.c
+++ b/usbutils.c
@@ -1339,9 +1339,9 @@ void usb_uninit(struct cgpu_info *cgpu)
if (!cgpu->usbdev)
return;
if (!libusb_release_interface(cgpu->usbdev->handle, cgpu->usbdev->found->interface)) {
- wr_lock(&cgusb_fd_lock);
+ cg_wlock(&cgusb_fd_lock);
libusb_close(cgpu->usbdev->handle);
- wr_unlock(&cgusb_fd_lock);
+ cg_wunlock(&cgusb_fd_lock);
}
cgpu->usbdev = free_cgusb(cgpu->usbdev);
}
@@ -1520,9 +1520,9 @@ static int _usb_init(struct cgpu_info *cgpu, struct libusb_device *dev, struct u
goto dame;
}
- wr_lock(&cgusb_fd_lock);
+ cg_wlock(&cgusb_fd_lock);
err = libusb_open(dev, &(cgusb->handle));
- wr_unlock(&cgusb_fd_lock);
+ cg_wunlock(&cgusb_fd_lock);
if (err) {
switch (err) {
case LIBUSB_ERROR_ACCESS:
@@ -1732,9 +1732,9 @@ static int _usb_init(struct cgpu_info *cgpu, struct libusb_device *dev, struct u
cldame:
- wr_lock(&cgusb_fd_lock);
+ cg_wlock(&cgusb_fd_lock);
libusb_close(cgusb->handle);
- wr_unlock(&cgusb_fd_lock);
+ cg_wunlock(&cgusb_fd_lock);
dame:
@@ -2184,10 +2184,10 @@ usb_bulk_transfer(struct libusb_device_handle *dev_handle,
{
int err, tries = 0;
- rd_lock(&cgusb_fd_lock);
+ cg_rlock(&cgusb_fd_lock);
err = libusb_bulk_transfer(dev_handle, endpoint, data, length,
transferred, timeout);
- rd_unlock(&cgusb_fd_lock);
+ cg_runlock(&cgusb_fd_lock);
if (unlikely(err == LIBUSB_ERROR_PIPE)) {
applog(LOG_WARNING, "%s: libusb pipe error, trying to clear",
@@ -2198,10 +2198,10 @@ usb_bulk_transfer(struct libusb_device_handle *dev_handle,
err == LIBUSB_ERROR_NO_DEVICE))
break;
- rd_lock(&cgusb_fd_lock);
+ cg_rlock(&cgusb_fd_lock);
err = libusb_bulk_transfer(dev_handle, endpoint, data,
length, transferred, timeout);
- rd_unlock(&cgusb_fd_lock);
+ cg_runlock(&cgusb_fd_lock);
} while (err == LIBUSB_ERROR_PIPE && tries++ < USB_RETRY_MAX);
applog(LOG_DEBUG, "%s: libusb pipe error%scleared",
cgpu->drv->name, err ? " not " : " ");
@@ -2578,11 +2578,11 @@ int _usb_transfer(struct cgpu_info *cgpu, uint8_t request_type, uint8_t bRequest
USBDEBUG("USB debug: @_usb_transfer() buf=%s", bin2hex((unsigned char *)buf, (size_t)siz));
STATS_TIMEVAL(&tv_start);
- rd_lock(&cgusb_fd_lock);
+ cg_rlock(&cgusb_fd_lock);
err = libusb_control_transfer(usbdev->handle, request_type,
bRequest, wValue, wIndex, (unsigned char *)buf, (uint16_t)siz,
timeout == DEVTIMEOUT ? usbdev->found->timeout : timeout);
- rd_unlock(&cgusb_fd_lock);
+ cg_runlock(&cgusb_fd_lock);
STATS_TIMEVAL(&tv_finish);
USB_STATS(cgpu, &tv_start, &tv_finish, err, MODE_CTRL_WRITE, cmd, SEQ0);
@@ -2625,12 +2625,12 @@ int _usb_transfer_read(struct cgpu_info *cgpu, uint8_t request_type, uint8_t bRe
*amount = 0;
STATS_TIMEVAL(&tv_start);
- rd_lock(&cgusb_fd_lock);
+ cg_rlock(&cgusb_fd_lock);
err = libusb_control_transfer(usbdev->handle, request_type,
bRequest, wValue, wIndex,
(unsigned char *)buf, (uint16_t)bufsiz,
timeout == DEVTIMEOUT ? usbdev->found->timeout : timeout);
- rd_unlock(&cgusb_fd_lock);
+ cg_runlock(&cgusb_fd_lock);
STATS_TIMEVAL(&tv_finish);
USB_STATS(cgpu, &tv_start, &tv_finish, err, MODE_CTRL_READ, cmd, SEQ0);