mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
xen/pvcalls: initialize the module and register the xenbus backend
Keep a list of connected frontends. Use a semaphore to protect list accesses. Signed-off-by: Stefano Stabellini <stefano@aporeto.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Reviewed-by: Juergen Gross <jgross@suse.com> CC: boris.ostrovsky@oracle.com CC: jgross@suse.com Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
This commit is contained in:
parent
72e59c30df
commit
9be07334f9
@ -25,6 +25,11 @@
|
||||
#include <xen/xenbus.h>
|
||||
#include <xen/interface/io/pvcalls.h>
|
||||
|
||||
struct pvcalls_back_global {
|
||||
struct list_head frontends;
|
||||
struct semaphore frontends_lock;
|
||||
} pvcalls_back_global;
|
||||
|
||||
static int pvcalls_back_probe(struct xenbus_device *dev,
|
||||
const struct xenbus_device_id *id)
|
||||
{
|
||||
@ -59,3 +64,20 @@ static struct xenbus_driver pvcalls_back_driver = {
|
||||
.uevent = pvcalls_back_uevent,
|
||||
.otherend_changed = pvcalls_back_changed,
|
||||
};
|
||||
|
||||
static int __init pvcalls_back_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!xen_domain())
|
||||
return -ENODEV;
|
||||
|
||||
ret = xenbus_register_backend(&pvcalls_back_driver);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
sema_init(&pvcalls_back_global.frontends_lock, 1);
|
||||
INIT_LIST_HEAD(&pvcalls_back_global.frontends);
|
||||
return 0;
|
||||
}
|
||||
module_init(pvcalls_back_init);
|
||||
|
Loading…
Reference in New Issue
Block a user