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

Re: [Xen-devel] [PATCH 2/2] hvc_xen: implement multiconsole support



> +static int xencons_remove(struct xenbus_device *dev)
> +{
> +     struct xencons_info *info = dev_get_drvdata(&dev->dev);
> +
> +     spin_lock(&xencons_lock);
> +     list_del(&info->list);
> +     spin_unlock(&xencons_lock);
> +     xencons_free(info);
>       return 0;
>  }
.. snip..
>  static void __exit xen_hvc_fini(void)
>  {
> -     if (hvc)
> -             hvc_remove(hvc);
> +     struct xencons_info *entry, *next;
> +
> +     if (list_empty(&xenconsoles))
> +                     return;
> +
> +     spin_lock(&xencons_lock);

You take a lock.
> +     list_for_each_entry_safe(entry, next, &xenconsoles, list) {
> +             list_del(&entry->list);
> +             if (entry->xbdev)
> +                     xencons_remove(entry->xbdev);

And then call xencons_remove which also takes the same lock.
> +             else {
> +                     if (entry->irq > 0)
> +                             unbind_from_irqhandler(entry->irq, NULL);
> +                     if (entry->hvc);
> +                             hvc_remove(entry->hvc);
> +                     kfree(entry);
> +             }
> +     }
> +     spin_unlock(&xencons_lock);

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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