Skip site navigation (1)Skip section navigation (2)
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>