tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: NetBSD vs Solaris condvar semantics
On Sun, Oct 14, 2012 at 07:20:02AM +0000, Taylor R Campbell wrote:
> I'm working on fixing ZFS locking, and I ran into a diference between
> NetBSD's and Solaris's interpretation of condvars.
>
> In Solaris, it seems to be kosher to do
>
> cv_broadcast(cv);
> cv_destroy(cv);
>
> at least if waiters use only cv_wait and not cv_wait_sig &c. That
> idiom makes NetBSD very unhappy, though, because cv_wait wants to
> continue using cv after it is woken, at which point cv may already be
> destroyed.
Hmmm.... IIRC solaris kernel cv_init() is actually a malloc, so cv_destroy()
is a free() - and thus mandatory.
OTOH doesn't NetBSD's cv_init() just initialise the memory, making
cv_destroy() not strictly necessary?
In which case you might be able to just #define them away!
Unless the code also frees the memory block that contains the cv itself.
These will be a lot of implementations of 'cv' where cv_wait() has
to look at the cv after being woken.
David
--
David Laight: david%l8s.co.uk@localhost
Home |
Main Index |
Thread Index |
Old Index