Functions odp_cpumask_default_worker and odp_cpumask_default_control can be used for calculation number of worker and control threads. In that case mask parameter can be optional.
Signed-off-by: Maxim Uvarov <[email protected]> --- include/odp/api/cpumask.h | 2 +- platform/linux-generic/odp_cpumask_task.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/odp/api/cpumask.h b/include/odp/api/cpumask.h index 4835a6c..633e106 100644 --- a/include/odp/api/cpumask.h +++ b/include/odp/api/cpumask.h @@ -199,7 +199,7 @@ int odp_cpumask_next(const odp_cpumask_t *mask, int cpu); * Initializes cpumask with CPUs available for worker threads. Sets up to 'num' * CPUs and returns the count actually set. Use zero for all available CPUs. * - * @param[out] mask CPU mask to initialize + * @param[out] mask CPU mask to initialize or NULL. * @param num Number of worker threads, zero for all available CPUs * @return Actual number of CPUs used to create the mask */ diff --git a/platform/linux-generic/odp_cpumask_task.c b/platform/linux-generic/odp_cpumask_task.c index 535891c..f8e4da4 100644 --- a/platform/linux-generic/odp_cpumask_task.c +++ b/platform/linux-generic/odp_cpumask_task.c @@ -23,7 +23,8 @@ int odp_cpumask_default_worker(odp_cpumask_t *mask, int num) if (ret != 0) ODP_ABORT("failed to read CPU affinity value\n"); - odp_cpumask_zero(mask); + if (mask) + odp_cpumask_zero(mask); /* * If no user supplied number or it's too large, then attempt @@ -35,7 +36,8 @@ int odp_cpumask_default_worker(odp_cpumask_t *mask, int num) /* build the mask, allocating down from highest numbered CPU */ for (cpu = 0, i = CPU_SETSIZE - 1; i >= 0 && cpu < num; --i) { if (CPU_ISSET(i, &cpuset)) { - odp_cpumask_set(mask, i); + if (mask) + odp_cpumask_set(mask, i); cpu++; } } @@ -45,8 +47,10 @@ int odp_cpumask_default_worker(odp_cpumask_t *mask, int num) int odp_cpumask_default_control(odp_cpumask_t *mask, int num ODP_UNUSED) { - odp_cpumask_zero(mask); - /* By default all control threads on CPU 0 */ - odp_cpumask_set(mask, 0); + if (mask) { + odp_cpumask_zero(mask); + /* By default all control threads on CPU 0 */ + odp_cpumask_set(mask, 0); + } return 1; } -- 1.9.1 _______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
