Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Aug 2001 22:06:52 -0400 (EDT)
From:      Mike Silbersack <silby@silby.com>
To:        Matt Dillon <dillon@earth.backplane.com>
Cc:        John Baldwin <jhb@FreeBSD.ORG>, <cvs-all@FreeBSD.ORG>, <cvs-committers@FreeBSD.ORG>
Subject:   Re: RE: cvs commit: src/sys/kern init_sysent.c sysv_msg.c sysv_sem.c
Message-ID:  <Pine.BSF.4.30.0108302159470.19462-100000@niwun.pair.com>
In-Reply-To: <200108310100.f7V10WG61314@earth.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On Thu, 30 Aug 2001, Matt Dillon wrote:

> :You could probably minimize a lot of these diffs using a UGAR() macro similar
> :ot BSD/OS's EGAR macro.  It unlocks Giant and then returns the value passed in.
> :Thus return(foo); becomes UGAR(foo);
> :
> :This would make the diffs much simpler, which also makes it easier to take
> :Giant out of syscalls later on:
> :
> :#define UGAR(rval) do {                                                 \
> :        int _val = (rval);                                              \
> :        mtx_unlock(&Giant);                                             \
> :        return (_val);                                                  \
> :} while (0)
>
>     I think it's better to keep it explicit.  I don't want to hide the
>     fact that I am manipulating Giant.
>
> 					-Matt

There could be cases where you'd want to drop Giant earlier than at the
end of the function too, I suppose.  (Possibly in cases where you only
need Giant to grab certain pieces of data, then can go on with a more
local mutex.)

Actually, I guess now would be a good time to ask.  Is grabbing Giant late
/ dropping it early a problem?  I ask because I'm unclear if it's bad to
have a function that's only part Giant-dependant.

Obviously you could introduce races / other nasty conditions by not
encapsulating the whole function in Giant - the question above is stated
assuming that you have not introduced any races / bugs. :)

Mike "Silby" Silbersack


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" 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.30.0108302159470.19462-100000>