Re: [RFC PATCH v6 6/9] media: tegra: Add Tegra210 Video input driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 4/6/20 1:45 PM, Dmitry Osipenko wrote:
External email: Use caution opening links or attachments


04.04.2020 04:25, Sowjanya Komatineni пишет:
+static int chan_capture_kthread_start(void *data)
+{
+     struct tegra_vi_channel *chan = data;
+     struct tegra_channel_buffer *buf;
+     int err = 0;
+     int caps_inflight;
+
+     set_freezable();
+
+     while (1) {
+             try_to_freeze();
+
+             wait_event_interruptible(chan->start_wait,
+                                      !list_empty(&chan->capture) ||
+                                      kthread_should_stop());
+             /*
+              * Frame start and MW_ACK_DONE syncpoint condition FIFOs are
+              * of max depth 2. So make sure max 2 capture requests are
+              * in process by the hardware at a time.
+              */
+             while (!(kthread_should_stop() || list_empty(&chan->capture))) {
+                     caps_inflight = chan->capture_reqs - chan->sequence;
+                     /*
+                      * Source is not streaming if error is non-zero.
+                      * So, do not dequeue buffers on capture error or when
+                      * syncpoint requests in FIFO are full.
+                      */
+                     if (err || caps_inflight >= SYNCPT_FIFO_DEPTH)
+                             break;
Am I understanding correctly that this thread will take 100% CPU,
spinning here, if more than 2 frame-captures queued?
on more than 2 frames captures, it breaks thread and on next wakeup it continues




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux