[ddk][test] Switch usb-request-test to BTI based allocation calls
Change-Id: Ib10384cbfec3261d673b5c547521f37996b93b23
diff --git a/system/ulib/ddk/test/usb-request-test.c b/system/ulib/ddk/test/usb-request-test.c
index c622a57..6103b1e 100644
--- a/system/ulib/ddk/test/usb-request-test.c
+++ b/system/ulib/ddk/test/usb-request-test.c
@@ -5,11 +5,21 @@
#include <limits.h>
#include <ddk/usb-request.h>
#include <unittest/unittest.h>
+#include <zircon/syscalls/iommu.h>
+
+extern zx_handle_t get_root_resource(void);
static bool test_alloc_simple(void) {
BEGIN_TEST;
+ zx_handle_t iommu_handle;
+ zx_handle_t bti_handle;
+ zx_iommu_desc_dummy_t desc;
+ ASSERT_EQ(zx_iommu_create(get_root_resource(), ZX_IOMMU_TYPE_DUMMY, &desc, sizeof(desc),
+ &iommu_handle), ZX_OK, "");
+ ASSERT_EQ(zx_bti_create(iommu_handle, 0, 0, &bti_handle), ZX_OK, "");
+
usb_request_t* req;
- ASSERT_EQ(usb_request_alloc(&req, PAGE_SIZE * 3, 1), ZX_OK, "");
+ ASSERT_EQ(usb_request_alloc_with_bti(&req, bti_handle, PAGE_SIZE * 3, 1), ZX_OK, "");
ASSERT_NONNULL(req, "");
ASSERT_TRUE(io_buffer_is_valid(&req->buffer), "");
@@ -18,17 +28,25 @@
ASSERT_EQ(req->buffer.phys_count, 3u, "unexpected phys count");
usb_request_release(req);
+ zx_handle_close(bti_handle);
+ zx_handle_close(iommu_handle);
END_TEST;
}
static bool test_alloc_vmo(void) {
BEGIN_TEST;
+ zx_handle_t iommu_handle;
+ zx_handle_t bti_handle;
+ zx_iommu_desc_dummy_t desc;
+ ASSERT_EQ(zx_iommu_create(get_root_resource(), ZX_IOMMU_TYPE_DUMMY, &desc, sizeof(desc),
+ &iommu_handle), ZX_OK, "");
+ ASSERT_EQ(zx_bti_create(iommu_handle, 0, 0, &bti_handle), ZX_OK, "");
zx_handle_t vmo;
ASSERT_EQ(zx_vmo_create(PAGE_SIZE * 4, 0, &vmo), ZX_OK, "");
usb_request_t* req;
- ASSERT_EQ(usb_request_alloc_vmo(&req, vmo, PAGE_SIZE, PAGE_SIZE * 3, 0), ZX_OK, "");
+ ASSERT_EQ(usb_request_alloc_vmo_with_bti(&req, bti_handle, vmo, PAGE_SIZE, PAGE_SIZE * 3, 0), ZX_OK, "");
// Try copying some random data to and from the request.
void* data = malloc(PAGE_SIZE * 4);
@@ -44,18 +62,27 @@
free(data);
free(out_data);
usb_request_release(req);
+ zx_handle_close(bti_handle);
+ zx_handle_close(iommu_handle);
END_TEST;
}
static bool test_pool(void) {
BEGIN_TEST;
+ zx_handle_t iommu_handle;
+ zx_handle_t bti_handle;
+ zx_iommu_desc_dummy_t desc;
+ ASSERT_EQ(zx_iommu_create(get_root_resource(), ZX_IOMMU_TYPE_DUMMY, &desc, sizeof(desc),
+ &iommu_handle), ZX_OK, "");
+ ASSERT_EQ(zx_bti_create(iommu_handle, 0, 0, &bti_handle), ZX_OK, "");
+
usb_request_t* req;
- ASSERT_EQ(usb_request_alloc(&req, 8u, 1), ZX_OK, "");
+ ASSERT_EQ(usb_request_alloc_with_bti(&req, bti_handle, 8u, 1), ZX_OK, "");
ASSERT_NONNULL(req, "");
ASSERT_TRUE(io_buffer_is_valid(&req->buffer), "");
usb_request_t* zero_req;
- ASSERT_EQ(usb_request_alloc(&zero_req, 0, 1), ZX_OK, "");
+ ASSERT_EQ(usb_request_alloc_with_bti(&zero_req, bti_handle, 0, 1), ZX_OK, "");
ASSERT_NONNULL(zero_req, "");
usb_request_pool_t pool;
@@ -71,6 +98,8 @@
usb_request_release(req);
usb_request_release(zero_req);
+ zx_handle_close(bti_handle);
+ zx_handle_close(iommu_handle);
END_TEST;
}