| 324 | } |
| 325 | |
| 326 | bool GlobalRWLock::tryReleaseLock(thread_db* tdbb) |
| 327 | { |
| 328 | CheckoutLockGuard counterGuard(tdbb, counterMutex, FB_FUNCTION, true); |
| 329 | |
| 330 | COS_TRACE(("(%p)->tryReleaseLock readers(%d), blocking(%d), pendingWriters(%d), currentWriter(%d), lck_physical(%d)", |
| 331 | this, readers, blocking, pendingWriters, currentWriter, cachedLock->lck_physical)); |
| 332 | |
| 333 | if (readers || currentWriter) |
| 334 | return false; |
| 335 | |
| 336 | if (cachedLock->lck_physical > LCK_none) |
| 337 | { |
| 338 | LCK_release(tdbb, cachedLock); |
| 339 | invalidate(tdbb); |
| 340 | } |
| 341 | |
| 342 | return true; |
| 343 | } |
| 344 | |
| 345 | void GlobalRWLock::blockingAstHandler(thread_db* tdbb) |
| 346 | { |
no test coverage detected