External email: Use caution opening links or attachmentswe hold on to issuing capture if more than 2 buffers are queued and it continues only after fifo has min 1 slot empty
07.04.2020 01:07, Sowjanya Komatineni ÐÐÑÐÑ:
On 4/6/20 3:00 PM, Sowjanya Komatineni wrote:IIUC, the waiting won't happen if more than 2 captures are queued and
On 4/6/20 2:39 PM, Sowjanya Komatineni wrote:w.r.t capture list update, wakeup happens when wake_up on waitqueue is
On 4/6/20 2:15 PM, Sowjanya Komatineni wrote:process is in sleep until the condition is evaluated and when
On 4/6/20 2:11 PM, Dmitry Osipenko wrote:
External email: Use caution opening links or attachments
07.04.2020 00:02, Sowjanya Komatineni ÐÐÑÐÑ:
This is a wrong assumption in accordance to the code.process is put to sleep until the condition evaluates to true orhttps://elixir.bootlin.com/linux/v5.6.2/source/include/linux/wait.h#L462condition is checked when waitqueue is woken upThe wait_event() won't wait if condition is true.Am I understanding correctly that this thread will take 100%on more than 2 frames captures, it breaks thread and on next
CPU,
spinning here, if more than 2 frame-captures queued?
wakeup it
continues
signal
is received.
condition is checked each time the waitqueue head is woken up.
condition is true wakeup still happens only when wake_up on waitqueue
is called
This is the reason for using this to prevent blocking while waiting
for the buffers.
called.
wakeup also happens on kthread stop signal event.
when every buffer is available as long as we are in streaming, weFixing typo.
should process it.
So if wake up happens when list has buffer, it will be processed but
at a time we limit processing 2 simultaneous buffer capture starts
only.
I meant when ever buffer is available as long as we are in streaming,
we should process it.
So capture thread processes as long as buffers are available from
user space limiting 2 simultaneous trigger of captures and thread
will be in sleep when capture buffers list is empty or no stop thread
is signaled.
thread will be spinning until captures are processed.
I think you need a semaphore with resource count = 2.