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 */
14 void mcpileenqueue(prefetchpile_t *node) {
15 if(mcqueue.front == NULL && mcqueue.rear == NULL) {
16 mcqueue.front = mcqueue.rear = node;
19 mcqueue.rear->next = node;
25 /* Insert to the rear of machine pile queue */
26 void mcpileenqueue(prefetchpile_t *node) {
27 prefetchpile_t *tmp, *prev;
28 if(mcqueue.front == NULL && mcqueue.rear == NULL) {
29 tmp = mcqueue.front = node;
36 tmp = mcqueue.rear->next = node;
45 /* Return the node pointed to by the front ptr of the queue */
46 prefetchpile_t *mcpiledequeue(void) {
47 prefetchpile_t *retnode;
48 if(mcqueue.front == NULL) {
49 printf("Machune pile queue empty: Underfloe %s %d\n", __FILE__, __LINE__);
52 retnode = mcqueue.front;
53 mcqueue.front = mcqueue.front->next;
59 /* Delete the node pointed to by the front ptr of the queue */
61 prefetchpile_t *delnode;
62 if((mcqueue.front == NULL) && (mcqueue.rear == NULL)) {
63 printf("The queue is empty: UNDERFLOW %s, %d\n", __FILE__, __LINE__);
65 } else if ((mcqueue.front == mcqueue.rear) && mcqueue.front != NULL && mcqueue.rear != NULL) {
68 mcqueue.front = mcqueue.rear = NULL;
70 delnode = mcqueue.front;
71 mcqueue.front = mcqueue.front->next;
77 void mcpiledelete(void) {
78 /* Remove each element */
79 while(mcqueue.front != NULL)
81 mcqueue.front = mcqueue.rear = NULL;
85 void mcpiledisplay() {
88 prefetchpile_t *tmp = mcqueue.front;
90 printf("Remote machine id = %d\n", tmp->mid);