#include #include #include #include #include #include #include #include #include #include #include //#define UFDS_COUNT 10 #define UFDS_COUNT 1 void select_call(const char *device) { int result, fd; fd_set tmpfds, readfds, writefds, exceptfds; fd = open(device, O_RDONLY | O_NONBLOCK); if(fd == -1) { fprintf(stderr, "Error opening %s: %s\n", device, strerror(errno)); exit(1); } FD_ZERO(&tmpfds); FD_SET(fd, &tmpfds); for(;;) { writefds = exceptfds = readfds = tmpfds; result = select(fd+1, &readfds, &writefds, &exceptfds, NULL); if(result == -1) { perror("Select error"); exit(1); } if(FD_ISSET(fd, &readfds)) { struct js_event event; int size; printf("%s readable\n", __FUNCTION__); size = read(fd, &event, sizeof(event)); if(size == -1) { fprintf(stderr, "%s Error reading data\n", __FUNCTION__); if(errno == ENODEV) exit(1); } } if(FD_ISSET(fd, &writefds)) { printf("%s writable\n", __FUNCTION__); } if(FD_ISSET(fd, &exceptfds)) { printf("%s exception\n", __FUNCTION__); break; } } } void poll_call(const char *device) { int i, result, fd; struct pollfd ufds[UFDS_COUNT]; fd = open(device, O_RDONLY | O_NONBLOCK); if(fd == -1) { fprintf(stderr, "Error opening %s: %s\n", device, strerror(errno)); exit(1); } for(i=0; i