#include <thread.h>
Definition at line 45 of file thread.h.
Public Member Functions | |
| cmn_Mutex () | |
| virtual | ~cmn_Mutex () |
| void | Lock () |
| void | Unlock () |
Private Attributes | |
| log_CLASSID_m | |
| cmn_Mutex::cmn_Mutex | ( | ) | [inline] |
| cmn_Mutex::~cmn_Mutex | ( | ) | [virtual] |
Definition at line 233 of file cmn_thread.cpp.
References cmn_Num2Str(), ie_MUTEX, and ivd_GETTID.
00233 { 00234 00235 #ifdef ivd_THREAD_DEBUG_d 00236 00237 register ivd_ThreadID_t tid = ivd_GETTID(); 00238 00239 if (m_tid == tid) { 00240 omni_mutex::unlock(); 00241 00242 throw ivd_InternalError(ie_MUTEX, 00243 "Mutex still locked in destructor. tid = " + 00244 cmn_Num2Str((UInt32_t)m_tid)); 00245 } 00246 #endif 00247 }

| void cmn_Mutex::Lock | ( | ) |
Definition at line 127 of file cmn_thread.cpp.
References cmn_Num2Str(), ie_MUTEX, ivd_GETTID, log_FUNC_m, and OMNITHREAD_EXEC_m.
Referenced by i_HSM_i::CompleteMigration(), fio_JourFile::DecRefCount(), i_HSM_i::DoMigrationJob(), i_HSM_i::EfficientRecall(), fio_DataBase::EndTransaction(), fio_RelFile::GetFirstNewIDX(), fio_JourMgr::GetJourReadHandle(), fio_JourMgr::GetJourWriteHandle(), fio_TransLstMgr::GetTransObj(), fio_RelFile::GetUnusedVectorIDX(), fio_JourMgr::IncTransNumber(), i_FSC_i::IVDFSRecovery(), hsm_JobElemVecMgr::JobToSequence(), fio_DataBase::LockDB(), hsm_FHmigc::Migrate(), fio_CirFileTrans::ReadFront(), fio_CirFileTrans::ReadNext(), hsm_FHADPRecall::RecallFilesFromList(), fio_DataBase::RegularSuspend(), fio_TransLstMgr::ReleaseTransObj(), fio_RelFile::ReleaseVector(), fio_JourMgr::ReleaseWaiters(), fsc_DataLMgr::Remove(), hsm_TimedList::Run(), hsm_FHmigc::Run(), hsm_FHADPRecall::Run(), hsm_FHmigc::SendToPM(), fio_PermDBinfoMgr::SetJourDate(), fio_PermDBinfoMgr::SetLastSyncPosition(), fio_PermDBinfoMgr::SetLastTransaction(), cmn_LockIDbyOwn< _T, _size >::SetMutex(), rm_ColMediaVol::StartSelectAll(), rm_MinorCol::StartSelectAll(), rm_MajorCol::StartSelectAll(), rm_Partition::StartSelectAll(), rm_MediumVol::StartSelectAll(), rm_Medium::StartSelectAll(), rm_Slot::StartSelectAll(), rm_MediaPool::StartSelectAll(), rm_DiskSubsys::StartSelectAll(), rm_DriveHost::StartSelectAll(), rm_Drive::StartSelectAll(), rm_Library::StartSelectAll(), fio_DataBase::StartTransaction(), hsm_FHdirty::TaskTime(), hsm_DirWaitList::TaskTime(), hsm_FHmigc::TrigMigration(), hsm_FHrelc::TruncationCheck(), fio_DataBase::UnlockDB(), fio_CirFileTrans::WriteBack(), fio_RelFile::WriteRec(), and fio_DataBase::~fio_DataBase().
00127 { 00128 00129 #ifdef ivd_THREAD_DEBUG_d 00130 00131 register ivd_ThreadID_t tid = ivd_GETTID(); 00132 00133 if (tid == m_tid) { 00134 // This thread has already locked the mutex. Just throw an exception. 00135 log_FUNC_m(Lock); 00136 throw ivd_InternalError(ie_MUTEX, 00137 "Double lock on mutex. tid = " + 00138 cmn_Num2Str((UInt32_t)tid)); 00139 } 00140 #endif 00141 int retval(0); 00142 OMNITHREAD_EXEC_m(Lock, lock()); 00143 // OMNITHREAD_EXEC_m(Lock, retval = lock()); 00144 00145 if (retval != 0) { 00146 log_FUNC_m(Lock); 00147 register ivd_ThreadID_t tid = ivd_GETTID(); 00148 ostringstream sstr; 00149 sstr 00150 << "Possible lock of already locked mutex. " 00151 << "Lock returned error number: " << retval 00152 << " for thread: " << tid; 00153 throw ivd_InternalError(ie_MUTEX, sstr.str()); 00154 } 00155 00156 #ifdef ivd_THREAD_DEBUG_d 00157 if (m_tid != 0) { 00158 // Some thread has already locked the mutex. Just throw an exception. 00159 log_FUNC_m(Lock); 00160 throw ivd_InternalError(ie_MUTEX, 00161 "Double lock on mutex. tid = " + 00162 cmn_Num2Str((UInt32_t)m_tid)); 00163 } 00164 // Remember the thread ID that locked mutex. 00165 m_tid = tid; 00166 #endif 00167 }

| void cmn_Mutex::Unlock | ( | ) |
Definition at line 169 of file cmn_thread.cpp.
References cmn_Num2Str(), ie_MUTEX, ivd_GETTID, log_FUNC_m, and OMNITHREAD_EXEC_m.
Referenced by i_HSM_i::CompleteMigration(), fio_JourFile::DecRefCount(), i_HSM_i::DoMigrationJob(), i_HSM_i::EfficientRecall(), rm_ColMediaVol::EndSelectAll(), rm_MinorCol::EndSelectAll(), rm_MajorCol::EndSelectAll(), rm_Partition::EndSelectAll(), rm_MediumVol::EndSelectAll(), rm_Medium::EndSelectAll(), rm_Slot::EndSelectAll(), rm_MediaPool::EndSelectAll(), rm_DiskSubsys::EndSelectAll(), rm_DriveHost::EndSelectAll(), rm_Drive::EndSelectAll(), rm_Library::EndSelectAll(), fio_DataBase::EndTransaction(), fio_RelFile::GetFirstNewIDX(), fio_JourMgr::GetJourReadHandle(), fio_JourMgr::GetJourWriteHandle(), fio_TransLstMgr::GetTransObj(), fio_RelFile::GetUnusedVectorIDX(), fio_JourMgr::IncTransNumber(), i_FSC_i::IVDFSRecovery(), hsm_JobElemVecMgr::JobToSequence(), fio_DataBase::LockDB(), hsm_FHmigc::Migrate(), rm_ColMediaVol::Next(), rm_MinorCol::Next(), rm_MajorCol::Next(), rm_Partition::Next(), rm_MediumVol::Next(), rm_Medium::Next(), rm_Slot::Next(), rm_MediaPool::Next(), rm_DiskSubsys::Next(), rm_DriveHost::Next(), rm_Drive::Next(), rm_Library::Next(), fio_CirFileTrans::ReadFront(), fio_CirFileTrans::ReadNext(), hsm_FHADPRecall::RecallFilesFromList(), fio_DataBase::RegularSuspend(), cmn_LockIDbyOwn< _T, _size >::ReleaseMutex(), fio_TransLstMgr::ReleaseTransObj(), fio_RelFile::ReleaseVector(), fio_JourMgr::ReleaseWaiters(), fsc_DataLMgr::Remove(), hsm_TimedList::Run(), hsm_FHmigc::Run(), hsm_FHADPRecall::Run(), hsm_FHmigc::SendToPM(), fio_PermDBinfoMgr::SetJourDate(), fio_PermDBinfoMgr::SetLastSyncPosition(), fio_PermDBinfoMgr::SetLastTransaction(), rm_ColMediaVol::StartSelectAll(), rm_MinorCol::StartSelectAll(), rm_MajorCol::StartSelectAll(), rm_Partition::StartSelectAll(), rm_MediumVol::StartSelectAll(), rm_Medium::StartSelectAll(), rm_Slot::StartSelectAll(), rm_MediaPool::StartSelectAll(), rm_DiskSubsys::StartSelectAll(), rm_DriveHost::StartSelectAll(), rm_Drive::StartSelectAll(), rm_Library::StartSelectAll(), fio_DataBase::StartTransaction(), hsm_FHdirty::TaskTime(), hsm_DirWaitList::TaskTime(), hsm_FHmigc::TrigMigration(), hsm_FHrelc::Truncate(), hsm_FHrelc::TruncationCheck(), fio_DataBase::UnlockDB(), fio_CirFileTrans::WriteBack(), fio_RelFile::WriteRec(), and fio_DataBase::~fio_DataBase().
00169 { 00170 00171 #ifdef ivd_THREAD_DEBUG_d 00172 00173 register ivd_ThreadID_t tid = ivd_GETTID(); 00174 00175 if (m_tid == tid) { 00176 m_tid = 0; 00177 } 00178 else { 00179 log_FUNC_m(Unlock); 00180 throw ivd_InternalError(ie_MUTEX, 00181 "Unlock done when not holding mutex. tid = " + 00182 cmn_Num2Str((UInt32_t)m_tid)); 00183 } 00184 #endif 00185 00186 int retval(0); 00187 OMNITHREAD_EXEC_m(Unlock, unlock()); 00188 // OMNITHREAD_EXEC_m(Unlock, retval = unlock()); 00189 if (retval != 0) { 00190 log_FUNC_m(Unlock); 00191 register ivd_ThreadID_t tid = ivd_GETTID(); 00192 ostringstream sstr; 00193 sstr 00194 << "Possible unlock when mutex not held. " 00195 << "Unlock returned error number: " << retval 00196 << " for thread: " << tid; 00197 throw ivd_InternalError(ie_MUTEX, sstr.str()); 00198 } 00199 }

cmn_Mutex::log_CLASSID_m [private] |
1.5.6