| 374 | |
| 375 | |
| 376 | bool LCK_convert_opt(thread_db* tdbb, Lock* lock, USHORT level) |
| 377 | { |
| 378 | /************************************** |
| 379 | * |
| 380 | * L C K _ c o n v e r t _ o p t |
| 381 | * |
| 382 | ************************************** |
| 383 | * |
| 384 | * Functional description |
| 385 | * Assert a lock if the parent is not locked in exclusive mode. |
| 386 | * |
| 387 | **************************************/ |
| 388 | SET_TDBB(tdbb); |
| 389 | fb_assert(LCK_CHECK_LOCK(lock)); |
| 390 | |
| 391 | const USHORT old_level = lock->lck_logical; |
| 392 | lock->lck_logical = level; |
| 393 | Database* dbb = lock->lck_dbb; |
| 394 | |
| 395 | if (dbb->dbb_ast_flags & DBB_assert_locks) |
| 396 | { |
| 397 | lock->lck_logical = old_level; |
| 398 | if (lock->lck_id == 0) |
| 399 | { |
| 400 | fb_assert(dbb->dbb_ast_flags & DBB_blocking); |
| 401 | return LCK_lock(tdbb, lock, level, LCK_NO_WAIT); |
| 402 | } |
| 403 | return LCK_convert(tdbb, lock, level, LCK_NO_WAIT); |
| 404 | } |
| 405 | |
| 406 | fb_assert(LCK_CHECK_LOCK(lock)); |
| 407 | return true; |
| 408 | } |
| 409 | |
| 410 | |
| 411 | bool LCK_cancel_wait(Jrd::Attachment* attachment) |
no test coverage detected