1 #ifndef HASHSTRUCTURE_H_
2 #define HASHSTRUCTURE_H_
4 #include "mlp_runtime.h"
5 #include "WaitingQueue.h"
7 #define ITEM_NOT_AT_FRONT_OF_WAITINGQ = 3;
8 #define TRAVERSER_FINISHED = 2;
9 #define NUM_WAITING_Q_ITEMS 20
27 #define H_MASK (NUMBINS<<4)-1
29 //Note: put resolved things at the end and unresolved at the front.
30 typedef struct BinItem_rcr {
34 //TODO keep track of record ptr here
35 struct BinItem_rcr * next;
38 typedef struct trackerElement {
40 struct trackerElement * next;
43 typedef struct tracker {
44 TrackerElement * head;
45 TrackerElement * tail;
48 //TODO more closely tie this in with Jim's stuff
49 struct genericObjectStruct {
58 typedef struct BinElement_rcr {
64 typedef struct Hashtable_rcr {
65 BinElement_rcr array[NUMBINS];
66 WaitingQueueBin * waitingQueue;
69 //Todo this is a clone of REntry, remove data fields as necessary
70 typedef struct entry_rcr{
71 //fields to handle next item.
72 struct Hashtable_rcr* hashtable;
73 BinItem_rcr* binitem; //stores binItem so we can get access to the next ptr in the queue
75 //fields to help resume traverser
76 struct genericObjectStruct * resumePtr;
77 // int allocsite; //not needed since we can get it form ptr later
80 struct genericObjectStruct * heaproot;
83 typedef struct WriteBinItem_rcr {
88 typedef struct ReadBinItem_rcr {
90 TraverserData array[NUMREAD];