xref: /qemu/include/hw/virtio/iothread-vq-mapping.h (revision 0462a32b4f63b2448b4a196381138afd50719dc4)
1*b50629c3SStefan Hajnoczi /*
2*b50629c3SStefan Hajnoczi  * IOThread Virtqueue Mapping
3*b50629c3SStefan Hajnoczi  *
4*b50629c3SStefan Hajnoczi  * Copyright Red Hat, Inc
5*b50629c3SStefan Hajnoczi  *
6*b50629c3SStefan Hajnoczi  * SPDX-License-Identifier: GPL-2.0-only
7*b50629c3SStefan Hajnoczi  */
8*b50629c3SStefan Hajnoczi 
9*b50629c3SStefan Hajnoczi #ifndef HW_VIRTIO_IOTHREAD_VQ_MAPPING_H
10*b50629c3SStefan Hajnoczi #define HW_VIRTIO_IOTHREAD_VQ_MAPPING_H
11*b50629c3SStefan Hajnoczi 
12*b50629c3SStefan Hajnoczi #include "qapi/error.h"
13*b50629c3SStefan Hajnoczi #include "qapi/qapi-types-virtio.h"
14*b50629c3SStefan Hajnoczi 
15*b50629c3SStefan Hajnoczi /**
16*b50629c3SStefan Hajnoczi  * iothread_vq_mapping_apply:
17*b50629c3SStefan Hajnoczi  * @list: The mapping of virtqueues to IOThreads.
18*b50629c3SStefan Hajnoczi  * @vq_aio_context: The array of AioContext pointers to fill in.
19*b50629c3SStefan Hajnoczi  * @num_queues: The length of @vq_aio_context.
20*b50629c3SStefan Hajnoczi  * @errp: If an error occurs, a pointer to the area to store the error.
21*b50629c3SStefan Hajnoczi  *
22*b50629c3SStefan Hajnoczi  * Fill in the AioContext for each virtqueue in the @vq_aio_context array given
23*b50629c3SStefan Hajnoczi  * the iothread-vq-mapping parameter in @list.
24*b50629c3SStefan Hajnoczi  *
25*b50629c3SStefan Hajnoczi  * iothread_vq_mapping_cleanup() must be called to free IOThread object
26*b50629c3SStefan Hajnoczi  * references after this function returns success.
27*b50629c3SStefan Hajnoczi  *
28*b50629c3SStefan Hajnoczi  * Returns: %true on success, %false on failure.
29*b50629c3SStefan Hajnoczi  **/
30*b50629c3SStefan Hajnoczi bool iothread_vq_mapping_apply(
31*b50629c3SStefan Hajnoczi         IOThreadVirtQueueMappingList *list,
32*b50629c3SStefan Hajnoczi         AioContext **vq_aio_context,
33*b50629c3SStefan Hajnoczi         uint16_t num_queues,
34*b50629c3SStefan Hajnoczi         Error **errp);
35*b50629c3SStefan Hajnoczi 
36*b50629c3SStefan Hajnoczi /**
37*b50629c3SStefan Hajnoczi  * iothread_vq_mapping_cleanup:
38*b50629c3SStefan Hajnoczi  * @list: The mapping of virtqueues to IOThreads.
39*b50629c3SStefan Hajnoczi  *
40*b50629c3SStefan Hajnoczi  * Release IOThread object references that were acquired by
41*b50629c3SStefan Hajnoczi  * iothread_vq_mapping_apply().
42*b50629c3SStefan Hajnoczi  */
43*b50629c3SStefan Hajnoczi void iothread_vq_mapping_cleanup(IOThreadVirtQueueMappingList *list);
44*b50629c3SStefan Hajnoczi 
45*b50629c3SStefan Hajnoczi #endif /* HW_VIRTIO_IOTHREAD_VQ_MAPPING_H */
46