InterlockedExchange((LONG volatile *)&lock->reader_idx, tmp);
#endif
+ ossl_crypto_mutex_unlock(lock->alloc_lock);
/* wake up any waiters */
ossl_crypto_condvar_signal(lock->alloc_signal);
- ossl_crypto_mutex_unlock(lock->alloc_lock);
return &lock->qp_group[current_idx];
}
{
ossl_crypto_mutex_lock(lock->alloc_lock);
lock->writers_alloced--;
- ossl_crypto_condvar_signal(lock->alloc_signal);
ossl_crypto_mutex_unlock(lock->alloc_lock);
+ ossl_crypto_condvar_signal(lock->alloc_signal);
}
void ossl_synchronize_rcu(CRYPTO_RCU_LOCK *lock)
} while (count != (uint64_t)0);
lock->next_to_retire++;
- ossl_crypto_condvar_broadcast(lock->prior_signal);
ossl_crypto_mutex_unlock(lock->prior_lock);
+ ossl_crypto_condvar_broadcast(lock->prior_signal);
retire_qp(lock, qp);