[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v3 04/14] plat/drivers: Register virtio-blk with libukblkdev
This patch registers virtio-blk with libukblkdev. Signed-off-by: Roxana Nicolescu <nicolescu.roxana1996@xxxxxxxxx> --- plat/drivers/virtio/virtio_blk.c | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/plat/drivers/virtio/virtio_blk.c b/plat/drivers/virtio/virtio_blk.c index 89fd1779..884f86d9 100644 --- a/plat/drivers/virtio/virtio_blk.c +++ b/plat/drivers/virtio/virtio_blk.c @@ -19,20 +19,58 @@ */ /* Taken and adapted from virtio-net because of consistency reason. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <uk/print.h> +#include <errno.h> +#include <fcntl.h> #include <virtio/virtio_bus.h> #include <virtio/virtio_ids.h> +#include <uk/blkdev.h> +#include <uk/blkdev_driver.h> #define DRIVER_NAME "virtio-blk" +#define to_virtioblkdev(bdev) \ + __containerof(bdev, struct virtio_blk_device, blkdev) + + static struct uk_alloc *a; +static const char *drv_name = DRIVER_NAME; + +struct virtio_blk_device { + /* Pointer to Unikraft Block Device */ + struct uk_blkdev blkdev; + /* The blkdevice identifier */ + __u16 uid; +}; static int virtio_blk_add_dev(struct virtio_dev *vdev) { + struct virtio_blk_device *vbdev; int rc = 0; UK_ASSERT(vdev != NULL); + vbdev = uk_calloc(a, 1, sizeof(*vbdev)); + if (!vbdev) + return -ENOMEM; + + rc = uk_blkdev_drv_register(&vbdev->blkdev, a, drv_name); + if (rc < 0) { + uk_pr_err("Failed to register virtio_blk device: %d\n", rc); + goto err_out; + } + + vbdev->uid = rc; + uk_pr_info("Virtio-blk device registered with libukblkdev\n"); + +out: return rc; +err_out: + uk_free(a, vbdev); + goto out; } static int virtio_blk_drv_init(struct uk_alloc *drv_allocator) -- 2.17.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |