4 /* main speer structs */
7 struct xseg_request *req;
19 uint32_t defer_portno;
20 struct peer_req *peer_reqs;
26 enum dispatch_reason {
32 void fail(struct peerd *peer, struct peer_req *pr);
33 void complete(struct peerd *peer, struct peer_req *pr);
34 void defer_request(struct peerd *peer, struct peer_req *pr);
35 void pending(struct peerd *peer, struct peer_req *req);
36 void log_pr(char *msg, struct peer_req *pr);
37 int canDefer(struct peerd *peer);
38 int submit_peer_req(struct peerd *peer, struct peer_req *pr);
39 struct peer_req *alloc_peer_req(struct peerd *peer);
40 void free_peer_req(struct peerd *peer, struct peer_req *pr);
41 void get_submits_stats();
42 void get_responds_stats();
44 static inline struct peerd * __get_peerd(void * custom_peerd)
46 return (struct peerd *) ((unsigned long) custom_peerd - offsetof(struct peerd, priv));
49 /********************************
50 * mandatory peer functions *
51 ********************************/
53 /* peer main function */
54 int custom_peer_init(struct peerd *peer, int argc, char *argv[]);
56 /* dispatch function that cannot block
57 * defers blocking calls to helper threads
59 int dispatch(struct peerd *peer, struct peer_req *pr, struct xseg_request *xseg,
60 enum dispatch_reason reason);