From 5aae596fa920304cd0dd25ebce8b53be144e6d10 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Mon, 4 Aug 2008 23:07:39 +0000 Subject: [PATCH] bug fix --- Robust/src/Runtime/DSTM/interface/sockpool.c | 10 +++++++++- Robust/src/Runtime/DSTM/interface/sockpool.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Robust/src/Runtime/DSTM/interface/sockpool.c b/Robust/src/Runtime/DSTM/interface/sockpool.c index f03631de..85edcf2f 100644 --- a/Robust/src/Runtime/DSTM/interface/sockpool.c +++ b/Robust/src/Runtime/DSTM/interface/sockpool.c @@ -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; diff --git a/Robust/src/Runtime/DSTM/interface/sockpool.h b/Robust/src/Runtime/DSTM/interface/sockpool.h index 212c426a..8a9a64aa 100644 --- a/Robust/src/Runtime/DSTM/interface/sockpool.h +++ b/Robust/src/Runtime/DSTM/interface/sockpool.h @@ -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); -- 2.34.1