From: Stefan Hajnoczi Date: Thu, 24 Sep 2020 15:15:48 +0000 (+0100) Subject: util/vhost-user-server: move header to include/ X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=80a06cc52bcf7a9771407306991a816834c04941;p=qemu.git util/vhost-user-server: move header to include/ Headers used by other subsystems are located in include/. Also add the vhost-user-server and vhost-user-blk-server headers to MAINTAINERS. Signed-off-by: Stefan Hajnoczi Message-id: 20200924151549.913737-13-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi --- diff --git a/MAINTAINERS b/MAINTAINERS index 2789952a30..ef6f5c7399 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3073,8 +3073,10 @@ Vhost-user block device backend server M: Coiby Xu S: Maintained F: block/export/vhost-user-blk-server.c -F: util/vhost-user-server.c +F: block/export/vhost-user-blk-server.h +F: include/qemu/vhost-user-server.h F: tests/qtest/libqos/vhost-user-blk.c +F: util/vhost-user-server.c Replication M: Wen Congyang diff --git a/block/export/vhost-user-blk-server.c b/block/export/vhost-user-blk-server.c index 3e5bd6caee..f7021cbd7b 100644 --- a/block/export/vhost-user-blk-server.c +++ b/block/export/vhost-user-blk-server.c @@ -13,7 +13,7 @@ #include "block/block.h" #include "contrib/libvhost-user/libvhost-user.h" #include "standard-headers/linux/virtio_blk.h" -#include "util/vhost-user-server.h" +#include "qemu/vhost-user-server.h" #include "vhost-user-blk-server.h" #include "qapi/error.h" #include "qom/object_interfaces.h" diff --git a/include/qemu/vhost-user-server.h b/include/qemu/vhost-user-server.h new file mode 100644 index 0000000000..0da4c2cc4c --- /dev/null +++ b/include/qemu/vhost-user-server.h @@ -0,0 +1,65 @@ +/* + * Sharing QEMU devices via vhost-user protocol + * + * Copyright (c) Coiby Xu . + * Copyright (c) 2020 Red Hat, Inc. + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * later. See the COPYING file in the top-level directory. + */ + +#ifndef VHOST_USER_SERVER_H +#define VHOST_USER_SERVER_H + +#include "contrib/libvhost-user/libvhost-user.h" +#include "io/channel-socket.h" +#include "io/channel-file.h" +#include "io/net-listener.h" +#include "qemu/error-report.h" +#include "qapi/error.h" +#include "standard-headers/linux/virtio_blk.h" + +/* A kick fd that we monitor on behalf of libvhost-user */ +typedef struct VuFdWatch { + VuDev *vu_dev; + int fd; /*kick fd*/ + void *pvt; + vu_watch_cb cb; + QTAILQ_ENTRY(VuFdWatch) next; +} VuFdWatch; + +/** + * VuServer: + * A vhost-user server instance with user-defined VuDevIface callbacks. + * Vhost-user device backends can be implemented using VuServer. VuDevIface + * callbacks and virtqueue kicks run in the given AioContext. + */ +typedef struct { + QIONetListener *listener; + QEMUBH *restart_listener_bh; + AioContext *ctx; + int max_queues; + const VuDevIface *vu_iface; + + /* Protected by ctx lock */ + VuDev vu_dev; + QIOChannel *ioc; /* The I/O channel with the client */ + QIOChannelSocket *sioc; /* The underlying data channel with the client */ + QTAILQ_HEAD(, VuFdWatch) vu_fd_watches; + + Coroutine *co_trip; /* coroutine for processing VhostUserMsg */ +} VuServer; + +bool vhost_user_server_start(VuServer *server, + SocketAddress *unix_socket, + AioContext *ctx, + uint16_t max_queues, + const VuDevIface *vu_iface, + Error **errp); + +void vhost_user_server_stop(VuServer *server); + +void vhost_user_server_attach_aio_context(VuServer *server, AioContext *ctx); +void vhost_user_server_detach_aio_context(VuServer *server); + +#endif /* VHOST_USER_SERVER_H */ diff --git a/util/vhost-user-server.c b/util/vhost-user-server.c index 516999b38a..783d847a6d 100644 --- a/util/vhost-user-server.c +++ b/util/vhost-user-server.c @@ -9,8 +9,8 @@ */ #include "qemu/osdep.h" #include "qemu/main-loop.h" +#include "qemu/vhost-user-server.h" #include "block/aio-wait.h" -#include "vhost-user-server.h" /* * Theory of operation: diff --git a/util/vhost-user-server.h b/util/vhost-user-server.h deleted file mode 100644 index 0da4c2cc4c..0000000000 --- a/util/vhost-user-server.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Sharing QEMU devices via vhost-user protocol - * - * Copyright (c) Coiby Xu . - * Copyright (c) 2020 Red Hat, Inc. - * - * This work is licensed under the terms of the GNU GPL, version 2 or - * later. See the COPYING file in the top-level directory. - */ - -#ifndef VHOST_USER_SERVER_H -#define VHOST_USER_SERVER_H - -#include "contrib/libvhost-user/libvhost-user.h" -#include "io/channel-socket.h" -#include "io/channel-file.h" -#include "io/net-listener.h" -#include "qemu/error-report.h" -#include "qapi/error.h" -#include "standard-headers/linux/virtio_blk.h" - -/* A kick fd that we monitor on behalf of libvhost-user */ -typedef struct VuFdWatch { - VuDev *vu_dev; - int fd; /*kick fd*/ - void *pvt; - vu_watch_cb cb; - QTAILQ_ENTRY(VuFdWatch) next; -} VuFdWatch; - -/** - * VuServer: - * A vhost-user server instance with user-defined VuDevIface callbacks. - * Vhost-user device backends can be implemented using VuServer. VuDevIface - * callbacks and virtqueue kicks run in the given AioContext. - */ -typedef struct { - QIONetListener *listener; - QEMUBH *restart_listener_bh; - AioContext *ctx; - int max_queues; - const VuDevIface *vu_iface; - - /* Protected by ctx lock */ - VuDev vu_dev; - QIOChannel *ioc; /* The I/O channel with the client */ - QIOChannelSocket *sioc; /* The underlying data channel with the client */ - QTAILQ_HEAD(, VuFdWatch) vu_fd_watches; - - Coroutine *co_trip; /* coroutine for processing VhostUserMsg */ -} VuServer; - -bool vhost_user_server_start(VuServer *server, - SocketAddress *unix_socket, - AioContext *ctx, - uint16_t max_queues, - const VuDevIface *vu_iface, - Error **errp); - -void vhost_user_server_stop(VuServer *server); - -void vhost_user_server_attach_aio_context(VuServer *server, AioContext *ctx); -void vhost_user_server_detach_aio_context(VuServer *server); - -#endif /* VHOST_USER_SERVER_H */