| 961 | |
| 962 | |
| 963 | static int external_ast(void* lock_void) |
| 964 | { |
| 965 | /************************************** |
| 966 | * |
| 967 | * e x t e r n a l _ a s t |
| 968 | * |
| 969 | ************************************** |
| 970 | * |
| 971 | * Functional description |
| 972 | * Deliver blocking asts to all locks identical to |
| 973 | * the passed lock. This routine is called when |
| 974 | * we are blocking a lock from another process. |
| 975 | * |
| 976 | **************************************/ |
| 977 | Lock* lock = static_cast<Lock*>(lock_void); |
| 978 | fb_assert(LCK_CHECK_LOCK(lock)); |
| 979 | |
| 980 | // go through the list, saving the next lock in the list |
| 981 | // in case the current one gets deleted in the ast |
| 982 | |
| 983 | Lock* next; |
| 984 | for (Lock* match = hash_get_lock(lock, 0, 0); match; match = next) |
| 985 | { |
| 986 | next = match->lck_identical; |
| 987 | if (match->lck_ast) { |
| 988 | (*match->lck_ast)(match->lck_object); |
| 989 | } |
| 990 | } |
| 991 | return 0; // make the compiler happy |
| 992 | } |
| 993 | |
| 994 | |
| 995 | static void hash_allocate(Lock* lock) |
nothing calls this directly
no test coverage detected