-void xbt_queue_unshift(xbt_queue_t queue, const void *src) {
- xbt_mutex_lock(queue->mutex);
- while (queue->capacity != 0 && queue->capacity == xbt_dynar_length(queue->data)) {
- DEBUG2("Capacity of %p exceded (=%d). Waiting",queue,queue->capacity);
- xbt_cond_wait(queue->not_full,queue->mutex);
- }
- xbt_dynar_unshift(queue->data,src);
- xbt_cond_signal(queue->not_empty);
- xbt_mutex_unlock(queue->mutex);
+void xbt_queue_unshift(xbt_queue_t queue, const void *src)
+{
+ xbt_mutex_acquire(queue->mutex);
+ while (queue->capacity != 0
+ && queue->capacity == xbt_dynar_length(queue->data)) {
+ XBT_DEBUG("Capacity of %p exceeded (=%d). Waiting", queue,
+ queue->capacity);
+ xbt_cond_wait(queue->not_full, queue->mutex);
+ }
+ xbt_dynar_unshift(queue->data, src);
+ xbt_cond_signal(queue->not_empty);
+ xbt_mutex_release(queue->mutex);