#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;
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