aboutsummaryrefslogtreecommitdiff
path: root/test/mocks.c
diff options
context:
space:
mode:
authorThanos Makatos <thanos.makatos@nutanix.com>2021-03-01 11:19:50 +0000
committerGitHub <noreply@github.com>2021-03-01 11:19:50 +0000
commitf1057091f5eb2b7a91a2423503aea1c340f16831 (patch)
tree85af251cd6342123eaaa3cdf2d77b5e32f2fcac4 /test/mocks.c
parentbb0ea196f62bfad9f4ef89ab20824a16644c6b0e (diff)
downloadlibvfio-user-f1057091f5eb2b7a91a2423503aea1c340f16831.zip
libvfio-user-f1057091f5eb2b7a91a2423503aea1c340f16831.tar.gz
libvfio-user-f1057091f5eb2b7a91a2423503aea1c340f16831.tar.bz2
don't call user's unmap_dma callback when removing DMA region (#370)
Plus unit tests. Signed-off-by: Thanos Makatos <thanos.makatos@nutanix.com> Reported-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: John Levon <john.levon@nutanix.com>
Diffstat (limited to 'test/mocks.c')
-rw-r--r--test/mocks.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/mocks.c b/test/mocks.c
index 6302eff..0d63ed1 100644
--- a/test/mocks.c
+++ b/test/mocks.c
@@ -66,6 +66,24 @@ __wrap_dma_controller_add_region(dma_controller_t *dma, dma_addr_t dma_addr,
return mock();
}
+int
+__wrap_dma_controller_remove_region(dma_controller_t *dma,
+ dma_addr_t dma_addr, size_t size,
+ vfu_unmap_dma_cb_t *unmap_dma, void *data)
+{
+ if (!is_patched(dma_controller_remove_region)) {
+ return __real_dma_controller_remove_region(dma, dma_addr, size,
+ unmap_dma, data);
+ }
+
+ check_expected(dma);
+ check_expected(dma_addr);
+ check_expected(size);
+ check_expected(unmap_dma);
+ check_expected(data);
+ return mock();
+}
+
void *
__wrap_dma_map_region(dma_memory_region_t *region, int prot, size_t offset,
size_t len)
@@ -256,6 +274,7 @@ __wrap_handle_dirty_pages(vfu_ctx_t *vfu_ctx, uint32_t size,
/* FIXME should be something faster than unsorted array, look at tsearch(3). */
static struct function funcs[] = {
{.addr = &__wrap_dma_controller_add_region},
+ {.addr = &__wrap_dma_controller_remove_region},
{.addr = &__wrap_dma_map_region},
{.addr = &__wrap__dma_controller_do_remove_region},
{.addr = &__wrap_device_is_stopped},