Lines Matching defs:state
217 } state;
222 if (!state.in_msg) {
223 state.in_msg = true;
224 state.in_hdr = true;
225 state.read = 0;
232 * message. state.in_msg will be true as long as we are holding
240 state.in_msg = false;
245 if (state.in_hdr) {
246 if (state.read != sizeof(state.msg)) {
247 err = xb_read((void *)&state.msg + state.read,
248 sizeof(state.msg) - state.read);
251 state.read += err;
252 if (state.read != sizeof(state.msg))
254 if (state.msg.len > XENSTORE_PAYLOAD_MAX) {
260 len = state.msg.len + 1;
261 if (state.msg.type == XS_WATCH_EVENT)
262 len += sizeof(*state.watch);
264 state.alloc = kmalloc(len, GFP_NOIO | __GFP_HIGH);
265 if (!state.alloc)
268 if (state.msg.type == XS_WATCH_EVENT)
269 state.body = state.watch->body;
271 state.body = state.alloc;
272 state.in_hdr = false;
273 state.read = 0;
276 err = xb_read(state.body + state.read, state.msg.len - state.read);
280 state.read += err;
281 if (state.read != state.msg.len)
284 state.body[state.msg.len] = '\0';
286 if (state.msg.type == XS_WATCH_EVENT) {
287 state.watch->len = state.msg.len;
288 err = xs_watch_msg(state.watch);
293 if (req->msg.req_id == state.msg.req_id) {
303 if (req->state == xb_req_state_wait_reply) {
305 req->msg.type = state.msg.type;
306 req->msg.len = state.msg.len;
307 req->body = state.body;
308 /* write body, then update state */
310 req->state = xb_req_state_got_reply;
318 state.in_msg = false;
319 state.alloc = NULL;
324 state.in_msg = false;
325 kfree(state.alloc);
326 state.alloc = NULL;
336 } state;
346 if (!state.req) {
347 state.req = list_first_entry(&xb_write_list,
349 state.idx = -1;
350 state.written = 0;
353 if (state.req->state == xb_req_state_aborted)
356 while (state.idx < state.req->num_vecs) {
357 if (state.idx < 0) {
358 base = &state.req->msg;
359 len = sizeof(state.req->msg);
361 base = state.req->vec[state.idx].iov_base;
362 len = state.req->vec[state.idx].iov_len;
364 err = xb_write(base + state.written, len - state.written);
367 state.written += err;
368 if (state.written != len)
371 state.idx++;
372 state.written = 0;
375 list_del(&state.req->list);
376 state.req->state = xb_req_state_wait_reply;
377 list_add_tail(&state.req->list, &xs_reply_list);
378 state.req = NULL;
386 state.req->msg.type = XS_ERROR;
387 state.req->err = err;
388 list_del(&state.req->list);
389 if (state.req->state == xb_req_state_aborted)
390 kfree(state.req);
392 /* write err, then update state */
394 state.req->state = xb_req_state_got_reply;
395 wake_up(&state.req->wq);
400 state.req = NULL;