[linux-dvb] idea on how to break the static dependencies on
demodulator modules
Trent Piepho
xyzzy at speakeasy.org
Thu Apr 27 01:57:41 CEST 2006
On Thu, 27 Apr 2006, Johannes Stezenbach wrote:
> On Wed, Apr 26, 2006, Andrew de Quincey wrote:
> > I just need to figure out a nice way to solve the problem Johannes raised
> > about the symbol_puts now.
>
> Maybe complement dvb_attach() with dvb_detach()?
>
> Or ignore the issue for now, lets see if it is really
> a problem for someone.
It would be a pain to impliment dvb_detach. It needs the xxxx_attach() symbol
as an argument, it's not possible to use a function pointer. This would be a
huge pain, as each driver, after calling videobuf_dvb_unregister() would need
to have a big switch statement for each card type:
switch(dev->core->board) {
case CX88_BOARD_KWORLD_DVB_T:
case CX88_BOARD_DNTV_LIVE_DVB_T:
case CX88_BOARD_ADSTECH_DVB_T_PCI:
dvb_detach(mt352_attach);
break;
case CX88_BOARD_PCHDTV_HD3000:
dvb_detach(or51132_attach);
break;
[ and so on]
}
Another possiblilty is to have dvb_attach call symbol_put() as soon as it is
done with the xxx_attach symbol. The frontend release function wouldn't need
to call symbol_put() then. You would need to add some kind of reference
counting to each frontend, so that it won't unload until all frontends that it
allocated with xxxx_attach have been released by calling the
frontend->release() method.
More information about the linux-dvb
mailing list