Am Freitag, den 16.11.2007, 19:10 -0500 schrieb [EMAIL PROTECTED]:
> Michel Ludwig wrote:
> > On Fri 16 Nov 2007, you wrote:
> >
> >> We like to make linuxtv drivers modular and forward compatible. There
> >> _are_ devices out there that use other tuners, and if you hardcode
> >> xc3028 into this driver, it prevents future developers from adding
> >> support for other devices without having to change existing code.
> >>
> >
> > Sure, but no one said that tm6000-dvb is ready to go into the main tree...
> >
>
> I saw an issue and I felt it was appropriate for me to point it out
> immediately.
>
> Better to fix a problem when it is noticed, no?
>
> >
> >>> But anyway, how would dvb_frontend_detach(fe) release the xc3028_attach
> >>> symbol, which is requested by dvb_attach?
> >>>
> >> The answer is self-explanatory. Take a look at the other drivers, and
> >> take a look at dvb_frontend_detach. (dvb_frontend.c , lines 1204 thru
> >> 1221)
> >>
> >
> > Of course, I have done that, but it is still not clear to me. Here are the
> two
> > macros:
> >
> > #define dvb_attach(FUNCTION, ARGS...) ({ \
> > void *__r = NULL; \
> > typeof(&FUNCTION) __a = symbol_request(FUNCTION); \
> > if (__a) { \
> > __r = (void *) __a(ARGS); \
> > if (__r == NULL) \
> > symbol_put(FUNCTION); \
> > } else { \
> > printk(KERN_ERR "DVB: Unable to find symbol
> "#FUNCTION"()\n"); \
> > } \
> > __r; \
> > })
> >
> > void dvb_frontend_detach(struct dvb_frontend* fe)
> > {
> > void *ptr;
> >
> > if (fe->ops.release_sec) {
> > fe->ops.release_sec(fe);
> > symbol_put_addr(fe->ops.release_sec);
> > }
> > if (fe->ops.tuner_ops.release) {
> > fe->ops.tuner_ops.release(fe);
> > symbol_put_addr(fe->ops.tuner_ops.release);
> > }
> > ptr = (void*)fe->ops.release;
> > if (ptr) {
> > fe->ops.release(fe);
> > symbol_put_addr(ptr);
> > }
> > }
> >
> > dvb_attach is called with xc2028_attach, hence it will request
> xc2028_attach.
> > But dvb_frontend_detach will release xc2028_dvb_release.
> >
> It's the same module.
> > I can try this out tomorrow, but if I have to reboot my machine after that
> to
> > unload tuner-xc2028, then there is definitely a flaw in this approach...
> :-)
> >
> This is the accepted and proven method used across the entire dvb tree.
> If it doesnt work for you, then something is wrong in your code. I
> don't think it will cause any problem.
>
> Hey, I was just trying to point out a flaw in your patch -- Nobody is an
> expert, and there is always something to be learned.
>
> -Mike
>
> P.S. Why are you guys dropping cc's? I cc'd linux-dvb mailing list
> because this is a development issue. It is important for such
> discussions to be documented, because it is the only way for future
> developers to learn from our mistakes. To conduct all emails in private
> will not lead to any progression. This is a community, and we should
> all be willing to give and accept advice from each other.
Mike,
I still fully under scribe that.
But we should also not create illusions for those coming later and have
to crawl through.
Sometimes it is a damned ratrace, maybe always!
With that NDA stuff not in some GNU/Linux library as fall back, it can
always start again.
I said it previously and repeat it, it comes from above and gets wild by
will.
We are only the idiots ...
Cheers,
Hermann
_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb