Re: Is DVB ioctl FE_SET_FRONTEND broken?

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

 



--- On Fri, 26/8/11, Andreas Oberritter <obi@xxxxxxxxxxx> wrote:
> can you please test whether https://patchwork.kernel.org/patch/1036132/
> restores the old behaviour?
> 
> These three pending patches are also related to frontend events:
>
> https://patchwork.kernel.org/patch/1036112/
> https://patchwork.kernel.org/patch/1036142/
> https://patchwork.kernel.org/patch/1036122/

Andreas,

I've only reviewed these patches so far, but I am concerned that we both have a different understanding of what the FE_SET_FRONTEND ioctl is supposed to do. According to the documentation:

"The result of this call will be successful if the parameters were valid and the tuning could be initiated. The result of the tuning operation in itself, however, will arrive asynchronously as an event."

However, your comment in your first patch reads:

"FE_SET_FRONTEND triggers an initial frontend event with status = 0, which copies output parameters to userspace."

To my mind, these are conflicting statements because how can there be such thing as "an initial frontend event"? I am not expecting the kernel to send any event until the tuning has finished and it can give me real information. I am *definitely* not expecting the kernel to send my input parameters straight back to me.

Given the documented description of this ioctl, I would write the following (pseudo)code in userspace:

int rc;

rc = ioctl(fd, FE_SET_FRONTEND, &args);
if (rc != 0) {
    printf("Error: could not start tuning.\n");
} else {
    struct pollfd  pfd;
    pfd.fd = fd;
    pfd.events = POLLIN;
    pfd.revents = 0;

    // Wait 5 seconds for tuning to finish.
    rc = poll(&pfd, 1, 5000);
    if (rc < 0) {
        printf("Error!\n");
    } else if (rc == 0) {
        printf("Still not tuned after 5 seconds - give up!\n");
    } else {
        printf("YAY! WE ARE TUNED!\n");
    }
}

But your code adds an event to the queue as the ioctl() exits, which means that my pseudocode is never going to print the "Still not tuned after 5 seconds" message but jump straight to "YAY! WE ARE TUNED!" instead while tuning is actually still in progress.

So I'm going to say "No", your patches don't restore the old behaviour.

Cheers,
Chris

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux