mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-25 14:04:25 +00:00
Make the devices array a dynamically allocated array of pointers to allow unlimited devices.
This commit is contained in:
parent
eaf1505381
commit
5cf4b7c432
@ -116,7 +116,7 @@ struct list_head scan_devices;
|
|||||||
static signed int devices_enabled;
|
static signed int devices_enabled;
|
||||||
static bool opt_removedisabled;
|
static bool opt_removedisabled;
|
||||||
int total_devices;
|
int total_devices;
|
||||||
struct cgpu_info *devices[MAX_DEVICES];
|
struct cgpu_info **devices;
|
||||||
bool have_opencl;
|
bool have_opencl;
|
||||||
int opt_n_threads = -1;
|
int opt_n_threads = -1;
|
||||||
int mining_threads;
|
int mining_threads;
|
||||||
@ -4936,6 +4936,7 @@ bool add_cgpu(struct cgpu_info*cgpu)
|
|||||||
cgpu->device_id = d->lastid = 0;
|
cgpu->device_id = d->lastid = 0;
|
||||||
HASH_ADD_STR(devids, name, d);
|
HASH_ADD_STR(devids, name, d);
|
||||||
}
|
}
|
||||||
|
devices = realloc(devices, sizeof(struct cgpu_info *) * (total_devices + 2));
|
||||||
devices[total_devices++] = cgpu;
|
devices[total_devices++] = cgpu;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -5025,8 +5026,6 @@ int main(int argc, char *argv[])
|
|||||||
gpus[i].dynamic = true;
|
gpus[i].dynamic = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
memset(devices, 0, sizeof(devices));
|
|
||||||
|
|
||||||
/* parse command line */
|
/* parse command line */
|
||||||
opt_register_table(opt_config_table,
|
opt_register_table(opt_config_table,
|
||||||
"Options for both config file and command line");
|
"Options for both config file and command line");
|
||||||
|
@ -731,8 +731,6 @@ static void cpu_detect()
|
|||||||
if (num_processors < 1)
|
if (num_processors < 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (total_devices + opt_n_threads > MAX_DEVICES)
|
|
||||||
opt_n_threads = MAX_DEVICES - total_devices;
|
|
||||||
cpus = calloc(opt_n_threads, sizeof(struct cgpu_info));
|
cpus = calloc(opt_n_threads, sizeof(struct cgpu_info));
|
||||||
if (unlikely(!cpus))
|
if (unlikely(!cpus))
|
||||||
quit(1, "Failed to calloc cpus");
|
quit(1, "Failed to calloc cpus");
|
||||||
|
@ -179,7 +179,7 @@ struct ICARUS_INFO {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// One for each possible device
|
// One for each possible device
|
||||||
static struct ICARUS_INFO *icarus_info[MAX_DEVICES];
|
static struct ICARUS_INFO **icarus_info;
|
||||||
|
|
||||||
struct device_api icarus_api;
|
struct device_api icarus_api;
|
||||||
|
|
||||||
@ -421,6 +421,7 @@ static bool icarus_detect_one(const char *devpath)
|
|||||||
icarus->device_path = strdup(devpath);
|
icarus->device_path = strdup(devpath);
|
||||||
icarus->threads = 1;
|
icarus->threads = 1;
|
||||||
add_cgpu(icarus);
|
add_cgpu(icarus);
|
||||||
|
icarus_info = realloc(icarus_info, sizeof(struct ICARUS_INFO *) * (total_devices + 2));
|
||||||
|
|
||||||
applog(LOG_INFO, "Found Icarus at %s, mark as %d",
|
applog(LOG_INFO, "Found Icarus at %s, mark as %d",
|
||||||
devpath, icarus->device_id);
|
devpath, icarus->device_id);
|
||||||
|
@ -1126,9 +1126,6 @@ static void opencl_detect()
|
|||||||
nDevs = 0;
|
nDevs = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MAX_DEVICES - total_devices < nDevs)
|
|
||||||
nDevs = MAX_DEVICES - total_devices;
|
|
||||||
|
|
||||||
if (!nDevs)
|
if (!nDevs)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -66,8 +66,6 @@ static void ztex_detect(void)
|
|||||||
applog(LOG_WARNING, "Found %d ztex board(s)", cnt);
|
applog(LOG_WARNING, "Found %d ztex board(s)", cnt);
|
||||||
|
|
||||||
for (i = 0; i < cnt; i++) {
|
for (i = 0; i < cnt; i++) {
|
||||||
if (total_devices == MAX_DEVICES)
|
|
||||||
break;
|
|
||||||
ztex = calloc(1, sizeof(struct cgpu_info));
|
ztex = calloc(1, sizeof(struct cgpu_info));
|
||||||
ztex->api = &ztex_api;
|
ztex->api = &ztex_api;
|
||||||
ztex->device_ztex = ztex_devices[i]->dev;
|
ztex->device_ztex = ztex_devices[i]->dev;
|
||||||
|
21
fpgautils.c
21
fpgautils.c
@ -40,9 +40,6 @@
|
|||||||
char
|
char
|
||||||
serial_autodetect_udev(detectone_func_t detectone, const char*prodname)
|
serial_autodetect_udev(detectone_func_t detectone, const char*prodname)
|
||||||
{
|
{
|
||||||
if (total_devices == MAX_DEVICES)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
struct udev *udev = udev_new();
|
struct udev *udev = udev_new();
|
||||||
struct udev_enumerate *enumerate = udev_enumerate_new(udev);
|
struct udev_enumerate *enumerate = udev_enumerate_new(udev);
|
||||||
struct udev_list_entry *list_entry;
|
struct udev_list_entry *list_entry;
|
||||||
@ -64,9 +61,6 @@ serial_autodetect_udev(detectone_func_t detectone, const char*prodname)
|
|||||||
++found;
|
++found;
|
||||||
|
|
||||||
udev_device_unref(device);
|
udev_device_unref(device);
|
||||||
|
|
||||||
if (total_devices == MAX_DEVICES)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
udev_enumerate_unref(enumerate);
|
udev_enumerate_unref(enumerate);
|
||||||
udev_unref(udev);
|
udev_unref(udev);
|
||||||
@ -85,9 +79,6 @@ char
|
|||||||
serial_autodetect_devserial(detectone_func_t detectone, const char*prodname)
|
serial_autodetect_devserial(detectone_func_t detectone, const char*prodname)
|
||||||
{
|
{
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
if (total_devices == MAX_DEVICES)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
DIR *D;
|
DIR *D;
|
||||||
struct dirent *de;
|
struct dirent *de;
|
||||||
const char udevdir[] = "/dev/serial/by-id";
|
const char udevdir[] = "/dev/serial/by-id";
|
||||||
@ -104,11 +95,8 @@ serial_autodetect_devserial(detectone_func_t detectone, const char*prodname)
|
|||||||
if (!strstr(de->d_name, prodname))
|
if (!strstr(de->d_name, prodname))
|
||||||
continue;
|
continue;
|
||||||
strcpy(devfile, de->d_name);
|
strcpy(devfile, de->d_name);
|
||||||
if (detectone(devpath)) {
|
if (detectone(devpath))
|
||||||
++found;
|
++found;
|
||||||
if (total_devices == MAX_DEVICES)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
closedir(D);
|
closedir(D);
|
||||||
|
|
||||||
@ -121,9 +109,6 @@ serial_autodetect_devserial(detectone_func_t detectone, const char*prodname)
|
|||||||
char
|
char
|
||||||
_serial_detect(const char*dname, detectone_func_t detectone, autoscan_func_t autoscan, bool forceauto)
|
_serial_detect(const char*dname, detectone_func_t detectone, autoscan_func_t autoscan, bool forceauto)
|
||||||
{
|
{
|
||||||
if (total_devices == MAX_DEVICES)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
struct string_elist *iter, *tmp;
|
struct string_elist *iter, *tmp;
|
||||||
const char*s, *p;
|
const char*s, *p;
|
||||||
bool inhibitauto = false;
|
bool inhibitauto = false;
|
||||||
@ -148,12 +133,10 @@ _serial_detect(const char*dname, detectone_func_t detectone, autoscan_func_t aut
|
|||||||
string_elist_del(iter);
|
string_elist_del(iter);
|
||||||
inhibitauto = true;
|
inhibitauto = true;
|
||||||
++found;
|
++found;
|
||||||
if (total_devices == MAX_DEVICES)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((forceauto || !inhibitauto) && autoscan && total_devices < MAX_DEVICES)
|
if ((forceauto || !inhibitauto) && autoscan)
|
||||||
found += autoscan();
|
found += autoscan();
|
||||||
|
|
||||||
return found;
|
return found;
|
||||||
|
3
miner.h
3
miner.h
@ -585,7 +585,6 @@ extern int add_pool_details(bool live, char *url, char *user, char *pass);
|
|||||||
#define ADD_POOL_OK 0
|
#define ADD_POOL_OK 0
|
||||||
|
|
||||||
#define MAX_GPUDEVICES 16
|
#define MAX_GPUDEVICES 16
|
||||||
#define MAX_DEVICES 64
|
|
||||||
#define MAX_POOLS (32)
|
#define MAX_POOLS (32)
|
||||||
|
|
||||||
#define MIN_INTENSITY -10
|
#define MIN_INTENSITY -10
|
||||||
@ -607,7 +606,7 @@ extern double total_secs;
|
|||||||
extern int mining_threads;
|
extern int mining_threads;
|
||||||
extern struct cgpu_info *cpus;
|
extern struct cgpu_info *cpus;
|
||||||
extern int total_devices;
|
extern int total_devices;
|
||||||
extern struct cgpu_info *devices[];
|
extern struct cgpu_info **devices;
|
||||||
extern int total_pools;
|
extern int total_pools;
|
||||||
extern struct pool *pools[MAX_POOLS];
|
extern struct pool *pools[MAX_POOLS];
|
||||||
extern const char *algo_names[];
|
extern const char *algo_names[];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user