#include #include #include #include #include #include int main(int argc, char* argv[]) { int fd; int err; unsigned long v; fd = open("/dev/rtc", O_RDWR | O_NONBLOCK); if (fd == -1) { perror("Cannot open /dev/rtc"); return 1; } err = ioctl(fd, RTC_IRQP_SET, 8192); if (err) { perror("Cannot set 1kHz timer"); return 1; } err = ioctl(fd, RTC_PIE_ON); if (err) { perror("Cannot start periodic interrupt"); return 1; } err = read(fd, &v, sizeof v); if (err != sizeof v) { if (err != -1 || errno != EAGAIN) { perror("Cannot flush interrupt count"); return 1; } } sleep(1); err = read(fd, &v, sizeof v); if (err != sizeof v) { perror("Cannot retrieve interrupt count after 1 second"); return 1; } printf("Read: %lu-%02lX\n", v / 256, v & 0xFF); close(fd); return 0; }