Lines Matching defs:msg

29  * @msg: Control message.
33 void virtsnd_ctl_msg_ref(struct virtio_snd_msg *msg)
35 refcount_inc(&msg->ref_count);
40 * @msg: Control message.
46 void virtsnd_ctl_msg_unref(struct virtio_snd_msg *msg)
48 if (refcount_dec_and_test(&msg->ref_count))
49 kfree(msg);
54 * @msg: Control message.
58 void *virtsnd_ctl_msg_request(struct virtio_snd_msg *msg)
60 return sg_virt(&msg->sg_request);
65 * @msg: Control message.
69 void *virtsnd_ctl_msg_response(struct virtio_snd_msg *msg)
71 return sg_virt(&msg->sg_response);
88 struct virtio_snd_msg *msg;
93 msg = kzalloc(sizeof(*msg) + request_size + response_size, gfp);
94 if (!msg)
97 sg_init_one(&msg->sg_request, (u8 *)msg + sizeof(*msg), request_size);
98 sg_init_one(&msg->sg_response, (u8 *)msg + sizeof(*msg) + request_size,
101 INIT_LIST_HEAD(&msg->list);
102 init_completion(&msg->notify);
104 refcount_set(&msg->ref_count, 1);
106 return msg;
112 * @msg: Control message.
121 int virtsnd_ctl_msg_send(struct virtio_snd *snd, struct virtio_snd_msg *msg,
128 struct virtio_snd_hdr *request = virtsnd_ctl_msg_request(msg);
129 struct virtio_snd_hdr *response = virtsnd_ctl_msg_response(msg);
136 virtsnd_ctl_msg_ref(msg);
141 psgs[nouts++] = &msg->sg_request;
145 psgs[nouts + nins++] = &msg->sg_response;
150 rc = virtqueue_add_sgs(queue->vqueue, psgs, nouts, nins, msg,
155 list_add_tail(&msg->list, &snd->ctl_msgs);
167 virtsnd_ctl_msg_unref(msg);
178 rc = wait_for_completion_interruptible_timeout(&msg->notify, js);
206 virtsnd_ctl_msg_unref(msg);
213 * @msg: Control message.
218 void virtsnd_ctl_msg_complete(struct virtio_snd_msg *msg)
220 list_del(&msg->list);
221 complete(&msg->notify);
223 virtsnd_ctl_msg_unref(msg);
238 struct virtio_snd_msg *msg =
242 virtsnd_ctl_msg_complete(msg);
261 struct virtio_snd_msg *msg;
265 msg = virtsnd_ctl_msg_alloc(sizeof(*query),
267 if (!msg)
270 query = virtsnd_ctl_msg_request(msg);
278 return virtsnd_ctl_msg_send(snd, msg, NULL, &sg, false);
294 struct virtio_snd_msg *msg;
300 while ((msg = virtqueue_get_buf(vqueue, &length)))
301 virtsnd_ctl_msg_complete(msg);