MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / LCK_downgrade

Function LCK_downgrade

src/jrd/lck.cpp:433–466  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

431
432
433void LCK_downgrade(thread_db* tdbb, Lock* lock)
434{
435/**************************************
436 *
437 * L C K _ d o w n g r a d e
438 *
439 **************************************
440 *
441 * Functional description
442 * Downgrade a lock.
443 *
444 **************************************/
445 SET_TDBB(tdbb);
446 fb_assert(LCK_CHECK_LOCK(lock));
447
448#ifdef DEBUG_LCK
449 LckSync sync(lock, "LCK_downgrade");
450#endif
451
452 if (lock->lck_id && lock->lck_physical != LCK_none)
453 {
454 const USHORT level = DOWNGRADE(tdbb, lock);
455 if (!lock->lck_compatible)
456 lock->lck_physical = lock->lck_logical = level;
457 }
458
459 if (lock->lck_physical == LCK_none)
460 {
461 lock->lck_id = lock->lck_data = 0;
462 lock->setLockAttachment(NULL);
463 }
464
465 fb_assert(LCK_CHECK_LOCK(lock));
466}
467
468
469void LCK_fini(thread_db* tdbb, enum lck_owner_t owner_type)

Callers 5

downgradeGCLockMethod · 0.85
down_gradeFunction · 0.85
unlockWriteMethod · 0.85
blockingAstHandlerMethod · 0.85
blockingAstMonitorMethod · 0.85

Calls 3

SET_TDBBFunction · 0.85
DOWNGRADEFunction · 0.85
setLockAttachmentMethod · 0.80

Tested by

no test coverage detected