Example #1
0
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;
}
Example #2
0
/*@ 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);
}