summaryrefslogtreecommitdiff
path: root/include/xen
diff options
context:
space:
mode:
authorJuergen Gross <jgross@suse.com>2022-04-28 09:01:03 +0200
committerJuergen Gross <jgross@suse.com>2022-05-19 14:21:55 +0200
commit7050096d07755c53f71e486af18475050cc4e04b (patch)
treed349d6a8581287ad96ceb2c563adc2ecc0ef4f5a /include/xen
parent6fac592cca60dca0b2a524c303c83e958c2003bb (diff)
downloadlwn-7050096d07755c53f71e486af18475050cc4e04b.tar.gz
lwn-7050096d07755c53f71e486af18475050cc4e04b.zip
xen/xenbus: add xenbus_setup_ring() service function
Most PV device frontends share very similar code for setting up shared ring buffers: - allocate page(s) - init the ring admin data - give the backend access to the ring via grants Tearing down the ring requires similar actions in all frontends again: - remove grants - free the page(s) Provide service functions xenbus_setup_ring() and xenbus_teardown_ring() for that purpose. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Signed-off-by: Juergen Gross <jgross@suse.com>
Diffstat (limited to 'include/xen')
-rw-r--r--include/xen/xenbus.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/xen/xenbus.h b/include/xen/xenbus.h
index b13eb86395e0..b533b4adc835 100644
--- a/include/xen/xenbus.h
+++ b/include/xen/xenbus.h
@@ -226,6 +226,10 @@ int xenbus_watch_pathfmt(struct xenbus_device *dev, struct xenbus_watch *watch,
int xenbus_switch_state(struct xenbus_device *dev, enum xenbus_state new_state);
int xenbus_grant_ring(struct xenbus_device *dev, void *vaddr,
unsigned int nr_pages, grant_ref_t *grefs);
+int xenbus_setup_ring(struct xenbus_device *dev, gfp_t gfp, void **vaddr,
+ unsigned int nr_pages, grant_ref_t *grefs);
+void xenbus_teardown_ring(void **vaddr, unsigned int nr_pages,
+ grant_ref_t *grefs);
int xenbus_map_ring_valloc(struct xenbus_device *dev, grant_ref_t *gnt_refs,
unsigned int nr_grefs, void **vaddr);