Andrew Burgess
2004-12-02 16:00:17 UTC
Hmm, i wonder if there's a way to detect non RT behaviour in jackd
clients. I mean AFAIK the only thing allowed for the process callback
of on is the FIFO it waits on to be woken, right? Every other sleeping
is to be considered a bug.
gettimeofday(1,1);clients. I mean AFAIK the only thing allowed for the process callback
of on is the FIFO it waits on to be woken, right? Every other sleeping
is to be considered a bug.
gettimeofday(1,0);
while in atomic-mode, any non-atomic activity (scheduling) will produce
a kernel message and a SIGUSR2 sent to the offending process (once,
atomic mode has to be re-enabled again for the next message). Preemption
by a higher-prio task does not trigger a message/signal.
If you run the client under gdb you should be able to catch the SIGUSR2
signal and then you can see the offending code's backtrace via 'bt'.
to guess which app to run under gdb and the offending code is there in
the core file.
Also, I'm cc-ing jack-devel. This could fit into libjack so no client
mods would be needed I think. After the thread_init_callback is run libjack
could run 'gettimeofday(1,1);' for each client thread. Then if any client
breaks the rules you get a core showing where.
On further thought, I suppose libjack could install a SIGUSR2 handler and
have that call abort for all the rt client threads. Still no client mods
needed, only an RT-aware libjack.
A big thank you to Ingo and everyone else involved on behalf of all the
linux audio users!
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/