* 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:
Axel Dörfler
2008-07-07 18:12:33 +00:00
parent e2dfe00484
commit 06d5e1b3b6
3 changed files with 78 additions and 0 deletions
+31
View File
@@ -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