tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: rw_lock_held
> Date: Wed, 7 Feb 2018 14:14:35 +0900
> From: Ryota Ozaki <ozaki-r%netbsd.org@localhost>
>
> On Wed, Feb 7, 2018 at 2:55 AM, Taylor R Campbell
> <campbell+netbsd-tech-kern%mumble.net@localhost> wrote:
> >> Date: Tue, 6 Feb 2018 19:06:33 +0900
> >> From: Ryota Ozaki <ozaki-r%netbsd.org@localhost>
> >>
> >> So I think we should do either:
> >> (1) fix rw_lock_held, or
> >> - probably it would be rw_read_held() || rw_write_held()
> >> (2) fix users of rw_lock_held.
> >> - it also would replace rw_lock_held with
> >> rw_read_held() || rw_write_held()
> >>
> >> I prefer (1) because I think there is no user of the current
> >> behavior that is difficult to use for users (it may be useful
> >> as an internal utility function though).
> >
> > I like (1) too, but check for Solaris compatibility? It is hard to
> > imagine that there are correct uses of the current semantics that are
> > not also correct uses of (1).
>
> https://docs.oracle.com/cd/E36784_01/html/E36886/rwlock-9f.html
>
> They seem to have only rw_read_locked that is compatible to our
> rw_read_held.
Looks to me like rw_read_locked is actually more like:
KASSERT(rw_read_held(l) || rw_write_held(l));
return rw_read_held(l);
or
KASSERT(rw_read_held(l) || rw_write_held(l));
return !rw_write_held(l);
But it turns out that our rw_init is API-incompatible with Solaris's
anyway, so I guess it's all kinda moot, so I'd say just go for (1).
Home |
Main Index |
Thread Index |
Old Index