/* * * PRU Debug Program - UIO routines * (c) Copyright 2011,2013 by Arctica Technologies * Written by Steven Anderson * */ #include #include #include #include #include #include #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 && dent->d_type != DT_DIR) { // 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; }