Udp invalidation of objects
[IRC.git] / Robust / src / Runtime / DSTM / interface / sockpool.h
index 1e868f3dec3882c234c510c69bd6cc38f7fea96e..be392e47ce4b534d37f614e6729848b44e828209 100644 (file)
@@ -2,8 +2,11 @@
 #define _SOCKPOOL_H_
 
 #include "dstm.h"
+#include "ip.h"
+
+int test_and_set(volatile unsigned int *addr);
+void UnLock(volatile unsigned int *addr);
 
-typedef int SpinLock;
 typedef struct socknode {
     int sd;
     unsigned int mid;
@@ -14,23 +17,18 @@ typedef struct sockPoolHashTable {
     socknode_t **table;
     socknode_t *inuse;
     unsigned int size;
-    unsigned int numelements;
-    float loadfactor;
-    SpinLock mylock;
+    volatile unsigned int mylock;
 } sockPoolHashTable_t;
 
-sockPoolHashTable_t *createSockPool(sockPoolHashTable_t *, unsigned int, float);
+sockPoolHashTable_t *createSockPool(sockPoolHashTable_t *, unsigned int);
 int getSock(sockPoolHashTable_t *, unsigned int);
+int getSock2(sockPoolHashTable_t *, unsigned int);
 int getSockWithLock(sockPoolHashTable_t *, unsigned int);
-int freeSock(sockPoolHashTable_t *, unsigned int, int);
-int freeSockWithLock(sockPoolHashTable_t *, unsigned int, int);
+void freeSock(sockPoolHashTable_t *, unsigned int, int);
+void freeSockWithLock(sockPoolHashTable_t *, unsigned int, int);
 void insToList(sockPoolHashTable_t *, socknode_t *);
 void insToListWithLock(sockPoolHashTable_t *, socknode_t *);
 int createNewSocket(unsigned int);
-int CompareAndSwap(int *, int, int);
-void InitLock(SpinLock *);
-void Lock (SpinLock *);
-void UnLock (SpinLock *);
 
 #if 0
 /************************************************