made it so that zemaphore is used on mac, semaphore on linux, and other clean up

This commit is contained in:
Remzi Arpaci-Dusseau
2019-05-16 16:07:33 -05:00
parent bb639b166c
commit 3faa28e520
12 changed files with 146 additions and 35 deletions

View File

@@ -5,34 +5,7 @@
#include "common.h"
#include "common_threads.h"
typedef struct __Zem_t {
int value;
pthread_cond_t cond;
pthread_mutex_t lock;
} Zem_t;
void Zem_init(Zem_t *z, int value) {
z->value = value;
Cond_init(&z->cond);
Mutex_init(&z->lock);
}
void Zem_wait(Zem_t *z) {
Mutex_lock(&z->lock);
while (z->value <= 0)
Cond_wait(&z->cond, &z->lock);
z->value--;
Mutex_unlock(&z->lock);
}
void Zem_post(Zem_t *z) {
Mutex_lock(&z->lock);
z->value++;
Cond_signal(&z->cond);
Mutex_unlock(&z->lock);
}
#include "zemaphore.h"
Zem_t s;