Udp invalidation of objects
[IRC.git] / Robust / src / Runtime / DSTM / interface / sockpool.h
index 185da855cf6944d13ce3758ad5530f313c2deb42..be392e47ce4b534d37f614e6729848b44e828209 100644 (file)
@@ -2,10 +2,10 @@
 #define _SOCKPOOL_H_
 
 #include "dstm.h"
+#include "ip.h"
 
-#define LOADFACTOR 0.5
-
-typedef int SpinLock;
+int test_and_set(volatile unsigned int *addr);
+void UnLock(volatile unsigned int *addr);
 
 typedef struct socknode {
     int sd;
@@ -15,22 +15,35 @@ typedef struct socknode {
 
 typedef struct sockPoolHashTable {
     socknode_t **table;
-    socknode_t **inuse;
+    socknode_t *inuse;
     unsigned int size;
-    unsigned int numelements;
-    float loadfactor;
-    SpinLock mylock;
+    volatile unsigned int mylock;
 } sockPoolHashTable_t;
 
-int createSockPool(unsigned int, float);
-int getSock(unsigned int);
-int freeSock(unsigned int, int);
-int deleteSockpool(sockPoolHashTable_t *);
-int insToList(socknode_t *);
+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);
+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
+/************************************************
+ * Array Implementation data structures 
+ ***********************************************/
+#define MAX_CONN_PER_MACHINE    10
+typedef struct sock_pool {
+    unsigned int mid;
+    int *sd;
+    char *inuse;
+} sock_pool_t;
+
+sock_pool_t *initSockPool(unsigned int *, int);
+int getSock(sock_pool_t *, unsigned int);
+int freeSock(sock_pool_t *, int);
+#endif
 
 #endif