Date: Mon, 6 Aug 2001 13:12:11 -0700 (PDT) From: Julian Elischer <julian@elischer.org> To: Mike Smith <msmith@freebsd.org> Cc: Assem Salama <assem@twcny.rr.com>, freebsd-hackers@freebsd.org Subject: Re: detach Message-ID: <Pine.BSF.4.21.0108061311410.66028-100000@InterJet.elischer.org> In-Reply-To: <200108061755.f76Ht5i01556@mass.dis.org>
next in thread | previous in thread | raw e-mail | index | archive | help
if you can write a little sample code I'll put it in the sample driver.
On Mon, 6 Aug 2001, Mike Smith wrote:
> > Hello,
> > I have a question. I'm trying to make a module for a PCI card. My
> > problem is my 'detach' function never get's called when I unload the
> > module. Al my other functions get called correctly. Here is my source:
>
> Detach != unload.
>
> The detach method is called by your parent to kick you out. If you want
> to be notified when your module is unloaded, you need a module event
> handler which finds all your instances and detaches them itself.
>
> Use devclass_find_devices() to locate your instances, and then run across
> all the detach routines. If any of them return nonzero, you should
> refuse to unload.
>
> This is because there isn't a 1:1 correspondence between a loaded module
> and a driver instance.
>
> >
> > #define DRIVERNAME "ide_mod"
> >
> > #ifdef DEBUG
> > #define PRINTD(STR) uprintf("%s: %s",DRIVERNAME,
> > STR);
> > #else
> > #define PRINTD(STR)
> > #endif
> >
> > static int ide_mod_detach(device_t dev)
> > {
> > PRINTD("Inside detach ... \n");
> > return 0;
> > }
> >
> >
> > static device_method_t ide_mod_methods[] =
> > {
> > /* device methods */
> > DEVMETHOD(device_probe, ide_mod_probe),
> > DEVMETHOD(device_attach, ide_mod_attach),
> > DEVMETHOD(device_detach, ide_mod_detach),
> > {0, 0}
> > };
> >
> > static driver_t ide_mod_driver = {
> > "ide_mod",
> > ide_mod_methods,
> > sizeof(ide_mod_softc),
> > };
> >
> > static devclass_t ide_mod_devclas;
> >
> > /* all our macros */
> > DRIVER_MODULE(ide_mod, atapci, ide_mod_driver, ide_mod_devclas, 0, 0);
> >
> >
> > Thanks,
> > Assem Salama
> >
> >
> > To Unsubscribe: send mail to majordomo@FreeBSD.org
> > with "unsubscribe freebsd-hackers" in the body of the message
>
> --
> ... every activity meets with opposition, everyone who acts has his
> rivals and unfortunately opponents also. But not because people want
> to be opponents, rather because the tasks and relationships force
> people to take different points of view. [Dr. Fritz Todt]
> V I C T O R Y N O T V E N G E A N C E
>
>
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-hackers" in the body of the message
>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0108061311410.66028-100000>
