Commit 3b3364b0 authored by garcialasheras's avatar garcialasheras

Fixing the automatic scan for available SPEC boards

parent 5154cd5e
...@@ -82,11 +82,9 @@ static int spec_check_id(int bus, int dev) ...@@ -82,11 +82,9 @@ static int spec_check_id(int bus, int dev)
static int spec_scan(int *bus, int *devfn) static int spec_scan(int *bus, int *devfn)
{ {
struct dirent **namelist; struct dirent **namelist;
int n, found = 0; int n, i, found = 0;
int my_bus, my_devfn; int my_bus, my_devfn;
if (*bus < 0 || *devfn < 0)
{
// Automatic search for the first availabe card // Automatic search for the first availabe card
n = scandir("/sys/bus/pci/devices/", &namelist, 0, 0); n = scandir("/sys/bus/pci/devices/", &namelist, 0, 0);
if (n < 0) if (n < 0)
...@@ -94,12 +92,14 @@ static int spec_scan(int *bus, int *devfn) ...@@ -94,12 +92,14 @@ static int spec_scan(int *bus, int *devfn)
perror("scandir"); perror("scandir");
exit(-1); exit(-1);
} else { } else {
while (n--) for(i=0; i<n; i++)
{ {
if(!found && sscanf(namelist[n]->d_name, if(!found && sscanf(namelist[i]->d_name,
"0000:%02x:%02x.0", "0000:%02x:%02x.0",
&my_bus, &my_devfn) == 2) &my_bus, &my_devfn) == 2)
{ {
if (*bus >= 0) my_bus = *bus;
if (*devfn >= 0) my_devfn = *devfn;
if (spec_check_id(my_bus, my_devfn)) if (spec_check_id(my_bus, my_devfn))
{ {
*bus = my_bus; *bus = my_bus;
...@@ -108,16 +108,11 @@ static int spec_scan(int *bus, int *devfn) ...@@ -108,16 +108,11 @@ static int spec_scan(int *bus, int *devfn)
} }
} }
free(namelist[n]); free(namelist[i]);
} }
free(namelist); free(namelist);
} }
} else {
// Check if the requested card is available
if (spec_check_id(*bus, *devfn))
found = 1;
}
if(!found) if(!found)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment