diff options
author | Thanos Makatos <thanos.makatos@nutanix.com> | 2020-12-17 15:52:18 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-17 15:52:18 +0000 |
commit | a764a3d66eb5a04dea769be15d88ef0ac4e5a5ea (patch) | |
tree | e78b28a2ec436ff9550bcaea765683311bcb7989 /test/unit-tests.c | |
parent | ff70ca1a9f97feae62e326eca39624c13aa8117f (diff) | |
download | libvfio-user-a764a3d66eb5a04dea769be15d88ef0ac4e5a5ea.zip libvfio-user-a764a3d66eb5a04dea769be15d88ef0ac4e5a5ea.tar.gz libvfio-user-a764a3d66eb5a04dea769be15d88ef0ac4e5a5ea.tar.bz2 |
add mappable bit in DMA segment (#215)
remove duplicate code for initializing DMA segment, mark DMA segment whether it's mappable, plus basic unit test for dma_addr_to_sg
Signed-off-by: Thanos Makatos <thanos.makatos@nutanix.com>
Diffstat (limited to 'test/unit-tests.c')
-rw-r--r-- | test/unit-tests.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/unit-tests.c b/test/unit-tests.c index 6355843..9063038 100644 --- a/test/unit-tests.c +++ b/test/unit-tests.c @@ -681,6 +681,31 @@ test_dma_map_sg(void **state __attribute__((unused))) } static void +test_dma_addr_to_sg(void **state __attribute__((unused))) +{ + dma_controller_t *dma = alloca(sizeof(dma_controller_t) + sizeof(dma_memory_region_t)); + dma_sg_t sg; + dma_memory_region_t *r; + + dma->nregions = 1; + r = &dma->regions[0]; + r->dma_addr = 0x1000; + r->size = 0x4000; + r->virt_addr = (void*)0xdeadbeef; + + /* fast path, region hint hit */ + assert_int_equal(1, + dma_addr_to_sg(dma, 0x2000, 0x400, &sg, 1, PROT_NONE)); + assert_int_equal(r->dma_addr, sg.dma_addr); + assert_int_equal(0, sg.region); + assert_int_equal(0x2000 - r->dma_addr, sg.offset); + assert_int_equal(0x400, sg.length); + assert_true(sg.mappable); + + /* TODO test more scenarios */ +} + +static void test_vfu_setup_device_dma_cb(void **state __attribute__((unused))) { vfu_ctx_t vfu_ctx = { 0 }; @@ -722,6 +747,7 @@ int main(void) cmocka_unit_test_setup(test_setup_sparse_region, setup), cmocka_unit_test_setup(test_dma_map_return_value, setup), cmocka_unit_test_setup(test_dma_map_sg, setup), + cmocka_unit_test_setup(test_dma_addr_to_sg, setup), cmocka_unit_test_setup(test_vfu_setup_device_dma_cb, setup) }; |