From 8d6eaae3d78cca10a5d1c270a848b935c0a5d397 Mon Sep 17 00:00:00 2001 From: Bowen Wang Date: Sun, 17 Aug 2025 16:51:50 +0800 Subject: [PATCH] include/nuttx/virtio: allow common virtio helpers to be used by vhost Move common virtio inline functions (virtqueue_kick_lock, virtio_malloc_buf, virtio_zalloc_buf, etc.) from CONFIG_DRIVERS_VIRTIO guard to CONFIG_OPENAMP guard. This allows vhost drivers to reuse these helper functions without requiring the full virtio driver framework. The virtio_driver structure and driver registration APIs remain under CONFIG_DRIVERS_VIRTIO as they are specific to virtio device drivers. Signed-off-by: Bowen Wang --- include/nuttx/virtio/virtio.h | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/include/nuttx/virtio/virtio.h b/include/nuttx/virtio/virtio.h index 98dafb4573d..a22ff35a3c0 100644 --- a/include/nuttx/virtio/virtio.h +++ b/include/nuttx/virtio/virtio.h @@ -33,7 +33,7 @@ #include #include -#ifdef CONFIG_DRIVERS_VIRTIO +#ifdef CONFIG_OPENAMP #include @@ -41,6 +41,7 @@ * Public Type Definitions ****************************************************************************/ +#ifdef CONFIG_DRIVERS_VIRTIO struct virtio_driver { struct list_node node; @@ -48,6 +49,7 @@ struct virtio_driver CODE int (*probe)(FAR struct virtio_device *vdev); CODE void (*remove)(FAR struct virtio_device *vdev); }; +#endif /**************************************************************************** * Inline functions @@ -175,18 +177,6 @@ static inline_function void virtqueue_kick_lock(FAR struct virtqueue *vq, spin_unlock_irqrestore(lock, flags); } -/**************************************************************************** - * Public Function Prototypes - ****************************************************************************/ - -#ifdef __cplusplus -#define EXTERN extern "C" -extern "C" -{ -#else -#define EXTERN extern -#endif - static inline_function FAR void * virtio_malloc_buf(FAR struct virtio_device *vdev, size_t size, size_t align) { @@ -214,6 +204,22 @@ virtio_zalloc_buf(FAR struct virtio_device *vdev, size_t size, size_t align) return buf; } +#endif /* CONFIG_OPENAMP */ + +#ifdef CONFIG_DRIVERS_VIRTIO + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" +{ +#else +#define EXTERN extern +#endif + /* Driver and device register/unregister function */ int virtio_register_driver(FAR struct virtio_driver *driver);