From b9c94bc29cd96898308f1a8f5273d69c70270e7f Mon Sep 17 00:00:00 2001 From: Robbie King Date: Wed, 14 Jan 2015 23:48:22 +0100 Subject: api: cpumask: add odp_cpumask_first To get the first element in order to be able to traverse a mask. Signed-off-by: Robbie King Signed-off-by: Anders Roxell Reviewed-by: Petri Savolainen Signed-off-by: Maxim Uvarov --- platform/linux-generic/include/api/odp_cpumask.h | 7 +++++++ platform/linux-generic/odp_cpumask.c | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/platform/linux-generic/include/api/odp_cpumask.h b/platform/linux-generic/include/api/odp_cpumask.h index 0090f9abe..cccbb6215 100644 --- a/platform/linux-generic/include/api/odp_cpumask.h +++ b/platform/linux-generic/include/api/odp_cpumask.h @@ -131,6 +131,13 @@ int odp_cpumask_equal(const odp_cpumask_t *mask1, */ void odp_cpumask_copy(odp_cpumask_t *dest, const odp_cpumask_t *src); +/** + * Find first bit set in mask + * + * @return cpu else -1 if no bits set in cpumask + */ +int odp_cpumask_first(const odp_cpumask_t *mask); + /** * @} */ diff --git a/platform/linux-generic/odp_cpumask.c b/platform/linux-generic/odp_cpumask.c index 6be7f1e8e..a3bb1767a 100644 --- a/platform/linux-generic/odp_cpumask.c +++ b/platform/linux-generic/odp_cpumask.c @@ -175,3 +175,13 @@ void odp_cpumask_copy(odp_cpumask_t *dest, const odp_cpumask_t *src) { memcpy(&dest->set, &src->set, sizeof(src->set)); } + +int odp_cpumask_first(const odp_cpumask_t *mask) +{ + int cpu; + + for (cpu = 0; cpu < CPU_SETSIZE; cpu++) + if (odp_cpumask_isset(mask, cpu)) + return cpu; + return -1; +} -- cgit v1.2.3