GIANT question
Bernd Walter
ticso at cicely12.cicely.de
Wed Jul 21 10:38:34 PDT 2004
On Wed, Jul 21, 2004 at 11:12:50AM -0600, Scott Long wrote:
> Bernd Walter wrote:
>
> >Say I have a driver that could run without needing GIANT, but
> >makes use of a subsystem that requires GIANT.
> >Removing D_NEEDGIANT in cdevsw seems to be enough to get called
> >from userland without GIANT held.
> >Now I need to aquire GIANT bevor calling the subsystem and release
> >it on return.
> >What I've found so far is DROP_GIANT/PICKUP_GIANT, which has to be
> >paired the other way.
> >What is the prefered way to get/release GIANT in that case?
> >
>
> mtx_lock(&Giant);
> call_code_needing_giant();
> mtx_unlock(&Giant);
Ah - now I got it - the DROP/PICKUP are just macros to handle
recurision level.
> Note that you must not be holding any locks when you go to aquire Giant.
That's clear.
--
B.Walter BWCT http://www.bwct.de
bernd at bwct.de info at bwct.de
More information about the freebsd-current
mailing list