Browse Source

usbutils use a heap buffer for bulk read rather than stack

nfactor-troky
Kano 12 years ago
parent
commit
4cb7cfb226
  1. 4
      usbutils.c
  2. 9
      usbutils.h

4
usbutils.c

@ -2292,9 +2292,7 @@ int _usb_read(struct cgpu_info *cgpu, int ep, char *buf, size_t bufsiz, int *pro @@ -2292,9 +2292,7 @@ int _usb_read(struct cgpu_info *cgpu, int ep, char *buf, size_t bufsiz, int *pro
bool first = true;
char *search;
int endlen;
// We add 4: 1 for null, 2 for FTDI status and 1 to round to 4 bytes
unsigned char usbbuf[USB_MAX_READ+4], *ptr;
unsigned char *ptr, *usbbuf = cgpu->usbinfo.bulkbuf;
size_t usbbufread;
DEVLOCK(cgpu, pstate);

9
usbutils.h

@ -184,6 +184,8 @@ struct cg_usb_device { @@ -184,6 +184,8 @@ struct cg_usb_device {
#define USB_NOSTAT 0
#define USB_MAX_READ 8192
struct cg_usb_info {
uint8_t bus_number;
uint8_t device_address;
@ -215,6 +217,13 @@ struct cg_usb_info { @@ -215,6 +217,13 @@ struct cg_usb_info {
double total_read_delay;
uint64_t write_delay_count;
double total_write_delay;
/*
* We add 4: 1 for null, 2 for FTDI status and 1 to round to 4 bytes
* If a single device ever has multiple end points then it will need
* multiple of these
*/
unsigned char bulkbuf[USB_MAX_READ+4];
};
enum usb_cmds {

Loading…
Cancel
Save