Added shared struct and made code run
This commit is contained in:
parent
160dc9a99e
commit
b5b11c2979
3
Makefile
3
Makefile
@ -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
|
BIN
bin/driver.out
BIN
bin/driver.out
Binary file not shown.
BIN
build/consumer.o
BIN
build/consumer.o
Binary file not shown.
BIN
build/driver.o
BIN
build/driver.o
Binary file not shown.
BIN
build/producer.o
BIN
build/producer.o
Binary file not shown.
@ -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
|
@ -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
13
include/shared.h
Normal 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
|
@ -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)
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
10
src/driver.c
10
src/driver.c
@ -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]);
|
||||||
|
@ -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
1
src/shared.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "shared.h"
|
Loading…
Reference in New Issue
Block a user