On Mon, Feb 27, 2012 at 8:04 AM, Fons Adriaensen <fons(a)linuxaudio.org> wrote:
On Mon, Feb 27, 2012 at 09:59:19AM +0100, Nick
Copeland wrote:
Both of these methods are affectively the same,
what you are trying to do is provide
a method that the low prio thread is responsible for both malloc and free.
That's a nice method, it effectively uses the LFQ to 'send back' an item
after
use by the recipient. It depends on the particular implementation of the queue,
you need one that allows to read one (or more if necessary) items without moving
the read pointer - that should be done only after the data has been used since
it signals that the data can be freed.
The alternative is to make this explicit, by having two pairs of indices
operate on the same buffer:
[SNIP]
Why not just use 2 ringbuffers: one to send pointers to the RT thread,
and a second to send them back to the low prio thread (so it can free
them). You probably need a semaphore for the return ringbuffer, but
that should be RT-safe.