Date: Wed, 21 Jul 2004 11:12:50 -0600 From: Scott Long <scottl@freebsd.org> To: ticso@cicely.de Cc: current@freebsd.org Subject: Re: GIANT question Message-ID: <40FEA412.3050900@freebsd.org> In-Reply-To: <20040721170534.GF70663@cicely12.cicely.de> References: <20040721170534.GF70663@cicely12.cicely.de>
next in thread | previous in thread | raw e-mail | index | archive | help
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); Note that you must not be holding any locks when you go to aquire Giant. Scott
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?40FEA412.3050900>