Add a new function gnttab_get_addr() to obtain a memory pointer for a
given grant reference.
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
gnttab.c | 10 ++++++++++
include/gnttab.h | 1 +
2 files changed, 11 insertions(+)
diff --git a/gnttab.c b/gnttab.c
index 6bac0905..52d6792a 100644
--- a/gnttab.c
+++ b/gnttab.c
@@ -149,6 +149,16 @@ gnttab_end_transfer(grant_ref_t ref)
}
EXPORT_SYMBOL(gnttab_end_transfer);
+void *gnttab_get_addr(grant_ref_t ref)
+{
+ BUG_ON(ref >= NR_GRANT_ENTRIES || ref < NR_RESERVED_ENTRIES);
+
+ if ( !gnttab_table[ref].flags )
+ return NULL;
+
+ return mfn_to_virt(gnttab_table[ref].frame);
+}
+
static const char * const gnttabop_error_msgs[] = GNTTABOP_error_msgs;
const char *
diff --git a/include/gnttab.h b/include/gnttab.h
index 108c4425..46e72a36 100644
--- a/include/gnttab.h
+++ b/include/gnttab.h
@@ -9,6 +9,7 @@ grant_ref_t gnttab_grant_access(domid_t domid, unsigned long frame,
grant_ref_t gnttab_grant_transfer(domid_t domid, unsigned long pfn);
unsigned long gnttab_end_transfer(grant_ref_t gref);
int gnttab_end_access(grant_ref_t ref);
+void *gnttab_get_addr(grant_ref_t ref);
const char *gnttabop_error(int16_t status);
void fini_gnttab(void);
void suspend_gnttab(void);
--
2.43.0