Hi,
I am having a problem porting Solaris R/W lock functionality to Linux.
The problem is that RW_LOCK_HELD() doesn't have an equivalent function
in pthreads.
This was not a problem before because RW_LOCK_HELD() was only used in
ASSERT statements. In this case, I was able to make it work by making it
behave a bit differently (specifically, it would return true if *any*
thread was holding the lock, and false if there were no threads holding
the lock. This way ASSERTs never failed).
However, now there is a small bit of code that actually relies on
RW_LOCK_HELD() working correctly:
boolean_t need_lock = !RW_LOCK_HELD(&dp->dp_config_rwlock);
if (need_lock)
rw_enter(&dp->dp_config_rwlock, RW_READER);
I can't think of a way to emulate this functionality with pthreads
without incurring a huge overhead when locking...
Any ideas?
Thanks,
Ricardo
--
<http://www.sun.com>
*Ricardo Manuel Correia*
Lustre Engineering
*Sun Microsystems, Inc.*
Portugal
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.opensolaris.org/pipermail/zfs-code/attachments/20071124/7c512a66/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 6g_top.gif
Type: image/gif
Size: 1257 bytes
Desc: not available
URL:
<http://mail.opensolaris.org/pipermail/zfs-code/attachments/20071124/7c512a66/attachment.gif>