1 #include "machinepile.h"
3 void insertPile(int mid, unsigned int oid, int siteid, short numoffset, short *offset, prefetchpile_t **head) {
6 unsigned int *oidarray;
9 //Loop through the machines
10 for(; 1; head=&((*head)->next)) {
12 if ((*head)==NULL||(tmid=(*head)->mid)>mid) {
13 prefetchpile_t * tmp = (prefetchpile_t *) malloc(sizeof(prefetchpile_t));
15 objnode = malloc(sizeof(objpile_t));
16 objnode->offset = offset;
18 objnode->numoffset = numoffset;
19 objnode->siteid = siteid;
21 tmp->objpiles = objnode;
32 for(tmp=&((*head)->objpiles); 1; tmp=&((*tmp)->next)) {
36 if ((*tmp)==NULL||((toid=(*tmp)->oid)>oid)) {
37 objnode = (objpile_t *) malloc(sizeof(objpile_t));
38 objnode->offset = offset;
40 objnode->numoffset = numoffset;
41 objnode->siteid = siteid;
49 /* Fill objpiles DS */
51 int onumoffset=(*tmp)->numoffset;
52 short * ooffset=(*tmp)->offset;
54 for(i=0; i<numoffset; i++) {
56 //We've matched, let's just extend the current prefetch
57 (*tmp)->numoffset=numoffset;
58 (*tmp)->offset=offset;
61 if (ooffset[i]<offset[i]) {
63 } else if (ooffset[i]>offset[i]) {
64 //Place item before the current one
65 objnode = (objpile_t *) malloc(sizeof(objpile_t));
66 objnode->offset = offset;
68 objnode->numoffset = numoffset;
69 objnode->siteid = siteid;
75 //if we get to the end, we're already covered by this prefetch