From 49357d11737d90c2090b730cffeaf39d59a5753d Mon Sep 17 00:00:00 2001 From: zenon Date: Wed, 6 Jun 2018 19:22:25 +0200 Subject: [PATCH] Initial semaphore test --- supervisor.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/supervisor.c b/supervisor.c index bcae659..880e8d3 100644 --- a/supervisor.c +++ b/supervisor.c @@ -29,9 +29,6 @@ void usage(void) void initCircBuf() { - shared->validItems = 0; - shared->head = 0; - shared->tail = 0; shared->quit = 0; for (int i = 0; i < MAX_ITEMS; i++) { shared->data[i] = 0; @@ -47,16 +44,16 @@ int isEmpty() return 0; } -int getItem() +int getSolution(sem_t sUsedSpace, sem_t sFreeSpace, int *solution) { - if (isEmpty()) - return -1; - + sem_wait(&sUsedSpace); + int value; - + value = shared->data[shared->head]; shared->head = (shared->head + 1) % MAX_ITEMS; - shared->validItems--; + + sem_post(&sFreeSpace); return value; } @@ -95,6 +92,8 @@ int main(int argc, char *argv[]) initCircBuf(); while (quit == 0) { + int solution[MAX_ITEMS] = {-1}; + getSolution(*sUsedSpace, *sFreeSpace, solution); }