#include #include #include #include #include #include void sigint(int sig) { fprintf(stderr, "Keyboard Interrupt\n"); return; } int pm_qos_fd = -1; int start_low_latency(void) { int32_t target = 0; int ret; if (pm_qos_fd >= 0) return 0; if ((pm_qos_fd = open("/dev/cpu_dma_latency", O_WRONLY)) == -1) { fprintf(stderr, "Failed to open /dev/cpu_dma_latency: %s\n", strerror(errno)); return errno; } if ((ret = write(pm_qos_fd, &target, sizeof(target))) <= 0) { fprintf(stderr, "Failed to write zero to /dev/cpu_dma_latency: %s\n", strerror(errno)); return errno; } return 0; } void stop_low_latency(void) { if (pm_qos_fd >= 0) close(pm_qos_fd); } int main(int argc, char **argv) { int ret; if (start_low_latency()) { fprintf(stderr, "failed to enter low-latency mode!\n"); exit(-1); } signal(SIGINT, sigint); printf("pausing with /dev/cpu_dma_latency open\n"); pause(); printf("closing /dev/cpu_dma_latency\n"); stop_low_latency(); exit(0); }