From: Clemens L. <cl...@la...> - 2013-07-13 08:31:09
|
Jonathan Woithe wrote: > On Fri, Jul 12, 2013 at 03:50:43PM +0200, Clemens Ladisch wrote: >> Jonathan Woithe wrote: >>> I'm working on a patch to fix this. We can't just Stop() the PosixThreads >>> because the sleep time can be quite lengthy. Libffado would therefore take >>> quite a few seconds to clean up typically, which is inconvenient. I expect >>> the solution to involve some combination of Stop() and pthread_signal() >> >> The 'proper' way to implement this is to send a message to the thread. >> This is typically implemented with a pipe for the message and using >> poll() for the sleep; if you need more than millisecond resolution, use >> ppoll() or add a timerfd to the polled fds. > > [...] > SystemTimeSource must use CLOCK_MONOTOMIC or CLOCK_MONOTOMIC_RAW to maintain > consistent timing with the streaming sections of FFADO. Is there a way to > explicitly select the clock used by ppoll()? The select/poll functions use CLOCK_MONOTONIC. If you want to change this, don't use poll's built-in timeout but add a timer created with timerfd_create. (But neither clock_nanosleep nor timerfd_create support CLOCK_MONOTONIC_RAW.) Regards, Clemens |