helpful progress reporting
[IRC.git] / Robust / src / Runtime / DSTM / interface / sockpool.h
1 #ifndef _SOCKPOOL_H_
2 #define _SOCKPOOL_H_
3
4 #include "dstm.h"
5 #include "ip.h"
6 #define DEFAULTSOCKPOOLSIZE 128
7
8 int test_and_set(volatile unsigned int *addr);
9 void UnLock(volatile unsigned int *addr);
10
11 typedef struct socknode {
12   int sd;
13   unsigned int mid;
14   struct socknode *next;
15 } socknode_t;
16
17 typedef struct sockPoolHashTable {
18   socknode_t **table;
19   socknode_t *inuse;
20   unsigned int size;
21   unsigned int mask;
22   volatile unsigned int mylock;
23 } sockPoolHashTable_t;
24
25 void addSockWithLock(sockPoolHashTable_t *sockhash, socknode_t *ptr);
26 sockPoolHashTable_t *createSockPool(sockPoolHashTable_t *, unsigned int);
27 int getSock(sockPoolHashTable_t *, unsigned int);
28 int getSock2(sockPoolHashTable_t *, unsigned int);
29 int getSock2WithLock(sockPoolHashTable_t *h, unsigned int);
30 int getSockWithLock(sockPoolHashTable_t *, unsigned int);
31 void freeSock(sockPoolHashTable_t *, unsigned int, int);
32 void freeSockWithLock(sockPoolHashTable_t *, unsigned int, int);
33 void insToList(sockPoolHashTable_t *, socknode_t *);
34 void insToListWithLock(sockPoolHashTable_t *, socknode_t *);
35 int createNewSocket(unsigned int);
36
37 #if 0
38 /************************************************
39  * Array Implementation data structures
40  ***********************************************/
41 #define MAX_CONN_PER_MACHINE    10
42 typedef struct sock_pool {
43   unsigned int mid;
44   int *sd;
45   char *inuse;
46 } sock_pool_t;
47
48 sock_pool_t *initSockPool(unsigned int *, int);
49 int getSock(sock_pool_t *, unsigned int);
50 int freeSock(sock_pool_t *, int);
51 #endif
52
53 #endif