Lines Matching refs:msg
168 struct xs_stored_msg *msg; in read_reply() local
192 msg = list_entry(xs_state.reply_list.next, in read_reply()
194 list_del(&msg->list); in read_reply()
198 *type = msg->hdr.type; in read_reply()
200 *len = msg->hdr.len; in read_reply()
201 body = msg->u.reply.body; in read_reply()
203 kfree(msg); in read_reply()
233 void *xenbus_dev_request_and_reply(struct xsd_sockmsg *msg) in xenbus_dev_request_and_reply() argument
236 struct xsd_sockmsg req_msg = *msg; in xenbus_dev_request_and_reply()
244 err = xb_write(msg, sizeof(*msg) + msg->len); in xenbus_dev_request_and_reply()
246 msg->type = XS_ERROR; in xenbus_dev_request_and_reply()
249 ret = read_reply(&msg->type, &msg->len); in xenbus_dev_request_and_reply()
256 if ((msg->type == XS_TRANSACTION_END) || in xenbus_dev_request_and_reply()
258 (msg->type == XS_ERROR))) in xenbus_dev_request_and_reply()
272 struct xsd_sockmsg msg; in xs_talkv() local
277 msg.tx_id = t.id; in xs_talkv()
278 msg.req_id = 0; in xs_talkv()
279 msg.type = type; in xs_talkv()
280 msg.len = 0; in xs_talkv()
282 msg.len += iovec[i].iov_len; in xs_talkv()
286 err = xb_write(&msg, sizeof(msg)); in xs_talkv()
300 ret = read_reply(&msg.type, len); in xs_talkv()
307 if (msg.type == XS_ERROR) { in xs_talkv()
313 if (msg.type != type) { in xs_talkv()
315 msg.type, type); in xs_talkv()
730 struct xs_stored_msg *msg, *tmp; in unregister_xenbus_watch() local
756 list_for_each_entry_safe(msg, tmp, &watch_events, list) { in unregister_xenbus_watch()
757 if (msg->u.watch.handle != watch) in unregister_xenbus_watch()
759 list_del(&msg->list); in unregister_xenbus_watch()
760 kfree(msg->u.watch.vec); in unregister_xenbus_watch()
761 kfree(msg); in unregister_xenbus_watch()
809 struct xs_stored_msg *msg; in xenwatch_thread() local
827 msg = list_entry(ent, struct xs_stored_msg, list); in xenwatch_thread()
828 msg->u.watch.handle->callback( in xenwatch_thread()
829 msg->u.watch.handle, in xenwatch_thread()
830 (const char **)msg->u.watch.vec, in xenwatch_thread()
831 msg->u.watch.vec_size); in xenwatch_thread()
832 kfree(msg->u.watch.vec); in xenwatch_thread()
833 kfree(msg); in xenwatch_thread()
844 struct xs_stored_msg *msg; in process_msg() local
864 msg = kmalloc(sizeof(*msg), GFP_NOIO | __GFP_HIGH); in process_msg()
865 if (msg == NULL) { in process_msg()
870 err = xb_read(&msg->hdr, sizeof(msg->hdr)); in process_msg()
872 kfree(msg); in process_msg()
876 if (msg->hdr.len > XENSTORE_PAYLOAD_MAX) { in process_msg()
877 kfree(msg); in process_msg()
882 body = kmalloc(msg->hdr.len + 1, GFP_NOIO | __GFP_HIGH); in process_msg()
884 kfree(msg); in process_msg()
889 err = xb_read(body, msg->hdr.len); in process_msg()
892 kfree(msg); in process_msg()
895 body[msg->hdr.len] = '\0'; in process_msg()
897 if (msg->hdr.type == XS_WATCH_EVENT) { in process_msg()
898 msg->u.watch.vec = split(body, msg->hdr.len, in process_msg()
899 &msg->u.watch.vec_size); in process_msg()
900 if (IS_ERR(msg->u.watch.vec)) { in process_msg()
901 err = PTR_ERR(msg->u.watch.vec); in process_msg()
902 kfree(msg); in process_msg()
907 msg->u.watch.handle = find_watch( in process_msg()
908 msg->u.watch.vec[XS_WATCH_TOKEN]); in process_msg()
909 if (msg->u.watch.handle != NULL) { in process_msg()
911 list_add_tail(&msg->list, &watch_events); in process_msg()
915 kfree(msg->u.watch.vec); in process_msg()
916 kfree(msg); in process_msg()
920 msg->u.reply.body = body; in process_msg()
922 list_add_tail(&msg->list, &xs_state.reply_list); in process_msg()