* or implied, of GRNET S.A.
*/
+#ifndef PEER_H
+
+#define PEER_H
+
#include <stddef.h>
#include <xseg/xseg.h>
#ifdef ST_THREADS
st_cond_t cond;
#endif
+#ifdef MT
+ int thread_no;
+#endif
+};
+
+struct thread {
+ pthread_t tid;
+ struct peerd *peer;
+ int thread_no;
+ struct xq free_thread_reqs;
+ void *priv;
+ void *arg;
};
struct peerd {
xport portno_start;
xport portno_end;
long nr_ops;
+ uint64_t threshold;
xport defer_portno;
struct peer_req *peer_reqs;
struct xq free_reqs;
struct thread *thread;
struct xq threads;
void (*interactive_func)(void);
+#else
#endif
};
void pending(struct peerd *peer, struct peer_req *req);
void log_pr(char *msg, struct peer_req *pr);
int canDefer(struct peerd *peer);
-int submit_peer_req(struct peerd *peer, struct peer_req *pr);
-struct peer_req *alloc_peer_req(struct peerd *peer);
void free_peer_req(struct peerd *peer, struct peer_req *pr);
+int submit_peer_req(struct peerd *peer, struct peer_req *pr);
void get_submits_stats();
void get_responds_stats();
void usage();
void print_req(struct xseg *xseg, struct xseg_request *req);
-int check_ports(struct peerd *peer);
+int all_peer_reqs_free(struct peerd *peer);
#ifdef MT
int thread_execute(struct peerd *peer, void (*func)(void *arg), void *arg);
+struct peer_req *alloc_peer_req(struct peerd *peer, struct thread *t);
+int check_ports(struct peerd *peer, struct thread *t);
+#else
+struct peer_req *alloc_peer_req(struct peerd *peer);
+int check_ports(struct peerd *peer);
#endif
static inline struct peerd * __get_peerd(void * custom_peerd)
enum dispatch_reason reason);
void custom_peer_usage();
+
+#endif /* end of PEER_H */