• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/xen/xenstore/

Lines Matching refs:msg

630 	struct xs_stored_msg *msg;
634 msg = malloc(sizeof(*msg), M_XENSTORE, M_WAITOK);
635 error = xs_read_store(&msg->hdr, sizeof(msg->hdr));
637 free(msg, M_XENSTORE);
641 body = malloc(msg->hdr.len + 1, M_XENSTORE, M_WAITOK);
642 error = xs_read_store(body, msg->hdr.len);
645 free(msg, M_XENSTORE);
648 body[msg->hdr.len] = '\0';
650 *type = msg->hdr.type;
651 if (msg->hdr.type == XS_WATCH_EVENT) {
652 msg->u.watch.vec = split(body, msg->hdr.len,
653 &msg->u.watch.vec_size);
656 msg->u.watch.handle = find_watch(
657 msg->u.watch.vec[XS_WATCH_TOKEN]);
659 if (msg->u.watch.handle != NULL &&
660 (!msg->u.watch.handle->max_pending ||
661 msg->u.watch.handle->pending <
662 msg->u.watch.handle->max_pending)) {
663 msg->u.watch.handle->pending++;
664 TAILQ_INSERT_TAIL(&xs.watch_events, msg, list);
669 free(msg->u.watch.vec, M_XENSTORE);
670 free(msg, M_XENSTORE);
674 msg->u.reply.body = body;
676 TAILQ_INSERT_TAIL(&xs.reply_list, msg, list);
743 struct xs_stored_msg *msg;
756 msg = TAILQ_FIRST(&xs.reply_list);
757 TAILQ_REMOVE(&xs.reply_list, msg, list);
760 *type = msg->hdr.type;
762 *len = msg->hdr.len;
763 body = msg->u.reply.body;
765 free(msg, M_XENSTORE);
777 * \param msg A properly formatted message to transmit to
788 xs_dev_request_and_reply(struct xsd_sockmsg *msg, void **result)
793 request_type = msg->type;
796 if ((error = xs_write_store(msg, sizeof(*msg) + msg->len)) == 0)
797 error = xs_read_reply(&msg->type, &msg->len, result);
823 struct xsd_sockmsg msg;
828 msg.tx_id = t.id;
829 msg.req_id = 0;
830 msg.type = request_type;
831 msg.len = 0;
833 msg.len += iovec[i].iov_len;
836 error = xs_write_store(&msg, sizeof(msg));
850 error = xs_read_reply(&msg.type, len, &ret);
857 if (msg.type == XS_ERROR) {
864 KASSERT(msg.type == request_type, ("bad xenstore message type"));
975 struct xs_stored_msg *msg;
988 msg = TAILQ_FIRST(&xs.watch_events);
989 if (msg) {
990 TAILQ_REMOVE(&xs.watch_events, msg, list);
991 msg->u.watch.handle->pending--;
995 if (msg != NULL) {
1002 if (msg->u.watch.handle->callback != NULL)
1003 msg->u.watch.handle->callback(
1004 msg->u.watch.handle,
1005 (const char **)msg->u.watch.vec,
1006 msg->u.watch.vec_size);
1007 free(msg->u.watch.vec, M_XENSTORE);
1008 free(msg, M_XENSTORE);
1613 struct xs_stored_msg *msg, *tmp;
1634 TAILQ_FOREACH_SAFE(msg, &xs.watch_events, list, tmp) {
1635 if (msg->u.watch.handle != watch)
1637 TAILQ_REMOVE(&xs.watch_events, msg, list);
1638 free(msg->u.watch.vec, M_XENSTORE);
1639 free(msg, M_XENSTORE);