updated CUDA hybridAPI and added a CUDA hello example
[charm.git] / src / arch / cuda / hybridAPI / wrqueue.h
1 /*
2  * wrqueue.h
3  *
4  * by Lukasz Wesolowski
5  * 04.12.2008
6  *
7  * a simple FIFO queue for GPU work requests
8  *
9  */
10
11 #ifndef __WR_QUEUE_H__
12 #define __WR_QUEUE_H__
13
14 #include "wr.h"
15
16 /* number of work requests the queue is initialized to handle */
17 #define QUEUE_SIZE_INIT 10
18
19 /* if the queue is filled, it will be expanded by this many additional 
20    units */ 
21 #define QUEUE_EXPANSION_SIZE 10
22
23 /* initWRqueue
24  *
25  * allocate memory for the queue and initialize bookkeeping variables
26  *
27  */
28 void initWRqueue(workRequestQueue **qptr); 
29
30 /* dequeue
31  *
32  * delete the head entry in the queue
33  * assumes memory buffers have previously been freed or will be reused
34  *
35  */
36 void dequeue(workRequestQueue *q); 
37
38 /* deleteWRqueue
39  *
40  * if queue is nonempty, return -1  
41  * if queue is empty, delete the queue, freeing dynamically allocated 
42  * memory, and return 0
43  *
44  *
45  */
46 int deleteWRqueue(workRequestQueue *q); 
47
48 /* head
49  * 
50  * returns the first element in the queue 
51  *
52  */
53 workRequest * head(workRequestQueue *q);
54
55 /*
56  * isEmpty
57  *
58  * returns:
59  * 1 if queue has no pending requests stored
60  * 0 otherwise
61  */
62 int isEmpty(workRequestQueue *q);
63
64 #endif