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

Lock *make_lock ()
{
  int n;
  Lock *lock = (Lock *) malloc (sizeof(Lock));
  if (lock == NULL) {
    printf ("malloc failed");
    exit (-1);
  }
  n = pthread_mutex_init (lock->mutex, NULL);
  if (n != 0) {
    printf ("make_lock failed");
    exit (-1);
  }
  return lock;
}

void acquire (Lock *lock)
{
  int n = pthread_mutex_lock (lock->mutex);
  if (n != 0) {
    printf ("acquire failed");
    exit (-1);
  }
}

void release (Lock *lock)
{
  int n = pthread_mutex_unlock (lock->mutex);
  if (n != 0) {
    printf ("release failed");
    exit (-1);
  }
}
