stopping callouts
John Baldwin
jhb at freebsd.org
Tue Jun 5 19:51:58 UTC 2007
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
More information about the freebsd-hackers
mailing list