diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/percpu_ida.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/percpu_ida.c b/lib/percpu_ida.c index 0f51c1b556cf..b0698ea972c6 100644 --- a/lib/percpu_ida.c +++ b/lib/percpu_ida.c | |||
@@ -371,3 +371,20 @@ out: | |||
371 | return err; | 371 | return err; |
372 | } | 372 | } |
373 | EXPORT_SYMBOL_GPL(percpu_ida_for_each_free); | 373 | EXPORT_SYMBOL_GPL(percpu_ida_for_each_free); |
374 | |||
375 | /** | ||
376 | * percpu_ida_free_tags - return free tags number of a specific cpu or global pool | ||
377 | * @pool: pool related | ||
378 | * @cpu: specific cpu or global pool if @cpu == nr_cpu_ids | ||
379 | * | ||
380 | * Note: this just returns a snapshot of free tags number. | ||
381 | */ | ||
382 | unsigned percpu_ida_free_tags(struct percpu_ida *pool, int cpu) | ||
383 | { | ||
384 | struct percpu_ida_cpu *remote; | ||
385 | if (cpu == nr_cpu_ids) | ||
386 | return pool->nr_free; | ||
387 | remote = per_cpu_ptr(pool->tag_cpu, cpu); | ||
388 | return remote->nr_free; | ||
389 | } | ||
390 | EXPORT_SYMBOL_GPL(percpu_ida_free_tags); | ||