#include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int fd[argc]; int maxfd = 0; fd_set fds; struct timeval timeout; uint32_t info = 1; /* unmask */ ssize_t nb = 0; FD_ZERO(&fds); for (int i=1; i%s<.\n%s\n", dev_mem, strerror(errno)); exit(1); } uint32_t scn_base = 0x80200000; uint32_t scn_size = 0x00001000; uint32_t scn_addr = 0x00000000; void *scnb = mmap((void *)scn_addr, scn_size, PROT_READ | PROT_WRITE, MAP_SHARED, sfd, scn_base); if (scnb == (void *)-1) { fprintf(stderr, "error mapping 0x%08lX+0x%08lX @0x%08lX.\n%s\n", (long)scn_base, (long)scn_size, (long)scn_addr, strerror(errno)); exit(2); } else scn_addr = (long unsigned)scnb; uint16_t *scn = scnb + 0x100; fprintf(stderr, "mapped 0x%08lX+0x%08lX to 0x%08lX.\n", (long unsigned)scn_base, (long unsigned)scn_size, (long unsigned)scn_addr); while (1) { /* some condition here */ timeout.tv_sec = 5; timeout.tv_usec = 0; fd_set rfds = fds; int res = select(maxfd+1, &rfds, NULL, NULL, &timeout); if (res == -1) { perror("select"); exit(EXIT_FAILURE); } else if (res == 0) { printf("timeout\n"); } else { for (int i=1; i