diff options
author | Juergen Gross <jgross@suse.com> | 2022-04-28 09:01:03 +0200 |
---|---|---|
committer | Juergen Gross <jgross@suse.com> | 2022-05-19 14:21:55 +0200 |
commit | 7050096d07755c53f71e486af18475050cc4e04b (patch) | |
tree | d349d6a8581287ad96ceb2c563adc2ecc0ef4f5a /include/xen | |
parent | 6fac592cca60dca0b2a524c303c83e958c2003bb (diff) | |
download | lwn-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.h | 4 |
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); |