* epoll and vb2_poll: can't wake_up
@ 2018-12-30 10:17 Yi Qingliang
0 siblings, 0 replies; only message in thread
From: Yi Qingliang @ 2018-12-30 10:17 UTC (permalink / raw)
To: linux-kernel
Hello, I encountered a "can't wake_up" problem when use camera on imx6.
if delay some time after 'streamon' the /dev/video0, then add fd
through epoll_ctl, then the process can't be waken_up after some time.
I checked both the epoll / vb2_poll(videobuf2_core.c) code.
epoll will pass 'poll_table' structure to vb2_poll, but it only
contain valid function pointer when inserting fd.
in vb2_poll, if found new data in done list, it will not call 'poll_wait'.
after that, every call to vb2_poll will not contain valid poll_table,
which will result in all calling to poll_wait will not work.
so if app can process frames quickly, and found frame data when
inserting fd (i.e. poll_wait will not be called or not contain valid
function pointer), it will not found valid frame in 'vb2_poll' finally
at some time, then call 'poll_wait' to expect be waken up at following
vb2_buffer_done, but no good luck.
I also checked the 'videobuf-core.c', there is no this problem.
of course, both epoll and vb2_poll are right by itself side, but the
result is we can't get new frames.
I think by epoll's implementation, the user should always call poll_wait.
and it's better to split the two actions: 'wait' and 'poll' both for
epoll framework and all epoll users, for example, v4l2.
am I right?
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2018-12-30 10:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-30 10:17 epoll and vb2_poll: can't wake_up Yi Qingliang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).