rwlocks, correctness over speed.

Attilio Rao attilio at freebsd.org
Sat Nov 24 10:09:24 PST 2007


2007/11/24, Robert Watson <rwatson at freebsd.org>:
> On Sat, 24 Nov 2007, Attilio Rao wrote:
>
> >> I must have missed recursion arriving then -- I'll modify uipc_usrreq.c to
> >> set the recursion flag on the rwlock in UNIX domain sockets rather than
> >> doing the nasty hack that was previously required.  At the time, the hack
> >> was added because it seemed recursion was not going to be added to rwlocks,
> >> but sonewconn() behavior for listen sockets really ended up requiring it.
> >
> > attilio     2007-06-26 21:31:56 UTC
> >
> > FreeBSD src repository
> >
> > Modified files:
> >   sys/kern             kern_rwlock.c
> >   sys/sys              _rwlock.h rwlock.h
> > Log:
> > Introduce a new rwlocks initialization function: rw_init_flags.
> > This is very similar to sx_init_flags: it initializes the rwlock using
> > special flags passed as third argument (RW_DUPOK, RW_NOPROFILE,
> > RW_NOWITNESS, RW_QUIET, RW_RECURSE).
> > Among these, the most important new feature is probabilly that rwlocks
> > can be acquired recursively now (for both shared and exclusive paths).
>
> Yes, that was four months after I added rw_wowned(9) to work around the lack
> of recursion support. :-)  However, it looks like the man page was never
> updated?  It contains the following rather explicit language:
>
>       Another important property is that shared holders of rwlock can recurse,
>       but exclusive locks are not allowed to recurse.

Yes, I'm going to fix the manpage ASAP.
Thanks, for the report.

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein


More information about the freebsd-arch mailing list