aboutsummaryrefslogtreecommitdiffstats
path: root/tools/power/cpupower/utils/helpers/helpers.h
diff options
context:
space:
mode:
authorPalmer Cox <p@lmercox.com>2012-11-27 13:17:46 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2012-11-27 23:07:19 +0100
commit35a169737cdf9155e890d60eae2b8fffc16d16ba (patch)
treed119819f5ef7ae6af01cb7d931538b77b4c8bff4 /tools/power/cpupower/utils/helpers/helpers.h
parentcpupower tools: Fix issues with sysfs_topology_read_file (diff)
downloadlinux-dev-35a169737cdf9155e890d60eae2b8fffc16d16ba.tar.xz
linux-dev-35a169737cdf9155e890d60eae2b8fffc16d16ba.zip
cpupower tools: Fix malloc of cpu_info structure
The cpu_info member of cpupower_topology was being declared as an unnamed structure. This member was then being malloced using the size of the parent cpupower_topology * the number of cpus. This works because cpu_info is smaller than cpupower_topology. However, there is no guarantee that will always be the case. Making cpu_info its own top level structure (named cpuid_core_info) allows for mallocing the actual size of this structure. This also lets us get rid of a redefinition of the structure in topology.c with slightly different field names. Signed-off-by: Palmer Cox <p@lmercox.com> Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'tools/power/cpupower/utils/helpers/helpers.h')
-rw-r--r--tools/power/cpupower/utils/helpers/helpers.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/tools/power/cpupower/utils/helpers/helpers.h b/tools/power/cpupower/utils/helpers/helpers.h
index 2eb584cf2f55..f84985f630e2 100644
--- a/tools/power/cpupower/utils/helpers/helpers.h
+++ b/tools/power/cpupower/utils/helpers/helpers.h
@@ -92,6 +92,14 @@ extern int get_cpu_info(unsigned int cpu, struct cpupower_cpu_info *cpu_info);
extern struct cpupower_cpu_info cpupower_cpu_info;
/* cpuid and cpuinfo helpers **************************/
+struct cpuid_core_info {
+ int pkg;
+ int core;
+ int cpu;
+
+ /* flags */
+ unsigned int is_online:1;
+};
/* CPU topology/hierarchy parsing ******************/
struct cpupower_topology {
@@ -101,14 +109,7 @@ struct cpupower_topology {
unsigned int threads; /* per core */
/* Array gets mallocated with cores entries, holding per core info */
- struct {
- int pkg;
- int core;
- int cpu;
-
- /* flags */
- unsigned int is_online:1;
- } *core_info;
+ struct cpuid_core_info *core_info;
};
extern int get_cpu_topology(struct cpupower_topology *cpu_top);