[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH 4/9] plat/xen/drivers/9p: Add device list



Reviewed-by: Costin Lupu <costin.lupu@xxxxxxxxx>

On 9/7/19 1:21 PM, Vlad-Andrei BĂDOIU (78692) wrote:
> From: Cristian Banu <cristb@xxxxxxxxx>
> 
> This patch adds the 9pfront device list. 9pfront devices are added to
> the list when probed.
> 
> Signed-off-by: Cristian Banu <cristb@xxxxxxxxx>
> ---
>  plat/xen/drivers/9p/9pfront.c | 46 ++++++++++++++++++++++++++++++++---
>  plat/xen/drivers/9p/9pfront.h |  2 ++
>  2 files changed, 45 insertions(+), 3 deletions(-)
> 
> diff --git a/plat/xen/drivers/9p/9pfront.c b/plat/xen/drivers/9p/9pfront.c
> index 8c9880e8..f289cd05 100644
> --- a/plat/xen/drivers/9p/9pfront.c
> +++ b/plat/xen/drivers/9p/9pfront.c
> @@ -32,18 +32,58 @@
>   * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
>   */
>  
> +#include <uk/config.h>
> +#include <uk/alloc.h>
> +#include <uk/assert.h>
> +#include <uk/essentials.h>
> +#include <uk/list.h>
> +#include <uk/plat/spinlock.h>
>  #include <xenbus/xenbus.h>
>  
> +#include "9pfront_xb.h"
> +
>  #define DRIVER_NAME  "xen-9pfront"
>  
> -static int p9front_drv_init(struct uk_alloc *drv_allocator __unused)
> +static struct uk_alloc *a;
> +static UK_LIST_HEAD(p9front_device_list);
> +static DEFINE_SPINLOCK(p9front_device_list_lock);
> +
> +static int p9front_drv_init(struct uk_alloc *drv_allocator)
>  {
> +     if (!drv_allocator)
> +             return -EINVAL;
> +
> +     a = drv_allocator;
> +
>       return 0;
>  }
>  
> -static int p9front_add_dev(struct xenbus_device *xendev __unused)
> +static int p9front_add_dev(struct xenbus_device *xendev)
>  {
> -     return 0;
> +     struct p9front_dev *p9fdev;
> +     int rc;
> +     unsigned long flags;
> +
> +     p9fdev = uk_calloc(a, 1, sizeof(*p9fdev));
> +     if (!p9fdev) {
> +             rc = -ENOMEM;
> +             goto out;
> +     }
> +
> +     p9fdev->xendev = xendev;
> +     rc = p9front_xb_init(p9fdev);
> +     if (rc)
> +             goto out_free;
> +
> +     rc = 0;
> +     ukplat_spin_lock_irqsave(&p9front_device_list_lock, flags);
> +     uk_list_add(&p9fdev->_list, &p9front_device_list);
> +     ukplat_spin_unlock_irqrestore(&p9front_device_list_lock, flags);
> +
> +out_free:
> +     uk_free(a, p9fdev);
> +out:
> +     return rc;
>  }
>  
>  static const xenbus_dev_type_t p9front_devtypes[] = {
> diff --git a/plat/xen/drivers/9p/9pfront.h b/plat/xen/drivers/9p/9pfront.h
> index 0dd99d6c..e77f315a 100644
> --- a/plat/xen/drivers/9p/9pfront.h
> +++ b/plat/xen/drivers/9p/9pfront.h
> @@ -42,6 +42,8 @@
>  struct p9front_dev {
>       /* Xenbus device. */
>       struct xenbus_device *xendev;
> +     /* Entry within the 9pfront device list. */
> +     struct uk_list_head _list;
>       /* Number of maximum rings, read from xenstore. */
>       int nb_max_rings;
>       /* Maximum ring page order, read from xenstore. */
> 

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.