Date: Mon, 06 Aug 2001 10:55:05 -0700 From: Mike Smith <msmith@freebsd.org> To: Assem Salama <assem@twcny.rr.com> Cc: freebsd-hackers@freebsd.org Subject: Re: detach Message-ID: <200108061755.f76Ht5i01556@mass.dis.org> In-Reply-To: Your message of "Mon, 06 Aug 2001 12:16:37 EDT." <3B6EC2E5.CF2077FC@twcny.rr.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108061755.f76Ht5i01556>