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)
static int spec_scan(int *bus, int *devfn)
{
struct dirent **namelist;
int n, found = 0;
int n, i, found = 0;
int my_bus, my_devfn;
if (*bus < 0 || *devfn < 0)
{
// Automatic search for the first availabe card
n = scandir("/sys/bus/pci/devices/", &namelist, 0, 0);
if (n < 0)
......@@ -94,12 +92,14 @@ static int spec_scan(int *bus, int *devfn)
perror("scandir");
exit(-1);
} 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",
&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))
{
*bus = my_bus;
......@@ -108,16 +108,11 @@ static int spec_scan(int *bus, int *devfn)
}
}
free(namelist[n]);
free(namelist[i]);
}
free(namelist);
}
} else {
// Check if the requested card is available
if (spec_check_id(*bus, *devfn))
found = 1;
}
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