mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
cpumask: use new cpus_scnprintf function
* Cleaned up references to cpumask_scnprintf() and added new
cpulist_scnprintf() interfaces where appropriate.
* Fix some small bugs (or code efficiency improvments) for various uses
of cpumask_scnprintf.
* Clean up some checkpatch errors.
Signed-off-by: Mike Travis <[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
This commit is contained in:
parent
fb0f330e62
commit
39106dcf85
6 changed files with 108 additions and 20 deletions
|
|
@ -19,22 +19,34 @@ static struct sysdev_class node_class = {
|
|||
};
|
||||
|
||||
|
||||
static ssize_t node_read_cpumap(struct sys_device * dev, char * buf)
|
||||
static ssize_t node_read_cpumap(struct sys_device *dev, int type, char *buf)
|
||||
{
|
||||
struct node *node_dev = to_node(dev);
|
||||
node_to_cpumask_ptr(mask, node_dev->sysdev.id);
|
||||
int len;
|
||||
|
||||
/* 2004/06/03: buf currently PAGE_SIZE, need > 1 char per 4 bits. */
|
||||
BUILD_BUG_ON(MAX_NUMNODES/4 > PAGE_SIZE/2);
|
||||
/* 2008/04/07: buf currently PAGE_SIZE, need 9 chars per 32 bits. */
|
||||
BUILD_BUG_ON((NR_CPUS/32 * 9) > (PAGE_SIZE-1));
|
||||
|
||||
len = cpumask_scnprintf(buf, PAGE_SIZE-2, *mask);
|
||||
len = type?
|
||||
cpulist_scnprintf(buf, PAGE_SIZE-2, *mask):
|
||||
cpumask_scnprintf(buf, PAGE_SIZE-2, *mask);
|
||||
buf[len++] = '\n';
|
||||
buf[len] = '\0';
|
||||
return len;
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(cpumap, S_IRUGO, node_read_cpumap, NULL);
|
||||
static inline ssize_t node_read_cpumask(struct sys_device *dev, char *buf)
|
||||
{
|
||||
return node_read_cpumap(dev, 0, buf);
|
||||
}
|
||||
static inline ssize_t node_read_cpulist(struct sys_device *dev, char *buf)
|
||||
{
|
||||
return node_read_cpumap(dev, 1, buf);
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(cpumap, S_IRUGO, node_read_cpumask, NULL);
|
||||
static SYSDEV_ATTR(cpulist, S_IRUGO, node_read_cpulist, NULL);
|
||||
|
||||
#define K(x) ((x) << (PAGE_SHIFT - 10))
|
||||
static ssize_t node_read_meminfo(struct sys_device * dev, char * buf)
|
||||
|
|
@ -150,6 +162,7 @@ int register_node(struct node *node, int num, struct node *parent)
|
|||
|
||||
if (!error){
|
||||
sysdev_create_file(&node->sysdev, &attr_cpumap);
|
||||
sysdev_create_file(&node->sysdev, &attr_cpulist);
|
||||
sysdev_create_file(&node->sysdev, &attr_meminfo);
|
||||
sysdev_create_file(&node->sysdev, &attr_numastat);
|
||||
sysdev_create_file(&node->sysdev, &attr_distance);
|
||||
|
|
@ -167,6 +180,7 @@ int register_node(struct node *node, int num, struct node *parent)
|
|||
void unregister_node(struct node *node)
|
||||
{
|
||||
sysdev_remove_file(&node->sysdev, &attr_cpumap);
|
||||
sysdev_remove_file(&node->sysdev, &attr_cpulist);
|
||||
sysdev_remove_file(&node->sysdev, &attr_meminfo);
|
||||
sysdev_remove_file(&node->sysdev, &attr_numastat);
|
||||
sysdev_remove_file(&node->sysdev, &attr_distance);
|
||||
|
|
|
|||
|
|
@ -40,15 +40,38 @@ static ssize_t show_##name(struct sys_device *dev, char *buf) \
|
|||
return sprintf(buf, "%d\n", topology_##name(cpu)); \
|
||||
}
|
||||
|
||||
#define define_siblings_show_func(name) \
|
||||
static ssize_t show_##name(struct sys_device *dev, char *buf) \
|
||||
{ \
|
||||
ssize_t len = -1; \
|
||||
unsigned int cpu = dev->id; \
|
||||
len = cpumask_scnprintf(buf, NR_CPUS+1, topology_##name(cpu)); \
|
||||
return (len + sprintf(buf + len, "\n")); \
|
||||
static ssize_t show_cpumap(int type, cpumask_t *mask, char *buf)
|
||||
{
|
||||
ptrdiff_t len = PTR_ALIGN(buf + PAGE_SIZE - 1, PAGE_SIZE) - buf;
|
||||
int n = 0;
|
||||
|
||||
if (len > 1) {
|
||||
n = type?
|
||||
cpulist_scnprintf(buf, len-2, *mask):
|
||||
cpumask_scnprintf(buf, len-2, *mask);
|
||||
buf[n++] = '\n';
|
||||
buf[n] = '\0';
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
#define define_siblings_show_map(name) \
|
||||
static inline ssize_t show_##name(struct sys_device *dev, char *buf) \
|
||||
{ \
|
||||
unsigned int cpu = dev->id; \
|
||||
return show_cpumap(0, &(topology_##name(cpu)), buf); \
|
||||
}
|
||||
|
||||
#define define_siblings_show_list(name) \
|
||||
static inline ssize_t show_##name##_list(struct sys_device *dev, char *buf) \
|
||||
{ \
|
||||
unsigned int cpu = dev->id; \
|
||||
return show_cpumap(1, &(topology_##name(cpu)), buf); \
|
||||
}
|
||||
|
||||
#define define_siblings_show_func(name) \
|
||||
define_siblings_show_map(name); define_siblings_show_list(name)
|
||||
|
||||
#ifdef topology_physical_package_id
|
||||
define_id_show_func(physical_package_id);
|
||||
define_one_ro(physical_package_id);
|
||||
|
|
@ -68,7 +91,9 @@ define_one_ro(core_id);
|
|||
#ifdef topology_thread_siblings
|
||||
define_siblings_show_func(thread_siblings);
|
||||
define_one_ro(thread_siblings);
|
||||
#define ref_thread_siblings_attr &attr_thread_siblings.attr,
|
||||
define_one_ro(thread_siblings_list);
|
||||
#define ref_thread_siblings_attr \
|
||||
&attr_thread_siblings.attr, &attr_thread_siblings_list.attr,
|
||||
#else
|
||||
#define ref_thread_siblings_attr
|
||||
#endif
|
||||
|
|
@ -76,7 +101,9 @@ define_one_ro(thread_siblings);
|
|||
#ifdef topology_core_siblings
|
||||
define_siblings_show_func(core_siblings);
|
||||
define_one_ro(core_siblings);
|
||||
#define ref_core_siblings_attr &attr_core_siblings.attr,
|
||||
define_one_ro(core_siblings_list);
|
||||
#define ref_core_siblings_attr \
|
||||
&attr_core_siblings.attr, &attr_core_siblings_list.attr,
|
||||
#else
|
||||
#define ref_core_siblings_attr
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue