1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-03-10 04:31:03 +00:00

usbinfo.devlock is only ever write locked so convert it to a mutex

This commit is contained in:
Con Kolivas 2013-09-29 17:44:41 +10:00
parent 01e3c878cf
commit 14887ba852
2 changed files with 6 additions and 6 deletions

View File

@ -34,11 +34,11 @@
*/ */
#define DEVLOCK(cgpu, _pth_state) do { \ #define DEVLOCK(cgpu, _pth_state) do { \
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &_pth_state); \ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &_pth_state); \
wr_lock(cgpu->usbinfo.devlock); \ mutex_lock(cgpu->usbinfo.devlock); \
} while (0) } while (0)
#define DEVUNLOCK(cgpu, _pth_state) do { \ #define DEVUNLOCK(cgpu, _pth_state) do { \
wr_unlock(cgpu->usbinfo.devlock); \ mutex_unlock(cgpu->usbinfo.devlock); \
pthread_setcancelstate(_pth_state, NULL); \ pthread_setcancelstate(_pth_state, NULL); \
} while (0) } while (0)
@ -1384,7 +1384,7 @@ struct cgpu_info *usb_alloc_cgpu(struct device_drv *drv, int threads)
if (unlikely(!cgpu->usbinfo.devlock)) if (unlikely(!cgpu->usbinfo.devlock))
quit(1, "Failed to calloc devlock for %s in usb_alloc_cgpu", drv->dname); quit(1, "Failed to calloc devlock for %s in usb_alloc_cgpu", drv->dname);
rwlock_init(cgpu->usbinfo.devlock); mutex_init(cgpu->usbinfo.devlock);
return cgpu; return cgpu;
} }
@ -3083,9 +3083,9 @@ void usb_cleanup()
case DRIVER_modminer: case DRIVER_modminer:
case DRIVER_icarus: case DRIVER_icarus:
case DRIVER_avalon: case DRIVER_avalon:
wr_lock(cgpu->usbinfo.devlock); mutex_lock(cgpu->usbinfo.devlock);
release_cgpu(cgpu); release_cgpu(cgpu);
wr_unlock(cgpu->usbinfo.devlock); mutex_unlock(cgpu->usbinfo.devlock);
count++; count++;
break; break;
default: default:

View File

@ -237,7 +237,7 @@ struct cg_usb_info {
* that uses the lock - however, all usbutils code MUST use it * that uses the lock - however, all usbutils code MUST use it
* to avoid devices disappearing while in use by multiple threads * to avoid devices disappearing while in use by multiple threads
*/ */
pthread_rwlock_t *devlock; pthread_mutex_t *devlock;
time_t last_pipe; time_t last_pipe;
uint64_t pipe_count; uint64_t pipe_count;