15 #define CLOADFACTOR 0.25
16 #define CHASH_SIZE 1024
18 #define INLINE inline __attribute__((always_inline))
20 typedef struct chashlistnode {
22 void * val; //this can be cast to another type or used to point to a larger structure
23 struct chashlistnode *next;
24 struct chashlistnode *lnext;
27 typedef struct chashtable {
28 chashlistnode_t *table; // points to beginning of hash table
31 unsigned int numelements;
32 unsigned int threshold;
37 typedef struct clist {
38 struct chashlistnode array[NUMCLIST];
44 void t_chashCreate(unsigned int size, double loadfactor);
45 void t_chashInsert(void * key, void *val);
46 void * t_chashSearch(void * key);
47 unsigned int t_chashResize(unsigned int newsize);
51 extern __thread chashlistnode_t *c_table;
52 extern __thread chashlistnode_t *c_list;
53 extern __thread unsigned int c_size;
54 extern __thread unsigned INTPTR c_mask;
55 extern __thread unsigned int c_numelements;
56 extern __thread unsigned int c_threshold;
57 extern __thread double c_loadfactor;
58 extern __thread cliststruct_t *c_structs;
62 typedef struct rdchashlistnode {
65 struct rdchashlistnode *next;
66 struct rdchashlistnode *lnext;
69 typedef struct rdclist {
70 struct rdchashlistnode array[NUMCLIST];
76 extern __thread rdchashlistnode_t *rd_c_table;
77 extern __thread rdchashlistnode_t *rd_c_list;
78 extern __thread unsigned int rd_c_size;
79 extern __thread unsigned INTPTR rd_c_mask;
80 extern __thread unsigned int rd_c_numelements;
81 extern __thread unsigned int rd_c_threshold;
82 extern __thread double rd_c_loadfactor;
83 extern __thread rdcliststruct_t *rd_c_structs;
85 void rd_t_chashCreate(unsigned int size, double loadfactor);
86 void rd_t_chashInsertOnce(void * key, unsigned int val);
87 unsigned int rd_t_chashResize(unsigned int newsize);
88 void rd_t_chashDelete();
89 void rd_t_chashreset();
93 extern __thread chashlistnode_t *dc_c_table;
94 extern __thread chashlistnode_t *dc_c_list;
95 extern __thread unsigned int dc_c_size;
96 extern __thread unsigned INTPTR dc_c_mask;
97 extern __thread unsigned int dc_c_numelements;
98 extern __thread unsigned int dc_c_threshold;
99 extern __thread double dc_c_loadfactor;
100 extern __thread cliststruct_t *dc_c_structs;
102 void dc_t_chashCreate(unsigned int size, double loadfactor);
103 void dc_t_chashInsertOnce(void * key, void *val);
104 void * dc_t_chashSearch(void * key);
105 unsigned int dc_t_chashResize(unsigned int newsize);
106 void dc_t_chashDelete();
107 void dc_t_chashreset();