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);
137 virtsnd_ctl_msg_ref(msg);
142 psgs[nouts++] = &msg->sg_request;
146 psgs[nouts + nins++] = &msg->sg_response;
151 rc = virtqueue_add_sgs(queue->vqueue, psgs, nouts, nins, msg,
156 list_add_tail(&msg->list, &snd->ctl_msgs);
168 virtsnd_ctl_msg_unref(msg);
179 rc = wait_for_completion_interruptible_timeout(&msg->notify, js);
207 virtsnd_ctl_msg_unref(msg);
214 * @msg: Control message.
219 void virtsnd_ctl_msg_complete(struct virtio_snd_msg *msg)
221 list_del(&msg->list);
222 complete(&msg->notify);
224 virtsnd_ctl_msg_unref(msg);
240 struct virtio_snd_msg *msg =
244 virtsnd_ctl_msg_complete(msg);
264 struct virtio_snd_msg *msg;
268 msg = virtsnd_ctl_msg_alloc(sizeof(*query),
270 if (!msg)
273 query = virtsnd_ctl_msg_request(msg);
281 return virtsnd_ctl_msg_send(snd, msg, NULL, &sg, false);
297 struct virtio_snd_msg *msg;
304 while ((msg = virtqueue_get_buf(vqueue, &length)))
305 virtsnd_ctl_msg_complete(msg);