On 09/08/15 16:04, Alexandru Badicioiu wrote:
I agree, at least in my case some CPUs are assigned at boot time for
dataplane work and cannot be changed.
Alex
Alex, how do you run validation tests then? Do you have your own variant
of odp helper to create threads?
Maxim.
On 8 September 2015 at 15:57, Savolainen, Petri (Nokia - FI/Espoo)
<[email protected] <mailto:[email protected]>> wrote:
I'm wondering the use case for asking only the default number of
CPUs suitable for worker threads (without asking CPU IDs).
I think application should ask the mask (and number of cpus) once
and store the information for later use.
-Petri
> -----Original Message-----
> From: lng-odp [mailto:[email protected]
<mailto:[email protected]>] On Behalf Of
> ext Maxim Uvarov
> Sent: Tuesday, September 08, 2015 1:31 PM
> To: [email protected] <mailto:[email protected]>
> Subject: [lng-odp] [API-NEXT PATCH 3/4] api:
odp_cpumask_default_ mask
> argument can be null
>
> 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]
<mailto:[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] <mailto:[email protected]>
> https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
[email protected] <mailto:[email protected]>
https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp