Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cpumask: implement cpumask_parse()

We have cpulist_parse() but not cpumask_parse(). Implement it using
bitmap_parse().

bitmap_parse() is weird in that it takes @len for a string in
kernel-memory which also is inconsistent with bitmap_parselist().
Make cpumask_parse() calculate the length and don't expose the
inconsistency to cpumask users. Maybe we can fix up bitmap_parse()
later.

This will be used to expose workqueue cpumask knobs to userland via
sysfs.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>

Tejun Heo ba630e49 8719dcea

+15
+15
include/linux/cpumask.h
··· 591 591 } 592 592 593 593 /** 594 + * cpumask_parse - extract a cpumask from from a string 595 + * @buf: the buffer to extract from 596 + * @dstp: the cpumask to set. 597 + * 598 + * Returns -errno, or 0 for success. 599 + */ 600 + static inline int cpumask_parse(const char *buf, struct cpumask *dstp) 601 + { 602 + char *nl = strchr(buf, '\n'); 603 + int len = nl ? nl - buf : strlen(buf); 604 + 605 + return bitmap_parse(buf, len, cpumask_bits(dstp), nr_cpumask_bits); 606 + } 607 + 608 + /** 594 609 * cpulist_parse - extract a cpumask from a user string of ranges 595 610 * @buf: the buffer to extract from 596 611 * @dstp: the cpumask to set.