2 /* main mpeer structs */
5 struct xseg_request *req;
12 struct xseg_port *xport;
16 uint32_t defer_portno;
17 struct thread *thread;
18 struct peer_req *peer_reqs;
22 void (*interactive_func)(void);
26 void fail(struct peerd *peer, struct peer_req *pr);
27 void complete(struct peerd *peer, struct peer_req *pr);
28 void defer_request(struct peerd *peer, struct peer_req *pr);
29 void pending(struct peerd *peer, struct peer_req *req);
30 void log_pr(char *msg, struct peer_req *pr);
31 int canDefer(struct peerd *peer);
32 int submit_peer_req(struct peerd *peer, struct peer_req *pr);
33 struct peer_req *alloc_peer_req(struct peerd *peer);
34 void free_peer_req(struct peerd *peer, struct peer_req *pr);
35 int thread_execute(struct peerd *peer, void (*func)(void *arg), void *arg);
36 void get_submits_stats();
37 void get_responds_stats();
39 static inline struct peerd * __get_peerd(void * custom_peerd)
41 return (struct peerd *) ((unsigned long) custom_peerd - offsetof(struct peerd, priv));
44 /********************************
45 * mandatory peer functions *
46 ********************************/
48 /* peer main function */
49 int custom_peer_init(struct peerd *peer, int argc, char *argv[]);
51 /* dispatch function that cannot block
52 * defers blocking calls to helper threads
54 int dispatch(struct peerd *peer, struct peer_req *pr, struct xseg_request *xseg);