diff options
Diffstat (limited to 'pa6_threaded_resolver/array.h')
-rw-r--r-- | pa6_threaded_resolver/array.h | 75 |
1 files changed, 18 insertions, 57 deletions
diff --git a/pa6_threaded_resolver/array.h b/pa6_threaded_resolver/array.h index adceca8..ce5ef79 100644 --- a/pa6_threaded_resolver/array.h +++ b/pa6_threaded_resolver/array.h @@ -1,62 +1,23 @@ // Jack Sangdahl // CSCI3753 SP24 -// PA6 Threaded Resolver -#include <stdio.h> -#include <stdlib.h> -#include <stdbool.h> +// PA4 Shared Array +#include <pthread.h> +#include <semaphore.h> -typedef struct { - void *value; -} node; - -typedef struct { - node *data; - int size; - int maxsize; - int front; - int back; -} queue; - -/** - * @brief initialise the queue - * @param q - * @param size - * @return int - */ -int queue_init(queue *q, int size); +#pragma once -/** - * @brief return size of queue - * @param q - * @return int - */ -int queue_size(queue *q); +#define ARRAY_SIZE 8 -/** - * @brief return true if que size is - * greater than ARRAY_SIZE. false otherwise - * @param q - * @return bool - */ -bool queue_full(queue *q); - -/** - * @brief add element to fifo queue. block when full - * @param q - * @param val - * @return int - */ -int queue_push(queue *q, void *val); - -/** - * @brief return top element of queue in fifo order - * return null pointer if queue empty - * @param q - */ -void *queue_pop(queue *q); - -/** - * @brief free queue's resources - * @param q - */ -void queue_free(queue *q); +typedef struct { + void *data[ARRAY_SIZE]; + int head; + int tail; + pthread_mutex_t lock; + sem_t avail; + sem_t empty; +} array; + +int array_init(array *q); +int array_put(array *q, char *hostname); +int array_get(array *q, char **hostname); +void array_free(array *q); |