Added shared struct and made code run

This commit is contained in:
TriantaTV 2022-10-12 15:44:12 -05:00
parent 160dc9a99e
commit b5b11c2979
12 changed files with 40 additions and 19 deletions

View File

@ -8,7 +8,8 @@ compile:
gcc $(INC) -c -o build/consumer.o src/consumer.c gcc $(INC) -c -o build/consumer.o src/consumer.c
exec: exec:
./driver.out gcc -o bin/driver.out build/*.o
./bin/driver.out
clean: clean:
rm driver.out consumer.out producer.out rm driver.out consumer.out producer.out

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,7 +2,7 @@
#define CONSUMER_H #define CONSUMER_H
void Consumer(void); void Consumer(void);
void consume_item(int item); void consume_item(long int item);
long int remove_item(void); long int remove_item(void);
#endif #endif

View File

@ -3,6 +3,6 @@
void Producer(void); void Producer(void);
long int produce_item(void); long int produce_item(void);
void insert_item(int item); void insert_item(long int item);
#endif #endif

13
include/shared.h Normal file
View File

@ -0,0 +1,13 @@
#ifndef SHARED_H
#define SHARED_H
#include <semaphore.h>
typedef struct sharedMem
{
int buffer[10];
sem_t semConsumer;
sem_t semProducer;
} sharedMem;
#endif

View File

@ -1,20 +1,22 @@
#include "consumer.h" #include "consumer.h"
#include "shared.h"
void Consumer(void) void Consumer(void)
{ {
int item; int item;
while (1) while (1)
{ {
down(&full); // down(&full);
down(&mutex); // down(&mutex);
item = remove_item(); item = remove_item();
up(&mutex); // up(&mutex);
up(&empty); // up(&empty);
consume_item(item); consume_item(item);
break;
} }
} }
void consume_item(item) void consume_item(long int item)
{ {
; ;
} }

View File

@ -1,15 +1,15 @@
#include <stdio.h> #include <stdio.h>
#include <semaphore.h>
#include <unistd.h> #include <unistd.h>
#include "consumer.h"
semaphore mutex = 1; #include "producer.h"
semaphore empty; #include "shared.h"
semaphore full = 0;
int GetSplitAmount(char* argv); int GetSplitAmount(char* argv);
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
sharedMem testMemory;
int splitLimit = 1; int splitLimit = 1;
if (argc == 2) if (argc == 2)
splitLimit = GetSplitAmount(argv[1]); splitLimit = GetSplitAmount(argv[1]);

View File

@ -1,5 +1,6 @@
#include <stdlib.h> #include <stdlib.h>
#include "producer.h" #include "producer.h"
#include "shared.h"
void Producer(void) void Producer(void)
{ {
@ -7,11 +8,14 @@ void Producer(void)
while (1) while (1)
{ {
item = produce_item(); item = produce_item();
down(&empty); // sem_wait(&semProducer);
down(&mutex); // down(&empty);
// down(&mutex);
insert_item(item); insert_item(item);
up(&mutex); // sem_post(&semProducer);
up(&full); // up(&mutex);
// up(&full);
break;
} }
} }
@ -20,7 +24,7 @@ long int produce_item(void)
return random(); return random();
} }
void insert_item(int item) void insert_item(long int item)
{ {
; ;
} }

1
src/shared.c Normal file
View File

@ -0,0 +1 @@
#include "shared.h"