To be clear on error it reports vb2 queue error and waits for stop streaming to happen
On 4/23/20 4:16 PM, Dmitry Osipenko wrote:
External email: Use caution opening links or attachments
22.04.2020 09:18, Sowjanya Komatineni ÐÐÑÐÑ:
+static int chan_capture_kthread_start(void *data)This will result in an endless loop, I suppose it wasn't the intention.
+{
+ÂÂÂÂ struct tegra_vi_channel *chan = data;
+ÂÂÂÂ struct tegra_channel_buffer *buf;
+ÂÂÂÂ int err = 0;
+
+ÂÂÂÂ set_freezable();
+
+ÂÂÂÂ while (1) {
+ÂÂÂÂÂÂÂÂÂÂÂÂ try_to_freeze();
+
+ÂÂÂÂÂÂÂÂÂÂÂÂ wait_event_interruptible(chan->start_wait,
+ !list_empty(&chan->capture) ||
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ kthread_should_stop());
+
+ÂÂÂÂÂÂÂÂÂÂÂÂ if (kthread_should_stop())
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ break;
+
+ÂÂÂÂÂÂÂÂÂÂÂÂ /*
+ÂÂÂÂÂÂÂÂÂÂÂÂÂ * Source is not streaming if error is non-zero.
+ÂÂÂÂÂÂÂÂÂÂÂÂÂ * So, do not dequeue buffers on capture error.
+ÂÂÂÂÂÂÂÂÂÂÂÂÂ */
+ÂÂÂÂÂÂÂÂÂÂÂÂ if (err)
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ continue;
no it will not. on error we report vb2_queue_error which will do streaming stop request.
So thread will be stopped on streaming stop request thru kthread stop signal