| 3988 | } |
| 3989 | |
| 3990 | static ULONG get_prec_walk_mark(BufferControl* bcb) |
| 3991 | { |
| 3992 | /************************************** |
| 3993 | * |
| 3994 | * g e t _ p r e c _ w a l k _ m a r k |
| 3995 | * |
| 3996 | ************************************** |
| 3997 | * |
| 3998 | * Functional description |
| 3999 | * Get next mark for walking precedence graph. |
| 4000 | * |
| 4001 | **************************************/ |
| 4002 | fb_assert(bcb->bcb_syncPrecedence.ourExclusiveLock()); |
| 4003 | |
| 4004 | if (++bcb->bcb_prec_walk_mark == 0) |
| 4005 | { |
| 4006 | SyncLockGuard bcbSync(&bcb->bcb_syncObject, SYNC_SHARED, FB_FUNCTION); |
| 4007 | |
| 4008 | for (auto blk : bcb->bcb_bdbBlocks) |
| 4009 | { |
| 4010 | for (ULONG i = 0; i < blk.m_count; i++) |
| 4011 | blk.m_bdbs[i].bdb_prec_walk_mark = 0; |
| 4012 | } |
| 4013 | |
| 4014 | bcb->bcb_prec_walk_mark = 1; |
| 4015 | } |
| 4016 | return bcb->bcb_prec_walk_mark; |
| 4017 | } |
| 4018 | |
| 4019 | |
| 4020 | static int get_related(BufferDesc* bdb, PagesArray &lowPages, int limit, const ULONG mark) |
no test coverage detected