# error need implementation of test_and_set
#endif
-#define MAXSPINS 100
+#define MAXSPINS 4
inline void Lock(volatile unsigned int *s) {
while(test_and_set(s)) {
sockhash->table = nodelist;
sockhash->inuse = NULL;
sockhash->size = size;
+ sockhash->mask = size - 1;
sockhash->mylock=0;
return sockhash;
int getSockWithLock(sockPoolHashTable_t *sockhash, unsigned int mid) {
socknode_t **ptr;
- int key = mid%(sockhash->size);
+ int key = mid&(sockhash->mask);
int sd;
Lock(&sockhash->mylock);
int getSock(sockPoolHashTable_t *sockhash, unsigned int mid) {
socknode_t **ptr;
- int key = mid%(sockhash->size);
+ int key = mid&(sockhash->mask);
int sd;
ptr=&(sockhash->table[key]);
int getSock2(sockPoolHashTable_t *sockhash, unsigned int mid) {
socknode_t **ptr;
- int key = mid%(sockhash->size);
+ int key = mid&(sockhash->mask);
int sd;
ptr=&(sockhash->table[key]);
/*socket pool with multiple TR threads asking to connect to same machine */
int getSock2WithLock(sockPoolHashTable_t *sockhash, unsigned int mid) {
socknode_t **ptr;
- int key = mid%(sockhash->size);
+ int key = mid&(sockhash->mask);
int sd;
Lock(&sockhash->mylock);
}
void addSockWithLock(sockPoolHashTable_t *sockhash, socknode_t *ptr) {
- int key = ptr->mid%(sockhash->size);
+ int key = ptr->mid&(sockhash->mask);
Lock(&sockhash->mylock);
ptr->next = sockhash->table[key];
sockhash->table[key] = ptr;
}
void freeSock(sockPoolHashTable_t *sockhash, unsigned int mid, int sd) {
- int key = mid%(sockhash->size);
+ int key = mid&(sockhash->mask);
socknode_t *ptr = sockhash->inuse;
sockhash->inuse = ptr->next;
ptr->mid = mid;
}
void freeSockWithLock(sockPoolHashTable_t *sockhash, unsigned int mid, int sd) {
- int key = mid%(sockhash->size);
+ int key = mid&(sockhash->mask);
socknode_t *ptr;
Lock(&sockhash->mylock);
ptr = sockhash->inuse;
#endif
//Initialize socket pool
- transReadSockPool = createSockPool(transReadSockPool, 2*numHostsInSystem+1);
- transPrefetchSockPool = createSockPool(transPrefetchSockPool, 2*numHostsInSystem+1);
- transRequestSockPool = createSockPool(transRequestSockPool, 2*numHostsInSystem+1);
+ transReadSockPool = createSockPool(transReadSockPool, DEFAULTSOCKPOOLSIZE);
+ transPrefetchSockPool = createSockPool(transPrefetchSockPool, DEFAULTSOCKPOOLSIZE);
+ transRequestSockPool = createSockPool(transRequestSockPool, DEFAULTSOCKPOOLSIZE);
dstmInit();
transInit();