single socketpool version with spin locks
[IRC.git] / Robust / src / Runtime / DSTM / interface / sockpool.h
1 #ifndef _SOCKPOOL_H_
2 #define _SOCKPOOL_H_
3
4 #include "dstm.h"
5
6 #define LOADFACTOR 0.5
7
8 typedef int SpinLock;
9
10 typedef struct socknode {
11     int sd;
12     unsigned int mid;
13     struct socknode *next;
14 } socknode_t;
15
16 typedef struct sockPoolHashTable {
17     socknode_t **table;
18     socknode_t **inuse;
19     unsigned int size;
20     unsigned int numelements;
21     float loadfactor;
22     SpinLock mylock;
23 } sockPoolHashTable_t;
24
25 int createSockPool(unsigned int, float);
26 int getSock(unsigned int);
27 int freeSock(unsigned int, int);
28 int deleteSockpool(sockPoolHashTable_t *);
29 int insToList(socknode_t *);
30 int createNewSocket(unsigned int);
31 int CompareAndSwap(int *, int, int);
32 void InitLock(SpinLock *);
33 void Lock (SpinLock *);
34 void UnLock (SpinLock *);
35
36 #endif