62 lines
1.2 KiB
C
62 lines
1.2 KiB
C
/*
|
|
*
|
|
* PRU Debug Program - UIO routines
|
|
* (c) Copyright 2011,2013 by Arctica Technologies
|
|
* Written by Steven Anderson
|
|
*
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <dirent.h>
|
|
#include <string.h>
|
|
|
|
#include "uio.h"
|
|
|
|
|
|
// get UIO devices and put into structure
|
|
int uio_getprussfile(char *devname)
|
|
{
|
|
DIR *d;
|
|
struct dirent *dent;
|
|
char fn[UIO_MAX_UIO_FILEPATH];
|
|
FILE *fd;
|
|
char s_name[UIO_MAX_DEV_NAME];
|
|
|
|
// clear user buffer
|
|
devname[0] = 0;
|
|
|
|
// open directory /dev and scan for uio* files
|
|
d = opendir("/dev");
|
|
|
|
// read in first entry
|
|
dent = readdir(d);
|
|
|
|
// scan the entries
|
|
while (dent != NULL) {
|
|
// determine if this is a uio* file
|
|
if (dent->d_name[0] == 'u' && dent->d_name[1] == 'i' && dent->d_name[2] == 'o' && devname[0] == 0) {
|
|
// get uio device name and version
|
|
sprintf(fn, "/sys/class/uio/%s/name", dent->d_name);
|
|
fd = fopen (fn, "r");
|
|
fgets(s_name, UIO_MAX_DEV_NAME, fd);
|
|
s_name[strlen(s_name)-1] = 0;
|
|
if (!strncmp(s_name, "pruss", 5)) {
|
|
sprintf(devname, "/dev/%s", dent->d_name);
|
|
}
|
|
fclose(fd);
|
|
}
|
|
|
|
// read next directory entry
|
|
dent = readdir(d);
|
|
}
|
|
|
|
// close directory handle
|
|
closedir(d);
|
|
|
|
return 0;
|
|
}
|
|
|