Mailing List archive

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

[linux-dvb] Re: refactoring



Hi,

On 07.10.2004 11:07, Andrew de Quincey wrote:
Hi, I implemented the function pointer approach for the stv0299. I'm afraid I've decided not to do it, and stick with the ioctl approach. Reasons:

1) The actual switch statement code in the demodulator ioctl() functions is not very big. The reason the ioctl() function may appear big is because many of the demodulators do a lot of the processing directly in the ioctl() function. When moving to a function pointer approach, this code cannot just go away - it has to move into separate functions.
Which is fine IMO.

2) Although it does make overriding the ioctl functions nicer, we can already do that with the current code's ioctl_override() (although not quite as nicely).
ioctl_override() is ugly, because it bypasses type safety. IMO the ioctl processing should be done completely in the dvb frontend code, not in each and every demodulator. By this we can achive guaranteed behaviour.

The same problem exists for other parts of the V3 API, where the API is implemented in the driver and not in the dvb core. For example it's driver specific if video decoding is automatically stopped when the video file descriptor is closed.

I think we have started to walk the road with type safety in mind, so we should not stop half way.

Using a function pointer system also has the disadvantage that is is harder to add in new API calls, or demodulator-specific private calls to support special features.
The driver can always use the driver specific struct dvb_stv0299 (or what it is called) to pass any special informations to the driver in a typesafe manner when attaching the device. This structure is easily extensible.

This information can be honoured when the dvb frontend core calls specific functions

3) It is quite a lot of work to change over all the demodulators and card drivers. Given the above two points, I just don't think its worth it.
I think it is.

CU
Michael.




Home | Main Index | Thread Index