Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: cinergyT2: which kernel/usb module to use?
Hi Stefan,
Stefan Lucke wrote:
On Freitag, 26. November 2004 14:23, Klaus Schmidinger wrote:
Holger Waechtler wrote:
Johannes Stezenbach wrote:
My cinergyT2 works fine here (2.6.10-rc2 + current dvb-kernel CVS).
There's a bug in the cinergyT2 frontend code when prevents it from
working with VDR, though (no frontend events).
the FE_GET_EVENT ioctl was simply not implemented (I already rendered it
obsolete in my mind, since GET_STATUS and GET_FRONTEND provide the same
functionality...).
please try again,
Holger
I was under the impression that FE_GET_EVENT was the correct way
for an application to determine whether there is a transponder lock.
If this isn't the case, what exactly _is_ the right way to do this?
Sorry when I stumble in a discussion where I have no deep knowledge.
But code like:
while (ioctl (something) == 0)
;
is to my opinion boguous.
man ioctl:
RETURN VALUE
Usually, on success zero is returned. A few ioctls use
the return value as an output parameter and return a non
negative value on success. On error, -1 is returned, and
errno is set appropriately.
but a loop like:
bool cDvbTuner::GetFrontendEvent(dvb_frontend_event &Event, int TimeoutMs)
{
if (TimeoutMs) {
struct pollfd pfd;
pfd.fd = fd_frontend;
pfd.events = POLLIN | POLLPRI;
do {
int stat = poll(&pfd, 1, TimeoutMs);
if (stat == 1)
break;
if (stat < 0) {
if (errno == EINTR)
continue;
esyslog("ERROR: frontend %d poll failed: %m", cardIndex);
}
return false;
} while (0);
}
do {
int stat = ioctl(fd_frontend, FE_GET_EVENT, &Event);
if (stat == 0)
return true; //stefan lucke: ioctl is successful, so return ! the only way to break this loop.
if (stat < 0) {
if (errno == EINTR)
continue;
}
} while (0);
the problem is here: You should exit your loop in any case for all
errno's != EINTR and silently return a non-zero error value since a
missing implementation of this ioctl is usually uncritical.
Holger
Home |
Main Index |
Thread Index