@@ -171,9 +171,12 @@ struct dvb_v5_fe_parms *dvb_fe_open_flags(int adapter, int frontend,
dtv_prop.props = parms->dvb_prop;
/* Detect a DVBv3 device */
- if (ioctl(fd, FE_GET_PROPERTY, &dtv_prop) == -1) {
+ while (ioctl(fd, FE_GET_PROPERTY, &dtv_prop) == -1) {
+ if (errno == EAGAIN)
+ continue;
parms->dvb_prop[0].u.data = 0x300;
parms->dvb_prop[1].u.data = SYS_UNDEFINED;
+ break;
}
parms->p.version = parms->dvb_prop[0].u.data;
parms->p.current_sys = parms->dvb_prop[1].u.data;
@@ -1336,8 +1339,11 @@ int dvb_fe_get_stats(struct dvb_v5_fe_parms *p)
props.props = parms->stats.prop;
/* Do a DVBv5.10 stats call */
- if (ioctl(parms->fd, FE_GET_PROPERTY, &props) == -1)
+ if (ioctl(parms->fd, FE_GET_PROPERTY, &props) == -1) {
+ if (errno == EAGAIN)
+ return 0;
goto dvbv3_fallback;
+ }
/*
* All props with len=0 mean that this device doesn't have any
Retry the FE_GET_PROPERTY ioctl used to determine if we have a DVBv5 device if it returns EAGAIN indicating the driver is currently locked by the kernel. Also skip over subsequent information gathering calls to FE_GET_PROPERTY that return EAGAIN. Original-author: Mauro Carvalho Chehab <mchehab@osg.samsung.com> Signed-off-by: David Howells <dhowells@redhat.com> --- dvb-fe.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html