Even the thread which actually writes the data to ring buffer may not have the idea of frames So the start threshold does not require to be on frame boundaries. It is just to avoid START when the buffer is written with the data. If the write gives more data than the ring buffer, write will
not unblock and the user space application may not be able to call START.
This will be an issue if you go for non-blocking implementation. Otherwise, START should be called in another thread than the thread which writes
the data. You are confusing kernel API to user space stuff. Please stick to kernel API discussion here. Nevertheless above has nothing to do with threshold question!
I don’t think you understood my point. It is the kernel implementation which impacts the user space Implementation.
-- ~Vinod