* Added ReadLocker/WriteLocker classes to auto lock an rw_lock.
* Added *_init_etc() functions to the fs_shell. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26302 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -115,11 +115,42 @@ public:
|
||||
// RecursiveLocker
|
||||
typedef AutoLocker<fssh_recursive_lock, RecursiveLockLocking> RecursiveLocker;
|
||||
|
||||
class ReadWriteLockReadLocking {
|
||||
public:
|
||||
inline bool Lock(fssh_rw_lock *lockable)
|
||||
{
|
||||
return fssh_rw_lock_read_lock(lockable) == FSSH_B_OK;
|
||||
}
|
||||
|
||||
inline void Unlock(fssh_rw_lock *lockable)
|
||||
{
|
||||
fssh_rw_lock_read_unlock(lockable);
|
||||
}
|
||||
};
|
||||
|
||||
class ReadWriteLockWriteLocking {
|
||||
public:
|
||||
inline bool Lock(fssh_rw_lock *lockable)
|
||||
{
|
||||
return fssh_rw_lock_write_lock(lockable) == FSSH_B_OK;
|
||||
}
|
||||
|
||||
inline void Unlock(fssh_rw_lock *lockable)
|
||||
{
|
||||
fssh_rw_lock_write_unlock(lockable);
|
||||
}
|
||||
};
|
||||
|
||||
typedef AutoLocker<fssh_rw_lock, ReadWriteLockReadLocking> ReadLocker;
|
||||
typedef AutoLocker<fssh_rw_lock, ReadWriteLockWriteLocking> WriteLocker;
|
||||
|
||||
} // namespace FSShell
|
||||
|
||||
using FSShell::AutoLocker;
|
||||
using FSShell::MutexLocker;
|
||||
using FSShell::RecursiveLocker;
|
||||
using FSShell::ReadLocker;
|
||||
using FSShell::WriteLocker;
|
||||
|
||||
#endif // __cplusplus
|
||||
|
||||
|
||||
Reference in New Issue
Block a user