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

Function recentlyUsed

src/jrd/cch.cpp:5097–5119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5095}
5096
5097void recentlyUsed(BufferDesc* bdb)
5098{
5099 const AtomicCounter::counter_type oldFlags = bdb->bdb_flags.exchangeBitOr(BDB_lru_chained);
5100 if (oldFlags & BDB_lru_chained)
5101 return;
5102
5103 BufferControl* bcb = bdb->bdb_bcb;
5104
5105#ifdef DEV_BUILD
5106 volatile BufferDesc* chain = bcb->bcb_lru_chain;
5107 for (; chain; chain = chain->bdb_lru_chain)
5108 {
5109 if (chain == bdb)
5110 BUGCHECK(-1); // !!
5111 }
5112#endif
5113 for (;;)
5114 {
5115 bdb->bdb_lru_chain = bcb->bcb_lru_chain;
5116 if (bcb->bcb_lru_chain.compare_exchange_strong(bdb->bdb_lru_chain, bdb))
5117 break;
5118 }
5119}
5120
5121
5122void requeueRecentlyUsed(BufferControl* bcb)

Callers 1

get_bufferFunction · 0.85

Calls 2

exchangeBitOrMethod · 0.80

Tested by

no test coverage detected