On Monday 04 June 2007 05:39:32 am Artis Caune wrote:
> Sam Leffler wrote:
> > 
> > If you use callout_init_mtx then use callout_stop while holding my_mtx; 
> > if the callout is blocked waiting for my_mtx the request will be 
discarded.
> > 
> > callout_drain should not be called while holding my_mtx because it can 
> > sleep.
> > 
> 
> 
> Thanks,
> than I will use:
> 
> 
> MTX_LOCK;
> ...
> callout_stop();
> MTX_UNLOCK;

During module unload (or device detach) you should still do a callout_drain() 
before destroying the mutex, to make sure softclock() doesn't race with the 
mtx_destroy().

Thus:

foo_detach()
{

        FOO_LOCK(sc);
        foo_stop(sc);
        callout_stop(&sc->callout);
        FOO_UNLOCK(sc);

        bus_teardown_intr(...)

        bus_release_resources(...);

        callout_drain(&sc->callout);
        mtx_destroy(&sc->lock);
}

-- 
John Baldwin
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to