static void seq_flush_thread(void) { seq_list_t *ptr, *tmp; ptr = seq_retrieve(); if(ptr!=NULL) { if(verbose & TC_SYNC) { tc_log_msg(__FILE__, "syncinfo write (%d)", ptr->id); } seq_write(ptr); // release valid pointer to pool ptr->status = BUFFER_EMPTY; tmp=ptr->prev; seq_remove(tmp); pthread_mutex_lock(&seq_ctr_lock); --seq_ctr; pthread_mutex_unlock(&seq_ctr_lock); } else tc_log_error(__FILE__, "called but no work to do - this shouldn't happen"); return; }
/*@ depends \call(dequeue, q, ...), \call(size, q); @ assigns q->data; @*/ $atomic_f _Bool dequeue(cqueue* q, int* res) { $seq_remove(&q->data, $seq_length(&q->data)-1, res, 1); }