diff options
author | Tuomas Taipale <tuomas.taipale@nokia.com> | 2023-02-03 09:46:20 +0000 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2023-02-07 09:12:15 +0200 |
commit | f198108bd0c6210b4dc49df4a3fe5429f526d028 (patch) | |
tree | 3d4eab2c698ae1898762a18f97d23ed1aaf4481c /test | |
parent | ab179ac6e4cff11c9bb319cec86e306f1227a878 (diff) |
validation: dma: validate user context pointer value
In addition to checking that DMA implementation passes the user context
pointer of completion parameters as is back to application (in poll and
event completion cases), check also that the value pointed to by it remains
unchanged.
Signed-off-by: Tuomas Taipale <tuomas.taipale@nokia.com>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/validation/api/dma/dma.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/test/validation/api/dma/dma.c b/test/validation/api/dma/dma.c index 8eb75b172..f3e967193 100644 --- a/test/validation/api/dma/dma.c +++ b/test/validation/api/dma/dma.c @@ -19,6 +19,7 @@ #define TRAILER 10 #define MULTI 1 #define RESULT 1 +#define USER_DATA 0xdeadbeef typedef struct global_t { odp_dma_capability_t dma_capa; @@ -385,12 +386,13 @@ static int do_transfer_async(odp_dma_t dma, const odp_dma_transfer_param_t *trs_ odp_dma_compl_param_t compl_param; odp_event_t ev; odp_dma_compl_t compl; - int i, ret, done, dummy; + int i, ret, done; + uint32_t user_data = USER_DATA; odp_dma_result_t result; odp_dma_transfer_id_t transfer_id = ODP_DMA_TRANSFER_ID_INVALID; uint64_t wait_ns = 500 * ODP_TIME_MSEC_IN_NS; uint64_t sched_wait = odp_schedule_wait_time(wait_ns); - void *user_ptr = &dummy; + void *user_ptr = &user_data; odp_dma_compl_param_init(&compl_param); compl_param.compl_mode = compl_mode; @@ -452,6 +454,7 @@ static int do_transfer_async(odp_dma_t dma, const odp_dma_transfer_param_t *trs_ CU_ASSERT(done == 1); CU_ASSERT(result.success); CU_ASSERT(result.user_ptr == user_ptr); + CU_ASSERT(user_data == USER_DATA); odp_dma_transfer_id_free(dma, transfer_id); @@ -479,6 +482,7 @@ static int do_transfer_async(odp_dma_t dma, const odp_dma_transfer_param_t *trs_ CU_ASSERT(odp_dma_compl_result(compl, &result) == 0); CU_ASSERT(result.success); CU_ASSERT(result.user_ptr == user_ptr); + CU_ASSERT(user_data == USER_DATA); /* Test also without result struct output */ CU_ASSERT(odp_dma_compl_result(compl, NULL) == 0); |