bug fix
authorbdemsky <bdemsky>
Mon, 4 Aug 2008 23:07:39 +0000 (23:07 +0000)
committerbdemsky <bdemsky>
Mon, 4 Aug 2008 23:07:39 +0000 (23:07 +0000)
Robust/src/Runtime/DSTM/interface/sockpool.c
Robust/src/Runtime/DSTM/interface/sockpool.h

index f03631de447ef631bde7cd7c8f94bba2b2656dad..85edcf2f07da6068415112fd273df701e24db650 100644 (file)
@@ -181,13 +181,21 @@ int getSock2WithLock(sockPoolHashTable_t *sockhash, unsigned int mid) {
     socknode_t *inusenode = calloc(1, sizeof(socknode_t));
     inusenode->sd = sd;
     inusenode->mid = mid;
-    insToListWithLock(sockhash, inusenode);
+    addSockWithLock(sockhash, inusenode);
     return sd;
   } else {
     return -1;
   }
 }
 
+void addSockWithLock(sockPoolHashTable_t *sockhash, socknode_t *ptr) {
+  int key = ptr->mid%(sockhash->size);
+  Lock(&sockhash->mylock);
+  ptr->next = sockhash->table[key];
+  sockhash->table[key] = ptr;
+  UnLock(&sockhash->mylock);
+}
+
 void insToListWithLock(sockPoolHashTable_t *sockhash, socknode_t *inusenode) {
     Lock(&sockhash->mylock);
     inusenode->next = sockhash->inuse;
index 212c426a9ed6489a3d8bd38aca9af5fdd3620cb3..8a9a64aa26096c075d2ad8cc37efdc11c00bcd7d 100644 (file)
@@ -20,6 +20,7 @@ typedef struct sockPoolHashTable {
     volatile unsigned int mylock;
 } sockPoolHashTable_t;
 
+void addSockWithLock(sockPoolHashTable_t *sockhash, socknode_t *ptr);
 sockPoolHashTable_t *createSockPool(sockPoolHashTable_t *, unsigned int);
 int getSock(sockPoolHashTable_t *, unsigned int);
 int getSock2(sockPoolHashTable_t *, unsigned int);