This commit was manufactured by cvs2svn to create tag 'buildscript'.
[IRC.git] /
1 #include "machinepile.h"
2
3 void insertPile(int mid, unsigned int oid, short numoffset, short *offset, prefetchpile_t **head) {
4   prefetchpile_t *ptr;
5   objpile_t *objnode;
6   unsigned int *oidarray;
7   objpile_t **tmp;
8
9   //Loop through the machines
10   for(; 1; head=&((*head)->next)) {
11     int tmid;
12     if ((*head)==NULL||(tmid=(*head)->mid)>mid) {
13       prefetchpile_t * tmp = (prefetchpile_t *) malloc(sizeof(prefetchpile_t));
14       tmp->mid = mid;
15       objnode =  malloc(sizeof(objpile_t));
16       objnode->offset = offset;
17       objnode->oid = oid;
18       objnode->numoffset = numoffset;
19       objnode->next = NULL;
20       tmp->objpiles = objnode;
21       tmp->next = *head;
22       *head=tmp;
23       return;
24     }
25
26     //keep looking
27     if (tmid < mid)
28       continue;
29
30     //found mid list
31     for(tmp=&((*head)->objpiles); 1; tmp=&((*tmp)->next)) {
32       int toid;
33       int matchstatus;
34
35       if ((*tmp)==NULL||((toid=(*tmp)->oid)>oid)) {
36         objnode = (objpile_t *) malloc(sizeof(objpile_t));
37         objnode->offset = offset;
38         objnode->oid = oid;
39         objnode->numoffset = numoffset;
40         objnode->next = *tmp;
41         *tmp = objnode;
42         return;
43       }
44       if (toid < oid)
45         continue;
46
47       /* Fill objpiles DS */
48       int i;
49       int onumoffset=(*tmp)->numoffset;
50       short * ooffset=(*tmp)->offset;
51
52       for(i=0; i<numoffset; i++) {
53         if (i>onumoffset) {
54           //We've matched, let's just extend the current prefetch
55           (*tmp)->numoffset=numoffset;
56           (*tmp)->offset=offset;
57           return;
58         }
59         if (ooffset[i]<offset[i]) {
60           goto oidloop;
61         } else if (ooffset[i]>offset[i]) {
62           //Place item before the current one
63           objnode = (objpile_t *) malloc(sizeof(objpile_t));
64           objnode->offset = offset;
65           objnode->oid = oid;
66           objnode->numoffset = numoffset;
67           objnode->next = *tmp;
68           *tmp = objnode;
69           return;
70         }
71       }
72       //if we get to the end, we're already covered by this prefetch
73       return;
74 oidloop:
75       ;
76     }
77   }
78
79
80 }