No wonder you get underruns if you don't run your process with SCHED_FIFO priority :-) See [sched_setscheduler](http://linux.die.net/man/2/sched_setscheduler)