#include <stdio.h>
#include <stdio.h>
#include <malloc.h>
#include <pthread.h>
#include "lock.h"
#include "cond.h"

Cond *make_cond ()
{
  int n;
  Cond *cond = (Cond *) malloc (sizeof(Cond));
  if (cond == NULL) {
    printf ("malloc failed");
    exit (-1);
  }
  n = pthread_cond_init (cond, NULL);
  if (n != 0) {
    printf ("make_cond failed");
    exit (-1);
  }
  return cond;
}

void cond_wait (Cond *cond, Lock *lock)
{
  int n = pthread_cond_wait (cond, lock->mutex);
  if (n != 0) {
    printf ("cond_wait failed");
    exit (-1);
  }
}

void cond_signal (Cond *cond)
{
  int n = pthread_cond_signal (cond);
  if (n != 0) {
    printf ("cond_wait failed");
    exit (-1);
  }
}
