Browse Source

Deuglify use of _PARSE_COMMANDS macro expansions.

nfactor-troky
Con Kolivas 11 years ago
parent
commit
5e1ebd5070
  1. 27
      api.c
  2. 17
      cgminer.c
  3. 21
      miner.h
  4. 20
      usbutils.c

27
api.c

@ -1211,6 +1211,9 @@ static struct api_data *print_data(struct api_data *root, char *buf, bool isjson
return root; return root;
} }
#define DRIVER_COUNT_DRV(X) if (devices[i]->drv->drv_id == DRIVER_##X) \
count++;
#ifdef HAVE_AN_ASIC #ifdef HAVE_AN_ASIC
static int numascs(void) static int numascs(void)
{ {
@ -1219,11 +1222,7 @@ static int numascs(void)
rd_lock(&devices_lock); rd_lock(&devices_lock);
for (i = 0; i < total_devices; i++) { for (i = 0; i < total_devices; i++) {
#define DRIVER_ADD_COMMAND(X) \ ASIC_PARSE_COMMANDS(DRIVER_COUNT_DRV)
if (devices[i]->drv->drv_id == DRIVER_##X) \
count++;
ASIC_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
} }
rd_unlock(&devices_lock); rd_unlock(&devices_lock);
return count; return count;
@ -1236,11 +1235,7 @@ static int ascdevice(int ascid)
rd_lock(&devices_lock); rd_lock(&devices_lock);
for (i = 0; i < total_devices; i++) { for (i = 0; i < total_devices; i++) {
#define DRIVER_ADD_COMMAND(X) \ ASIC_PARSE_COMMANDS(DRIVER_COUNT_DRV)
if (devices[i]->drv->drv_id == DRIVER_##X) \
count++;
ASIC_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
if (count == (ascid + 1)) if (count == (ascid + 1))
goto foundit; goto foundit;
} }
@ -1263,11 +1258,7 @@ static int numpgas(void)
rd_lock(&devices_lock); rd_lock(&devices_lock);
for (i = 0; i < total_devices; i++) { for (i = 0; i < total_devices; i++) {
#define DRIVER_ADD_COMMAND(X) \ FPGA_PARSE_COMMANDS(DRIVER_COUNT_DRV)
if (devices[i]->drv->drv_id == DRIVER_##X) \
count++;
FPGA_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
} }
rd_unlock(&devices_lock); rd_unlock(&devices_lock);
return count; return count;
@ -1280,11 +1271,7 @@ static int pgadevice(int pgaid)
rd_lock(&devices_lock); rd_lock(&devices_lock);
for (i = 0; i < total_devices; i++) { for (i = 0; i < total_devices; i++) {
#define DRIVER_ADD_COMMAND(X) \ FPGA_PARSE_COMMANDS(DRIVER_COUNT_DRV)
if (devices[i]->drv->drv_id == DRIVER_##X) \
count++;
FPGA_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
if (count == (pgaid + 1)) if (count == (pgaid + 1))
goto foundit; goto foundit;
} }

17
cgminer.c

@ -7604,6 +7604,8 @@ static void hotplug_process()
switch_logsize(true); switch_logsize(true);
} }
#define DRIVER_DRV_DETECT_HOTPLUG(X) X##_drv.drv_detect(true);
static void *hotplug_thread(void __maybe_unused *userdata) static void *hotplug_thread(void __maybe_unused *userdata)
{ {
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
@ -7625,9 +7627,7 @@ static void *hotplug_thread(void __maybe_unused *userdata)
/* Use the DRIVER_PARSE_COMMANDS macro to detect all /* Use the DRIVER_PARSE_COMMANDS macro to detect all
* devices */ * devices */
#define DRIVER_ADD_COMMAND(X) X##_drv.drv_detect(true); DRIVER_PARSE_COMMANDS(DRIVER_DRV_DETECT_HOTPLUG)
DRIVER_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
if (new_devices) if (new_devices)
hotplug_process(); hotplug_process();
@ -7653,6 +7653,9 @@ static void probe_pools(void)
} }
} }
#define DRIVER_FILL_DEVICE_DRV(X) fill_device_drv(&X##_drv);
#define DRIVER_DRV_DETECT_ALL(X) X##_drv.drv_detect(false);
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
struct sigaction handler; struct sigaction handler;
@ -7834,17 +7837,13 @@ int main(int argc, char *argv[])
#endif #endif
/* Use the DRIVER_PARSE_COMMANDS macro to fill all the device_drvs */ /* Use the DRIVER_PARSE_COMMANDS macro to fill all the device_drvs */
#define DRIVER_ADD_COMMAND(X) fill_device_drv(&X##_drv); DRIVER_PARSE_COMMANDS(DRIVER_FILL_DEVICE_DRV)
DRIVER_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
if (opt_scrypt) if (opt_scrypt)
opencl_drv.drv_detect(false); opencl_drv.drv_detect(false);
else { else {
/* Use the DRIVER_PARSE_COMMANDS macro to detect all devices */ /* Use the DRIVER_PARSE_COMMANDS macro to detect all devices */
#define DRIVER_ADD_COMMAND(X) X##_drv.drv_detect(false); DRIVER_PARSE_COMMANDS(DRIVER_DRV_DETECT_ALL)
DRIVER_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
} }
if (opt_display_devs) { if (opt_display_devs) {

21
miner.h

@ -234,34 +234,33 @@ static inline int fsync (int fd)
* trying to claim same chip but different devices. Adding a device here will * trying to claim same chip but different devices. Adding a device here will
* update all macros in the code that use the *_PARSE_COMMANDS macros for each * update all macros in the code that use the *_PARSE_COMMANDS macros for each
* listed driver. */ * listed driver. */
#define FPGA_PARSE_COMMANDS \ #define FPGA_PARSE_COMMANDS(DRIVER_ADD_COMMAND) \
DRIVER_ADD_COMMAND(bitforce) \ DRIVER_ADD_COMMAND(bitforce) \
DRIVER_ADD_COMMAND(icarus) \ DRIVER_ADD_COMMAND(icarus) \
DRIVER_ADD_COMMAND(modminer) \ DRIVER_ADD_COMMAND(modminer) \
DRIVER_ADD_COMMAND(ztex) DRIVER_ADD_COMMAND(ztex)
#define ASIC_PARSE_COMMANDS \ #define ASIC_PARSE_COMMANDS(DRIVER_ADD_COMMAND) \
DRIVER_ADD_COMMAND(bflsc) \ DRIVER_ADD_COMMAND(bflsc) \
DRIVER_ADD_COMMAND(bitfury) \ DRIVER_ADD_COMMAND(bitfury) \
DRIVER_ADD_COMMAND(avalon) DRIVER_ADD_COMMAND(avalon)
#define DRIVER_PARSE_COMMANDS \ #define DRIVER_PARSE_COMMANDS(DRIVER_ADD_COMMAND) \
DRIVER_ADD_COMMAND(opencl) \ DRIVER_ADD_COMMAND(opencl) \
FPGA_PARSE_COMMANDS \ FPGA_PARSE_COMMANDS(DRIVER_ADD_COMMAND) \
ASIC_PARSE_COMMANDS ASIC_PARSE_COMMANDS(DRIVER_ADD_COMMAND)
#define DRIVER_ENUM(X) DRIVER_##X,
#define DRIVER_PROTOTYPE(X) struct device_drv X##_drv;
/* Create drv_driver enum from DRIVER_PARSE_COMMANDS macro */ /* Create drv_driver enum from DRIVER_PARSE_COMMANDS macro */
#define DRIVER_ADD_COMMAND(X) DRIVER_##X,
enum drv_driver { enum drv_driver {
DRIVER_PARSE_COMMANDS DRIVER_PARSE_COMMANDS(DRIVER_ENUM)
DRIVER_MAX DRIVER_MAX
}; };
#undef DRIVER_ADD_COMMAND
/* Use DRIVER_PARSE_COMMANDS to generate extern device_drv prototypes */ /* Use DRIVER_PARSE_COMMANDS to generate extern device_drv prototypes */
#define DRIVER_ADD_COMMAND(X) struct device_drv X##_drv; DRIVER_PARSE_COMMANDS(DRIVER_PROTOTYPE)
DRIVER_PARSE_COMMANDS;
#undef DRIVER_ADD_COMMAND
enum alive { enum alive {
LIFE_WELL, LIFE_WELL,

20
usbutils.c

@ -1840,6 +1840,9 @@ static struct usb_find_devices *usb_check_each(int drvnum, struct device_drv *dr
return NULL; return NULL;
} }
#define DRIVER_USB_CHECK_EACH(X) if (drv->drv_id == DRIVER_##X) \
return usb_check_each(DRIVER_##X, drv, dev);
static struct usb_find_devices *usb_check(__maybe_unused struct device_drv *drv, __maybe_unused struct libusb_device *dev) static struct usb_find_devices *usb_check(__maybe_unused struct device_drv *drv, __maybe_unused struct libusb_device *dev)
{ {
if (drv_count[drv->drv_id].count >= drv_count[drv->drv_id].limit) { if (drv_count[drv->drv_id].count >= drv_count[drv->drv_id].limit) {
@ -1849,11 +1852,7 @@ static struct usb_find_devices *usb_check(__maybe_unused struct device_drv *drv,
return NULL; return NULL;
} }
#define DRIVER_ADD_COMMAND(X) \ DRIVER_PARSE_COMMANDS(DRIVER_USB_CHECK_EACH)
if (drv->drv_id == DRIVER_##X) \
return usb_check_each(DRIVER_##X, drv, dev);
DRIVER_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
return NULL; return NULL;
} }
@ -3125,6 +3124,10 @@ void usb_cleanup()
cgsem_destroy(&usb_resource_sem); cgsem_destroy(&usb_resource_sem);
} }
#define DRIVER_COUNT_FOUND(X) if (strcasecmp(ptr, X##_drv.name) == 0) { \
drv_count[X##_drv.drv_id].limit = lim; \
found = true; \
}
void usb_initialise() void usb_initialise()
{ {
char *fre, *ptr, *comma, *colon; char *fre, *ptr, *comma, *colon;
@ -3210,12 +3213,7 @@ void usb_initialise()
found = false; found = false;
/* Use the DRIVER_PARSE_COMMANDS macro to iterate /* Use the DRIVER_PARSE_COMMANDS macro to iterate
* over all the drivers. */ * over all the drivers. */
#define DRIVER_ADD_COMMAND(X) if (strcasecmp(ptr, X##_drv.name) == 0) { \ DRIVER_PARSE_COMMANDS(DRIVER_COUNT_FOUND)
drv_count[X##_drv.drv_id].limit = lim; \
found = true; \
}
DRIVER_PARSE_COMMANDS
#undef DRIVER_ADD_COMMAND
if (!found) if (!found)
quit(1, "Invalid --usb DRV:limit - unknown DRV='%s'", ptr); quit(1, "Invalid --usb DRV:limit - unknown DRV='%s'", ptr);

Loading…
Cancel
Save