From 160dc9a99efd21d027fa5001dc00cdf097f49207 Mon Sep 17 00:00:00 2001 From: TriantaTV Date: Tue, 11 Oct 2022 20:18:38 -0500 Subject: [PATCH] Setup structure for programs --- include/consumer.h | 2 ++ include/producer.h | 2 ++ src/consumer.c | 19 +++++++++++++++++++ src/driver.c | 6 +++++- src/producer.c | 20 ++++++++++++++++++++ 5 files changed, 48 insertions(+), 1 deletion(-) diff --git a/include/consumer.h b/include/consumer.h index cdecfcc..6aceb84 100644 --- a/include/consumer.h +++ b/include/consumer.h @@ -2,5 +2,7 @@ #define CONSUMER_H void Consumer(void); +void consume_item(int item); +long int remove_item(void); #endif \ No newline at end of file diff --git a/include/producer.h b/include/producer.h index 508193a..f0b441a 100644 --- a/include/producer.h +++ b/include/producer.h @@ -2,5 +2,7 @@ #define PRODUCER_H void Producer(void); +long int produce_item(void); +void insert_item(int item); #endif \ No newline at end of file diff --git a/src/consumer.c b/src/consumer.c index c1b518d..a66fbc2 100644 --- a/src/consumer.c +++ b/src/consumer.c @@ -1,6 +1,25 @@ #include "consumer.h" void Consumer(void) +{ + int item; + while (1) + { + down(&full); + down(&mutex); + item = remove_item(); + up(&mutex); + up(&empty); + consume_item(item); + } +} + +void consume_item(item) +{ + ; +} + +long int remove_item() { ; } \ No newline at end of file diff --git a/src/driver.c b/src/driver.c index 7607b82..5469c56 100644 --- a/src/driver.c +++ b/src/driver.c @@ -1,6 +1,11 @@ #include +#include #include +semaphore mutex = 1; +semaphore empty; +semaphore full = 0; + int GetSplitAmount(char* argv); int main(int argc, char* argv[]) @@ -8,7 +13,6 @@ int main(int argc, char* argv[]) int splitLimit = 1; if (argc == 2) splitLimit = GetSplitAmount(argv[1]); - } int GetSplitAmount(char* argv) diff --git a/src/producer.c b/src/producer.c index 2354032..08eb76d 100644 --- a/src/producer.c +++ b/src/producer.c @@ -1,6 +1,26 @@ +#include #include "producer.h" void Producer(void) +{ + int item; + while (1) + { + item = produce_item(); + down(&empty); + down(&mutex); + insert_item(item); + up(&mutex); + up(&full); + } +} + +long int produce_item(void) +{ + return random(); +} + +void insert_item(int item) { ; } \ No newline at end of file