diff --git a/Makefile b/Makefile index 916e159..5f9d6db 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,16 @@ INC := -I include -all: compile exec +all: compile link compile: gcc $(INC) -c -o build/driver.o src/driver.c gcc $(INC) -c -o build/producer.o src/producer.c gcc $(INC) -c -o build/consumer.o src/consumer.c -exec: +link: gcc -o bin/driver.out build/*.o + +exec: compile link ./bin/driver.out clean: diff --git a/bin/driver.out b/bin/driver.out index 2829648..cf053f8 100755 Binary files a/bin/driver.out and b/bin/driver.out differ diff --git a/build/consumer.o b/build/consumer.o index b5cbf35..870fdac 100644 Binary files a/build/consumer.o and b/build/consumer.o differ diff --git a/build/driver.o b/build/driver.o index cafaaa3..ecf8e3b 100644 Binary files a/build/driver.o and b/build/driver.o differ diff --git a/build/producer.o b/build/producer.o index 2bc4067..7934c9a 100644 Binary files a/build/producer.o and b/build/producer.o differ diff --git a/include/consumer.h b/include/consumer.h index 523e68e..e524d8b 100644 --- a/include/consumer.h +++ b/include/consumer.h @@ -1,7 +1,7 @@ #ifndef CONSUMER_H #define CONSUMER_H -void Consumer(void); +void* Consumer(void* arg); void consume_item(long int item); long int remove_item(void); diff --git a/include/producer.h b/include/producer.h index c97a24d..dbeb64e 100644 --- a/include/producer.h +++ b/include/producer.h @@ -1,7 +1,7 @@ #ifndef PRODUCER_H #define PRODUCER_H -void Producer(void); +void* Producer(void* arg); long int produce_item(void); void insert_item(long int item); diff --git a/src/consumer.c b/src/consumer.c index 88ae03c..365b7b7 100644 --- a/src/consumer.c +++ b/src/consumer.c @@ -1,17 +1,17 @@ #include "consumer.h" #include "shared.h" -void Consumer(void) +void* Consumer(void* arg) { - int item; + long int consumeNum; while (1) { // down(&full); // down(&mutex); - item = remove_item(); + consumeNum = remove_item(); // up(&mutex); // up(&empty); - consume_item(item); + consume_item(consumeNum); break; } } diff --git a/src/driver.c b/src/driver.c index 0d189c6..8c4392f 100644 --- a/src/driver.c +++ b/src/driver.c @@ -1,18 +1,24 @@ #include +#include +#include +#include #include #include "consumer.h" #include "producer.h" #include "shared.h" int GetSplitAmount(char* argv); +void TestProducerConsumer(void); int main(int argc, char* argv[]) { + srand(time(NULL)); sharedMem testMemory; int splitLimit = 1; if (argc == 2) splitLimit = GetSplitAmount(argv[1]); + TestProducerConsumer(); } int GetSplitAmount(char* argv) @@ -21,3 +27,9 @@ int GetSplitAmount(char* argv) sscanf(argv, "%d", &splitAmount); return splitAmount; } + +void TestProducerConsumer(void) +{ + Producer(NULL); + Consumer(NULL); +} diff --git a/src/producer.c b/src/producer.c index 2739555..4b29cab 100644 --- a/src/producer.c +++ b/src/producer.c @@ -1,17 +1,19 @@ #include +#include #include "producer.h" #include "shared.h" -void Producer(void) +void* Producer(void* arg) { - int item; + long int insertNum; while (1) { - item = produce_item(); + insertNum = produce_item(); + printf("The random number is %li\n", insertNum); // sem_wait(&semProducer); // down(&empty); // down(&mutex); - insert_item(item); + insert_item(insertNum); // sem_post(&semProducer); // up(&mutex); // up(&full); @@ -21,7 +23,7 @@ void Producer(void) long int produce_item(void) { - return random(); + return rand() % 10; } void insert_item(long int item)