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 void mcpileenqueue(prefetchpile_t *node) {
26 prefetchpile_t *tmp, *prev;
27 if(mcqueue.front == NULL && mcqueue.rear == NULL) {
28 tmp = mcqueue.front = node;
35 tmp = mcqueue.rear->next = node;
44 /* Return the node pointed to by the front ptr of the queue */
45 prefetchpile_t *mcpiledequeue(void) {
46 prefetchpile_t *retnode;
47 if(mcqueue.front == NULL) {
48 printf("Machune pile queue empty: Underfloe %s %d\n", __FILE__, __LINE__);
51 retnode = mcqueue.front;
52 mcqueue.front = mcqueue.front->next;
57 /* Delete the node pointed to by the front ptr of the queue */
59 prefetchpile_t *delnode;
60 if((mcqueue.front == NULL) && (mcqueue.rear == NULL)) {
61 printf("The queue is empty: UNDERFLOW %s, %d\n", __FILE__, __LINE__);
63 } else if ((mcqueue.front == mcqueue.rear) && mcqueue.front != NULL && mcqueue.rear != NULL) {
66 mcqueue.front = mcqueue.rear = NULL;
68 delnode = mcqueue.front;
69 mcqueue.front = mcqueue.front->next;
75 void mcpiledelete(void) {
76 /* Remove each element */
77 while(mcqueue.front != NULL)
79 mcqueue.front = mcqueue.rear = NULL;
83 void mcpiledisplay() {
86 prefetchpile_t *tmp = mcqueue.front;
88 printf("Remote machine id = %d\n", tmp->mid);