aboutsummaryrefslogtreecommitdiff
path: root/lib/dma.c
diff options
context:
space:
mode:
authorSwapnil Ingle <swapnil.ingle@nutanix.com>2020-10-01 12:14:07 -0400
committerSwapnil Ingle <swapnil.ingle@nutanix.com>2020-10-05 05:05:41 -0400
commit4ad019145eb7e7420ff1d3f2aebc8ef5b1b33524 (patch)
treeee62a799f2a7d470a0e79bd7c617090369907d0d /lib/dma.c
parentb115b6a87dd8e0c5277dde2fceb5b2a862c3484b (diff)
downloadlibvfio-user-4ad019145eb7e7420ff1d3f2aebc8ef5b1b33524.zip
libvfio-user-4ad019145eb7e7420ff1d3f2aebc8ef5b1b33524.tar.gz
libvfio-user-4ad019145eb7e7420ff1d3f2aebc8ef5b1b33524.tar.bz2
dma: add api to validate dma region
Signed-off-by: Swapnil Ingle <swapnil.ingle@nutanix.com>
Diffstat (limited to 'lib/dma.c')
-rw-r--r--lib/dma.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/dma.c b/lib/dma.c
index 3d005cb..2204669 100644
--- a/lib/dma.c
+++ b/lib/dma.c
@@ -106,6 +106,23 @@ _dma_controller_do_remove_region(dma_controller_t *dma,
}
}
+bool
+dma_controller_region_valid(dma_controller_t *dma, dma_addr_t dma_addr,
+ size_t size)
+{
+ dma_memory_region_t *region;
+ int i;
+
+ for (i = 0; i < dma->nregions; i++) {
+ region = &dma->regions[i];
+ if (dma_addr == region->dma_addr && size <= region->size) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
/* FIXME not thread safe */
int
dma_controller_remove_region(dma_controller_t *dma,