The odp_cpumask_def_worker() and odp_cpumask_def_control() APIs are used to populate a mask with the CPUs available for running threads of the same type. This does not necessarily mean those CPUs are dedicated to running threads of that type, on a particular platform the same CPU may appear in both the control and worker set.
The test now verifies that the APIs; - populate the mask with at least 1 CPU - return a value that matches the number of CPUs set in the mask - don't return a value greater than the total available CPUsa - don't return a value greater than the requested number of CPUs Signed-off-by: Stuart Haslam <[email protected]> --- test/validation/cpumask/cpumask.c | 44 +++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/test/validation/cpumask/cpumask.c b/test/validation/cpumask/cpumask.c index 933ee97..d72569e 100644 --- a/test/validation/cpumask/cpumask.c +++ b/test/validation/cpumask/cpumask.c @@ -476,39 +476,61 @@ static void cpumask_test_odp_cpumask_setall(void) static void cpumask_test_odp_cpumask_def_control(void) { - int num; - int max_cpus = mask_capacity(); + unsigned num; + unsigned mask_count; + unsigned max_cpus = mask_capacity(); odp_cpumask_t mask; num = odp_cpumask_def_control(&mask, ALL_AVAILABLE); + mask_count = odp_cpumask_count(&mask); - CU_ASSERT(num >= 0); + CU_ASSERT(mask_count == num); + CU_ASSERT(num > 0); CU_ASSERT(num <= max_cpus); } static void cpumask_test_odp_cpumask_def_worker(void) { - int num; - int max_cpus = mask_capacity(); + unsigned num; + unsigned mask_count; + unsigned max_cpus = mask_capacity(); odp_cpumask_t mask; num = odp_cpumask_def_worker(&mask, ALL_AVAILABLE); + mask_count = odp_cpumask_count(&mask); - CU_ASSERT(num >= 0); + CU_ASSERT(mask_count == num); + CU_ASSERT(num > 0); CU_ASSERT(num <= max_cpus); } static void cpumask_test_odp_cpumask_def(void) { - int num_worker; - int num_control; - int max_cpus = mask_capacity(); + unsigned mask_count; + unsigned num_worker; + unsigned num_control; + unsigned max_cpus = mask_capacity(); + unsigned available_cpus = odp_cpu_count(); + unsigned requested_cpus; odp_cpumask_t mask; - num_worker = odp_cpumask_def_worker(&mask, max_cpus - 1); + CU_ASSERT(available_cpus <= max_cpus); + + if (available_cpus > 1) + requested_cpus = available_cpus - 1; + else + requested_cpus = available_cpus; + num_worker = odp_cpumask_def_worker(&mask, requested_cpus); + mask_count = odp_cpumask_count(&mask); + CU_ASSERT(mask_count == num_worker); + num_control = odp_cpumask_def_control(&mask, 1); + mask_count = odp_cpumask_count(&mask); + CU_ASSERT(mask_count == num_control); - CU_ASSERT((num_control + num_worker) <= max_cpus); + CU_ASSERT(num_control == 1); + CU_ASSERT(num_worker <= available_cpus); + CU_ASSERT(num_worker > 0); } static CU_TestInfo cpumask_suite[] = { -- 2.1.1 _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
