Lines Matching refs:req
61 static status_t p9_req_prepare(struct p9_req *req, in p9_req_prepare() argument
64 struct virtio_9p_dev *p9dev = containerof(req, struct virtio_9p_dev, req); in p9_req_prepare()
67 if ((ret = pdu_init(&req->tc, p9dev->msize)) != NO_ERROR) { in p9_req_prepare()
71 if ((ret = pdu_init(&req->rc, p9dev->msize)) != NO_ERROR) { in p9_req_prepare()
75 pdu_reset(&req->tc); in p9_req_prepare()
76 pdu_reset(&req->rc); in p9_req_prepare()
78 event_init(&req->io_event, false, EVENT_FLAG_AUTOUNSIGNAL); in p9_req_prepare()
79 req->status = P9_REQ_S_INITIALIZED; in p9_req_prepare()
82 if (pdu_writed(&req->tc, 0) != NO_ERROR) { in p9_req_prepare()
86 if (pdu_writeb(&req->tc, tmsg->msg_type) != NO_ERROR) { in p9_req_prepare()
90 if (pdu_writew(&req->tc, tmsg->tag) != NO_ERROR) { in p9_req_prepare()
97 pdu_fini(&req->tc); in p9_req_prepare()
98 pdu_fini(&req->rc); in p9_req_prepare()
102 static void p9_req_release(struct p9_req *req) in p9_req_release() argument
104 req->status = P9_REQ_S_UNKNOWN; in p9_req_release()
105 event_destroy(&req->io_event); in p9_req_release()
107 pdu_fini(&req->tc); in p9_req_release()
108 pdu_fini(&req->rc); in p9_req_release()
111 static status_t p9_req_finalize(struct p9_req *req) in p9_req_finalize() argument
113 uint32_t size = req->tc.size; in p9_req_finalize()
116 pdu_reset(&req->tc); in p9_req_finalize()
117 ret = pdu_writed(&req->tc, size); in p9_req_finalize()
118 req->tc.size = size; in p9_req_finalize()
120 LTRACEF("req->tc.sdata (%p) size (%u)\n", req->tc.sdata, size); in p9_req_finalize()
121 hexdump8(req->tc.sdata, size); in p9_req_finalize()
127 static void p9_req_receive(struct p9_req *req, in p9_req_receive() argument
130 pdu_readd(&req->rc); in p9_req_receive()
131 rmsg->msg_type = pdu_readb(&req->rc); in p9_req_receive()
132 rmsg->tag = pdu_readw(&req->rc); in p9_req_receive()
134 LTRACEF("req->rc.sdata (%p) req->rc.size (%u)\n", req->rc.sdata, in p9_req_receive()
135 req->rc.size); in p9_req_receive()
136 hexdump8(req->rc.sdata, req->rc.size); in p9_req_receive()
141 struct p9_req *req) in virtio_9p_req_send() argument
152 desc->len = req->tc.size; in virtio_9p_req_send()
153 desc->addr = vaddr_to_paddr(req->tc.sdata); in virtio_9p_req_send()
161 desc->len = req->rc.capacity; in virtio_9p_req_send()
162 desc->addr = vaddr_to_paddr(req->rc.sdata); in virtio_9p_req_send()
169 req->status = P9_REQ_S_SENT; in virtio_9p_req_send()
186 struct p9_req *req = &p9dev->req; in virtio_9p_rpc() local
200 ret = p9_req_prepare(req, tmsg); in virtio_9p_rpc()
208 ret = p9_proto_tlopen(req, tmsg); in virtio_9p_rpc()
211 ret = p9_proto_tgetattr(req, tmsg); in virtio_9p_rpc()
214 ret = p9_proto_tversion(req, tmsg); in virtio_9p_rpc()
217 ret = p9_proto_tattach(req, tmsg); in virtio_9p_rpc()
220 ret = p9_proto_twalk(req, tmsg); in virtio_9p_rpc()
223 ret = p9_proto_topen(req, tmsg); in virtio_9p_rpc()
226 ret = p9_proto_tread(req, tmsg); in virtio_9p_rpc()
229 ret = p9_proto_twrite(req, tmsg); in virtio_9p_rpc()
232 ret = p9_proto_tclunk(req, tmsg); in virtio_9p_rpc()
235 ret = p9_proto_tremove(req, tmsg); in virtio_9p_rpc()
238 ret = p9_proto_tlcreate(req, tmsg); in virtio_9p_rpc()
241 ret = p9_proto_treaddir(req, tmsg); in virtio_9p_rpc()
244 ret = p9_proto_tmkdir(req, tmsg); in virtio_9p_rpc()
257 if ((ret = p9_req_finalize(req)) != NO_ERROR) { in virtio_9p_rpc()
261 virtio_9p_req_send(p9dev, req); in virtio_9p_rpc()
264 if (event_wait_timeout(&req->io_event, VIRTIO_9P_RPC_TIMEOUT) != NO_ERROR) { in virtio_9p_rpc()
270 p9_req_receive(req, rmsg); in virtio_9p_rpc()
275 ret = p9_proto_rlopen(req, rmsg); in virtio_9p_rpc()
278 ret = p9_proto_rgetattr(req, rmsg); in virtio_9p_rpc()
281 ret = p9_proto_rversion(req, rmsg); in virtio_9p_rpc()
284 ret = p9_proto_rattach(req, rmsg); in virtio_9p_rpc()
287 ret = p9_proto_rwalk(req, rmsg); in virtio_9p_rpc()
290 ret = p9_proto_ropen(req, rmsg); in virtio_9p_rpc()
293 ret = p9_proto_rread(req, rmsg); in virtio_9p_rpc()
296 ret = p9_proto_rwrite(req, rmsg); in virtio_9p_rpc()
299 ret = p9_proto_rclunk(req, rmsg); in virtio_9p_rpc()
302 ret = p9_proto_rremove(req, rmsg); in virtio_9p_rpc()
305 ret = p9_proto_rlerror(req, rmsg); in virtio_9p_rpc()
308 ret = p9_proto_rlcreate(req, rmsg); in virtio_9p_rpc()
311 ret = p9_proto_rreaddir(req, rmsg); in virtio_9p_rpc()
314 ret = p9_proto_rmkdir(req, rmsg); in virtio_9p_rpc()
323 p9_req_release(req); in virtio_9p_rpc()