-
Notifications
You must be signed in to change notification settings - Fork 0
/
queue.h
57 lines (47 loc) · 1.03 KB
/
queue.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* File : queue.h
*
* Title : Queue helper file.
*
* Short : Type and Function declarations of queue.
*
* Long : It does NOT have overflow protection by design.
*
* Author : Iosif Chrysostomou
*
* Date :
*
* Revised :
*/
#ifndef QUEUE_H
#define QUEUE_H
#include "common.h"
/*
* Type Job
* Object that is used in the queue.
* Contains a function pointer and 2 variable pointer.
*/
typedef struct {
void* (*jobFcn)(void *);
void* data;
// void* tJobStart;
} Job;
/*
* Type Queue
* Object that is used as a queue.
* Contains a statically defined array (type of Job) used to store items.
* head, tail, full, empty internal variable for proper storing.
* pthread library variables are used to prevent race conditions.
*/
typedef struct {
Job buf[QUEUE_SIZE];
long head, tail;
int full, empty;
pthread_mutex_t *mut;
pthread_cond_t *notFull, *notEmpty;
} Queue;
Queue *queueInit(void);
void queueDelete(Queue *q);
void queueAdd(Queue *q, Job in);
void queuePop(Queue *q, Job *out);
#endif /* QUEUE_H */