5 void mcpileqInit(void) {
6 /* Initialize machine queue that containing prefetch oids and offset values sorted by remote machineid */
7 mcqueue.front = mcqueue.rear = NULL;
8 pthread_mutex_init(&mcqueue.qlock, NULL);
9 pthread_cond_init(&mcqueue.qcond, NULL);
12 /* Insert to the rear of machine pile queue */
13 void mcpileenqueue(prefetchpile_t *node) {
14 if(mcqueue.front == NULL && mcqueue.rear == NULL) {
15 mcqueue.front = mcqueue.rear = node;
18 mcqueue.rear->next = node;
23 /* Return the node pointed to by the front ptr of the queue */
24 prefetchpile_t *mcpiledequeue(void) {
25 prefetchpile_t *retnode;
26 if(mcqueue.front == NULL) {
27 printf("Machune pile queue empty: Underfloe %s %d\n", __FILE__, __LINE__);
30 retnode = mcqueue.front;
31 mcqueue.front = mcqueue.front->next;
36 /* Delete the node pointed to by the front ptr of the queue */
38 prefetchpile_t *delnode;
39 if((mcqueue.front == NULL) && (mcqueue.rear == NULL)) {
40 printf("The queue is empty: UNDERFLOW %s, %d\n", __FILE__, __LINE__);
42 } else if ((mcqueue.front == mcqueue.rear) && mcqueue.front != NULL && mcqueue.rear != NULL) {
45 mcqueue.front = mcqueue.rear = NULL;
47 delnode = mcqueue.front;
48 mcqueue.front = mcqueue.front->next;
54 void mcpiledelete(void) {
55 /* Remove each element */
56 while(mcqueue.front != NULL)
58 mcqueue.front = mcqueue.rear = NULL;
62 void mcpiledisplay() {
65 prefetchpile_t *tmp = mcqueue.front;
67 printf("Remote machine id = %d\n", tmp->mid);