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

Function purgePrecedence

src/jrd/cch.cpp:2651–2670  ·  view source on GitHub ↗

Remove cleared precedence blocks from high precedence queue

Source from the content-addressed store, hash-verified

2649
2650// Remove cleared precedence blocks from high precedence queue
2651static void purgePrecedence(BufferControl* bcb, BufferDesc* bdb)
2652{
2653 Sync precSync(&bcb->bcb_syncPrecedence, "purgePrecedence");
2654 precSync.lock(SYNC_EXCLUSIVE);
2655
2656 QUE que_prec = bdb->bdb_higher.que_forward, next_prec;
2657 for (; que_prec != &bdb->bdb_higher; que_prec = next_prec)
2658 {
2659 next_prec = que_prec->que_forward;
2660
2661 Precedence* precedence = BLOCK(que_prec, Precedence, pre_higher);
2662 if (precedence->pre_flags & PRE_cleared)
2663 {
2664 QUE_DELETE(precedence->pre_higher);
2665 QUE_DELETE(precedence->pre_lower);
2666 precedence->pre_hi = (BufferDesc*) bcb->bcb_free;
2667 bcb->bcb_free = precedence;
2668 }
2669 }
2670}
2671
2672// Collect pages modified by given or system transaction and write it to disk.
2673// See also comments in flushPages.

Callers 2

CCH_clean_pageFunction · 0.85
flushPagesFunction · 0.85

Calls 2

QUE_DELETEFunction · 0.85
lockMethod · 0.45

Tested by

no test coverage detected