[Jack-Devel] JACK 2 is not real time safe on posix?
paul at linuxaudiosystems.com
Sun Apr 19 15:06:53 CEST 2015
There can be no such thing as strict real time safety in a system that
involves task (context switching). JACK does the best possible
approximation given the tools provided by the OS.
You are advised to worry less about the design of JACK internals, which are
now over a decade old and known to work extremely well on supported
platforms, and worry more about your own JACK client code.
On Sun, Apr 19, 2015 at 5:59 AM, Johannes Lorenz <
johannes89 at mailueberfall.de> wrote:
> it is often being said that JACK 2 is real time safe, for example in the
> JACK faq. I wondered how JACK 2 suspends a thread, so I checked what
> happens after the JackClient finished CallProcessCallback():
> -> JackClient::CycleWaitAux()
> -> JackClient::WaitSync()
> -> JackGraphManager::SuspendRefNum()
> -> JackConnectionManager::SuspendRefNum()
> -> virtual JackSynchro::TimedWait()
> However, I found only two classes in the `posix' folder that implement
> this virtual function:
> * JackPosixSemaphore: uses `sem_timedwait()' to block
> * JackFifo: uses `read()' to block
> However, both `sem_timedwait()' and `read()' are syscalls, so they contain
> context switch, which means they are non realtime. Actually, the JACK
> documentation warns to use function like these if you pass a process()
> callback to jack .
> So how can JACK claim it would be realtime? (No objections, I just don't
> understand it)
> Jack-Devel mailing list
> Jack-Devel at lists.jackaudio.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Jackaudio