diff options
Diffstat (limited to 'drivers/base/topology.c')
| -rw-r--r-- | drivers/base/topology.c | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/drivers/base/topology.c b/drivers/base/topology.c index a778fb52b11f..bf6b13206d00 100644 --- a/drivers/base/topology.c +++ b/drivers/base/topology.c | |||
| @@ -31,7 +31,10 @@ | |||
| 31 | #include <linux/hardirq.h> | 31 | #include <linux/hardirq.h> |
| 32 | #include <linux/topology.h> | 32 | #include <linux/topology.h> |
| 33 | 33 | ||
| 34 | #define define_one_ro(_name) \ | 34 | #define define_one_ro_named(_name, _func) \ |
| 35 | static SYSDEV_ATTR(_name, 0444, _func, NULL) | ||
| 36 | |||
| 37 | #define define_one_ro(_name) \ | ||
| 35 | static SYSDEV_ATTR(_name, 0444, show_##_name, NULL) | 38 | static SYSDEV_ATTR(_name, 0444, show_##_name, NULL) |
| 36 | 39 | ||
| 37 | #define define_id_show_func(name) \ | 40 | #define define_id_show_func(name) \ |
| @@ -42,8 +45,8 @@ static ssize_t show_##name(struct sys_device *dev, \ | |||
| 42 | return sprintf(buf, "%d\n", topology_##name(cpu)); \ | 45 | return sprintf(buf, "%d\n", topology_##name(cpu)); \ |
| 43 | } | 46 | } |
| 44 | 47 | ||
| 45 | #if defined(topology_thread_siblings) || defined(topology_core_siblings) | 48 | #if defined(topology_thread_cpumask) || defined(topology_core_cpumask) |
| 46 | static ssize_t show_cpumap(int type, cpumask_t *mask, char *buf) | 49 | static ssize_t show_cpumap(int type, const struct cpumask *mask, char *buf) |
| 47 | { | 50 | { |
| 48 | ptrdiff_t len = PTR_ALIGN(buf + PAGE_SIZE - 1, PAGE_SIZE) - buf; | 51 | ptrdiff_t len = PTR_ALIGN(buf + PAGE_SIZE - 1, PAGE_SIZE) - buf; |
| 49 | int n = 0; | 52 | int n = 0; |
| @@ -65,7 +68,7 @@ static ssize_t show_##name(struct sys_device *dev, \ | |||
| 65 | struct sysdev_attribute *attr, char *buf) \ | 68 | struct sysdev_attribute *attr, char *buf) \ |
| 66 | { \ | 69 | { \ |
| 67 | unsigned int cpu = dev->id; \ | 70 | unsigned int cpu = dev->id; \ |
| 68 | return show_cpumap(0, &(topology_##name(cpu)), buf); \ | 71 | return show_cpumap(0, topology_##name(cpu), buf); \ |
| 69 | } | 72 | } |
| 70 | 73 | ||
| 71 | #define define_siblings_show_list(name) \ | 74 | #define define_siblings_show_list(name) \ |
| @@ -74,7 +77,7 @@ static ssize_t show_##name##_list(struct sys_device *dev, \ | |||
| 74 | char *buf) \ | 77 | char *buf) \ |
| 75 | { \ | 78 | { \ |
| 76 | unsigned int cpu = dev->id; \ | 79 | unsigned int cpu = dev->id; \ |
| 77 | return show_cpumap(1, &(topology_##name(cpu)), buf); \ | 80 | return show_cpumap(1, topology_##name(cpu), buf); \ |
| 78 | } | 81 | } |
| 79 | 82 | ||
| 80 | #else | 83 | #else |
| @@ -82,9 +85,7 @@ static ssize_t show_##name##_list(struct sys_device *dev, \ | |||
| 82 | static ssize_t show_##name(struct sys_device *dev, \ | 85 | static ssize_t show_##name(struct sys_device *dev, \ |
| 83 | struct sysdev_attribute *attr, char *buf) \ | 86 | struct sysdev_attribute *attr, char *buf) \ |
| 84 | { \ | 87 | { \ |
| 85 | unsigned int cpu = dev->id; \ | 88 | return show_cpumap(0, topology_##name(dev->id), buf); \ |
| 86 | cpumask_t mask = topology_##name(cpu); \ | ||
| 87 | return show_cpumap(0, &mask, buf); \ | ||
| 88 | } | 89 | } |
| 89 | 90 | ||
| 90 | #define define_siblings_show_list(name) \ | 91 | #define define_siblings_show_list(name) \ |
| @@ -92,9 +93,7 @@ static ssize_t show_##name##_list(struct sys_device *dev, \ | |||
| 92 | struct sysdev_attribute *attr, \ | 93 | struct sysdev_attribute *attr, \ |
| 93 | char *buf) \ | 94 | char *buf) \ |
| 94 | { \ | 95 | { \ |
| 95 | unsigned int cpu = dev->id; \ | 96 | return show_cpumap(1, topology_##name(dev->id), buf); \ |
| 96 | cpumask_t mask = topology_##name(cpu); \ | ||
| 97 | return show_cpumap(1, &mask, buf); \ | ||
| 98 | } | 97 | } |
| 99 | #endif | 98 | #endif |
| 100 | 99 | ||
| @@ -107,13 +106,13 @@ define_one_ro(physical_package_id); | |||
| 107 | define_id_show_func(core_id); | 106 | define_id_show_func(core_id); |
| 108 | define_one_ro(core_id); | 107 | define_one_ro(core_id); |
| 109 | 108 | ||
| 110 | define_siblings_show_func(thread_siblings); | 109 | define_siblings_show_func(thread_cpumask); |
| 111 | define_one_ro(thread_siblings); | 110 | define_one_ro_named(thread_siblings, show_thread_cpumask); |
| 112 | define_one_ro(thread_siblings_list); | 111 | define_one_ro_named(thread_siblings_list, show_thread_cpumask_list); |
| 113 | 112 | ||
| 114 | define_siblings_show_func(core_siblings); | 113 | define_siblings_show_func(core_cpumask); |
| 115 | define_one_ro(core_siblings); | 114 | define_one_ro_named(core_siblings, show_core_cpumask); |
| 116 | define_one_ro(core_siblings_list); | 115 | define_one_ro_named(core_siblings_list, show_core_cpumask_list); |
| 117 | 116 | ||
| 118 | static struct attribute *default_attrs[] = { | 117 | static struct attribute *default_attrs[] = { |
| 119 | &attr_physical_package_id.attr, | 118 | &attr_physical_package_id.attr, |
