1 #include "machinepile.h"
3 void insertPile(int mid, unsigned int oid, 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;
20 tmp->objpiles = objnode;
31 for(tmp=&((*head)->objpiles);1;tmp=&((*tmp)->next)) {
35 if ((*tmp)==NULL||((toid=(*tmp)->oid)>oid)) {
36 objnode = (objpile_t *) malloc(sizeof(objpile_t));
37 objnode->offset = offset;
39 objnode->numoffset = numoffset;
47 /* Fill objpiles DS */
49 int onumoffset=(*tmp)->numoffset;
50 short * ooffset=(*tmp)->offset;
52 for(i=0;i<numoffset;i++) {
54 //We've matched, let's just extend the current prefetch
55 (*tmp)->numoffset=numoffset;
56 (*tmp)->offset=offset;
59 if (ooffset[i]<offset[i]) {
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;
66 objnode->numoffset = numoffset;
72 //if we get to the end, we're already covered by this prefetch