From 1d9fd63d3a7a27159442a3df786fda0efcd6f966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 28 May 2003 01:12:38 +0000 Subject: [PATCH] The ReadWriteLock class now has an Initialize() method to initialize the object after creation. This enables the Inode constructor to set a better name for the lock. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3363 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/Lock.h | 45 ++++++++++++++++------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/Lock.h b/src/add-ons/kernel/file_systems/bfs/Lock.h index 220be5420b..a0c289f7a3 100644 --- a/src/add-ons/kernel/file_systems/bfs/Lock.h +++ b/src/add-ons/kernel/file_systems/bfs/Lock.h @@ -149,15 +149,17 @@ class Locker { #ifdef FAST_LOCK class ReadWriteLock { public: - ReadWriteLock(const char *name = "bfs r/w lock") + ReadWriteLock(const char *name) + : + fWriteLock() + { + Initialize(name); + } + + ReadWriteLock() : - fSemaphore(create_sem(0, name)), - fCount(MAX_READERS), fWriteLock() { -#ifndef USER - set_sem_owner(fSemaphore, B_SYSTEM_TEAM); -#endif } ~ReadWriteLock() @@ -165,6 +167,16 @@ class ReadWriteLock { delete_sem(fSemaphore); } + status_t Initialize(const char *name = "bfs r/w lock") + { + fSemaphore = create_sem(0, name); + fCount = MAX_READERS; +#ifndef USER + set_sem_owner(fSemaphore, B_SYSTEM_TEAM); +#endif + return fSemaphore; + } + status_t InitCheck() { if (fSemaphore < B_OK) @@ -226,13 +238,13 @@ class ReadWriteLock { #else // FAST_LOCK class ReadWriteLock { public: - ReadWriteLock(const char *name = "bfs r/w lock") - : - fSemaphore(create_sem(MAX_READERS, name)) + ReadWriteLock(const char *name) + { + Initialize(name); + } + + ReadWriteLock() { -#ifndef USER - set_sem_owner(fSemaphore, B_SYSTEM_TEAM); -#endif } ~ReadWriteLock() @@ -240,6 +252,15 @@ class ReadWriteLock { delete_sem(fSemaphore); } + status_t Initialize(const char *name = "bfs r/w lock") + { + fSemaphore = create_sem(MAX_READERS, name); +#ifndef USER + set_sem_owner(fSemaphore, B_SYSTEM_TEAM); +#endif + return fSemaphore; + } + status_t InitCheck() { if (fSemaphore < B_OK)