aboutsummaryrefslogtreecommitdiff
path: root/pa6_threaded_resolver/array.h
diff options
context:
space:
mode:
Diffstat (limited to 'pa6_threaded_resolver/array.h')
-rw-r--r--pa6_threaded_resolver/array.h75
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);