aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/power/cpupower/utils/helpers/amd.c8
-rw-r--r--tools/power/cpupower/utils/helpers/bitmask.c12
-rw-r--r--tools/power/cpupower/utils/helpers/cpuid.c14
-rw-r--r--tools/power/cpupower/utils/helpers/helpers.h6
-rw-r--r--tools/power/cpupower/utils/helpers/misc.c3
-rw-r--r--tools/power/cpupower/utils/helpers/pci.c2
-rw-r--r--tools/power/cpupower/utils/helpers/sysfs.c112
-rw-r--r--tools/power/cpupower/utils/helpers/sysfs.h23
-rw-r--r--tools/power/cpupower/utils/helpers/topology.c6
9 files changed, 100 insertions, 86 deletions
diff --git a/tools/power/cpupower/utils/helpers/amd.c b/tools/power/cpupower/utils/helpers/amd.c
index 5e44e31fc7f9..87d5605bdda8 100644
--- a/tools/power/cpupower/utils/helpers/amd.c
+++ b/tools/power/cpupower/utils/helpers/amd.c
@@ -53,8 +53,8 @@ static int get_cof(int family, union msr_pstate pstate)
53 if (family == 0x11) 53 if (family == 0x11)
54 t = 0x8; 54 t = 0x8;
55 55
56 return ((100 * (fid + t)) >> did); 56 return (100 * (fid + t)) >> did;
57 } 57}
58 58
59/* Needs: 59/* Needs:
60 * cpu -> the cpu that gets evaluated 60 * cpu -> the cpu that gets evaluated
@@ -74,7 +74,7 @@ int decode_pstates(unsigned int cpu, unsigned int cpu_family,
74{ 74{
75 int i, psmax, pscur; 75 int i, psmax, pscur;
76 union msr_pstate pstate; 76 union msr_pstate pstate;
77 unsigned long long val; 77 unsigned long long val;
78 78
79 /* Only read out frequencies from HW when CPU might be boostable 79 /* Only read out frequencies from HW when CPU might be boostable
80 to keep the code as short and clean as possible. 80 to keep the code as short and clean as possible.
@@ -95,7 +95,7 @@ int decode_pstates(unsigned int cpu, unsigned int cpu_family,
95 95
96 pscur += boost_states; 96 pscur += boost_states;
97 psmax += boost_states; 97 psmax += boost_states;
98 for (i=0; i<=psmax; i++) { 98 for (i = 0; i <= psmax; i++) {
99 if (i >= MAX_HW_PSTATES) { 99 if (i >= MAX_HW_PSTATES) {
100 fprintf(stderr, "HW pstates [%d] exceeding max [%d]\n", 100 fprintf(stderr, "HW pstates [%d] exceeding max [%d]\n",
101 psmax, MAX_HW_PSTATES); 101 psmax, MAX_HW_PSTATES);
diff --git a/tools/power/cpupower/utils/helpers/bitmask.c b/tools/power/cpupower/utils/helpers/bitmask.c
index 60f4d69bb20d..5c074c60f904 100644
--- a/tools/power/cpupower/utils/helpers/bitmask.c
+++ b/tools/power/cpupower/utils/helpers/bitmask.c
@@ -8,12 +8,12 @@
8#define bitsperlong (8 * sizeof(unsigned long)) 8#define bitsperlong (8 * sizeof(unsigned long))
9 9
10/* howmany(a,b) : how many elements of size b needed to hold all of a */ 10/* howmany(a,b) : how many elements of size b needed to hold all of a */
11#define howmany(x,y) (((x)+((y)-1))/(y)) 11#define howmany(x, y) (((x)+((y)-1))/(y))
12 12
13/* How many longs in mask of n bits */ 13/* How many longs in mask of n bits */
14#define longsperbits(n) howmany(n, bitsperlong) 14#define longsperbits(n) howmany(n, bitsperlong)
15 15
16#define max(a,b) ((a) > (b) ? (a) : (b)) 16#define max(a, b) ((a) > (b) ? (a) : (b))
17 17
18/* 18/*
19 * Allocate and free `struct bitmask *` 19 * Allocate and free `struct bitmask *`
@@ -73,7 +73,8 @@ static void _setbit(struct bitmask *bmp, unsigned int n, unsigned int v)
73 if (v) 73 if (v)
74 bmp->maskp[n/bitsperlong] |= 1UL << (n % bitsperlong); 74 bmp->maskp[n/bitsperlong] |= 1UL << (n % bitsperlong);
75 else 75 else
76 bmp->maskp[n/bitsperlong] &= ~(1UL << (n % bitsperlong)); 76 bmp->maskp[n/bitsperlong] &=
77 ~(1UL << (n % bitsperlong));
77 } 78 }
78} 79}
79 80
@@ -185,7 +186,7 @@ unsigned int bitmask_next(const struct bitmask *bmp, unsigned int i)
185 * 0-3 0,1,2,3 186 * 0-3 0,1,2,3
186 * 0-7:2 0,2,4,6 187 * 0-7:2 0,2,4,6
187 * 1,3,5-7 1,3,5,6,7 188 * 1,3,5-7 1,3,5,6,7
188 * 0-3:2,8-15:4 0,2,8,12 189 * 0-3:2,8-15:4 0,2,8,12
189 */ 190 */
190int bitmask_parselist(const char *buf, struct bitmask *bmp) 191int bitmask_parselist(const char *buf, struct bitmask *bmp)
191{ 192{
@@ -251,7 +252,8 @@ static inline int emit(char *buf, int buflen, int rbot, int rtop, int len)
251 if (rbot == rtop) 252 if (rbot == rtop)
252 len += snprintf(buf + len, max(buflen - len, 0), "%d", rbot); 253 len += snprintf(buf + len, max(buflen - len, 0), "%d", rbot);
253 else 254 else
254 len += snprintf(buf + len, max(buflen - len, 0), "%d-%d", rbot, rtop); 255 len += snprintf(buf + len, max(buflen - len, 0), "%d-%d",
256 rbot, rtop);
255 return len; 257 return len;
256} 258}
257 259
diff --git a/tools/power/cpupower/utils/helpers/cpuid.c b/tools/power/cpupower/utils/helpers/cpuid.c
index 71021f3bb69d..944b2c1659d8 100644
--- a/tools/power/cpupower/utils/helpers/cpuid.c
+++ b/tools/power/cpupower/utils/helpers/cpuid.c
@@ -67,28 +67,26 @@ int get_cpu_info(unsigned int cpu, struct cpupower_cpu_info *cpu_info)
67 continue; 67 continue;
68 value[63 - 1] = '\0'; 68 value[63 - 1] = '\0';
69 69
70 if (!strncmp(value, "processor\t: ", 12)) { 70 if (!strncmp(value, "processor\t: ", 12))
71 sscanf(value, "processor\t: %u", &proc); 71 sscanf(value, "processor\t: %u", &proc);
72 } 72
73 if (proc != cpu) 73 if (proc != cpu)
74 continue; 74 continue;
75 75
76 /* Get CPU vendor */ 76 /* Get CPU vendor */
77 if (!strncmp(value, "vendor_id", 9)) 77 if (!strncmp(value, "vendor_id", 9)) {
78 for (x = 1; x < X86_VENDOR_MAX; x++) { 78 for (x = 1; x < X86_VENDOR_MAX; x++) {
79 if (strstr(value, cpu_vendor_table[x])) 79 if (strstr(value, cpu_vendor_table[x]))
80 cpu_info->vendor = x; 80 cpu_info->vendor = x;
81 } 81 }
82 /* Get CPU family, etc. */ 82 /* Get CPU family, etc. */
83 else if (!strncmp(value, "cpu family\t: ", 13)) { 83 } else if (!strncmp(value, "cpu family\t: ", 13)) {
84 sscanf(value, "cpu family\t: %u", 84 sscanf(value, "cpu family\t: %u",
85 &cpu_info->family); 85 &cpu_info->family);
86 } 86 } else if (!strncmp(value, "model\t\t: ", 9)) {
87 else if (!strncmp(value, "model\t\t: ", 9)) {
88 sscanf(value, "model\t\t: %u", 87 sscanf(value, "model\t\t: %u",
89 &cpu_info->model); 88 &cpu_info->model);
90 } 89 } else if (!strncmp(value, "stepping\t: ", 10)) {
91 else if (!strncmp(value, "stepping\t: ", 10)) {
92 sscanf(value, "stepping\t: %u", 90 sscanf(value, "stepping\t: %u",
93 &cpu_info->stepping); 91 &cpu_info->stepping);
94 92
diff --git a/tools/power/cpupower/utils/helpers/helpers.h b/tools/power/cpupower/utils/helpers/helpers.h
index a487dadb4cf0..048f065925c9 100644
--- a/tools/power/cpupower/utils/helpers/helpers.h
+++ b/tools/power/cpupower/utils/helpers/helpers.h
@@ -20,7 +20,7 @@
20#ifndef gettext_noop 20#ifndef gettext_noop
21#define gettext_noop(String) String 21#define gettext_noop(String) String
22#endif 22#endif
23#define N_(String) gettext_noop (String) 23#define N_(String) gettext_noop(String)
24/* Internationalization ****************************/ 24/* Internationalization ****************************/
25 25
26extern int run_as_root; 26extern int run_as_root;
@@ -39,11 +39,11 @@ extern int be_verbose;
39#define dprint(fmt, ...) { \ 39#define dprint(fmt, ...) { \
40 if (be_verbose) { \ 40 if (be_verbose) { \
41 fprintf(stderr, "%s: " fmt, \ 41 fprintf(stderr, "%s: " fmt, \
42 __FUNCTION__, ##__VA_ARGS__); \ 42 __func__, ##__VA_ARGS__); \
43 } \ 43 } \
44 } 44 }
45#else 45#else
46static inline void dprint(const char *fmt, ...) { } 46static inline void dprint(const char *fmt, ...) { }
47#endif 47#endif
48extern int be_verbose; 48extern int be_verbose;
49/* Global verbose (-v) stuff *********************************/ 49/* Global verbose (-v) stuff *********************************/
diff --git a/tools/power/cpupower/utils/helpers/misc.c b/tools/power/cpupower/utils/helpers/misc.c
index c1566e93e0ec..e8b3140cc6b8 100644
--- a/tools/power/cpupower/utils/helpers/misc.c
+++ b/tools/power/cpupower/utils/helpers/misc.c
@@ -2,7 +2,8 @@
2 2
3#include "helpers/helpers.h" 3#include "helpers/helpers.h"
4 4
5int cpufreq_has_boost_support(unsigned int cpu, int *support, int *active, int * states) 5int cpufreq_has_boost_support(unsigned int cpu, int *support, int *active,
6 int *states)
6{ 7{
7 struct cpupower_cpu_info cpu_info; 8 struct cpupower_cpu_info cpu_info;
8 int ret; 9 int ret;
diff --git a/tools/power/cpupower/utils/helpers/pci.c b/tools/power/cpupower/utils/helpers/pci.c
index 8dcc93813716..cd2eb6fe41c4 100644
--- a/tools/power/cpupower/utils/helpers/pci.c
+++ b/tools/power/cpupower/utils/helpers/pci.c
@@ -33,7 +33,7 @@ struct pci_dev *pci_acc_init(struct pci_access **pacc, int vendor_id,
33 33
34 for (i = 0; dev_ids[i] != 0; i++) { 34 for (i = 0; dev_ids[i] != 0; i++) {
35 filter_nb_link.device = dev_ids[i]; 35 filter_nb_link.device = dev_ids[i];
36 for (device=(*pacc)->devices; device; device = device->next) { 36 for (device = (*pacc)->devices; device; device = device->next) {
37 if (pci_filter_match(&filter_nb_link, device)) 37 if (pci_filter_match(&filter_nb_link, device))
38 return device; 38 return device;
39 } 39 }
diff --git a/tools/power/cpupower/utils/helpers/sysfs.c b/tools/power/cpupower/utils/helpers/sysfs.c
index 0c534e79652b..55e2466674c6 100644
--- a/tools/power/cpupower/utils/helpers/sysfs.c
+++ b/tools/power/cpupower/utils/helpers/sysfs.c
@@ -19,14 +19,14 @@
19unsigned int sysfs_read_file(const char *path, char *buf, size_t buflen) 19unsigned int sysfs_read_file(const char *path, char *buf, size_t buflen)
20{ 20{
21 int fd; 21 int fd;
22 size_t numread; 22 ssize_t numread;
23 23
24 if ( ( fd = open(path, O_RDONLY) ) == -1 ) 24 fd = open(path, O_RDONLY);
25 if (fd == -1)
25 return 0; 26 return 0;
26 27
27 numread = read(fd, buf, buflen - 1); 28 numread = read(fd, buf, buflen - 1);
28 if ( numread < 1 ) 29 if (numread < 1) {
29 {
30 close(fd); 30 close(fd);
31 return 0; 31 return 0;
32 } 32 }
@@ -34,26 +34,26 @@ unsigned int sysfs_read_file(const char *path, char *buf, size_t buflen)
34 buf[numread] = '\0'; 34 buf[numread] = '\0';
35 close(fd); 35 close(fd);
36 36
37 return numread; 37 return (unsigned int) numread;
38} 38}
39 39
40static unsigned int sysfs_write_file(const char *path, 40static unsigned int sysfs_write_file(const char *path,
41 const char *value, size_t len) 41 const char *value, size_t len)
42{ 42{
43 int fd; 43 int fd;
44 size_t numwrite; 44 ssize_t numwrite;
45 45
46 if ( ( fd = open(path, O_WRONLY) ) == -1 ) 46 fd = open(path, O_WRONLY);
47 if (fd == -1)
47 return 0; 48 return 0;
48 49
49 numwrite = write(fd, value, len); 50 numwrite = write(fd, value, len);
50 if ( numwrite < 1 ) 51 if (numwrite < 1) {
51 {
52 close(fd); 52 close(fd);
53 return 0; 53 return 0;
54 } 54 }
55 close(fd); 55 close(fd);
56 return numwrite; 56 return (unsigned int) numwrite;
57} 57}
58 58
59/* CPUidle idlestate specific /sys/devices/system/cpu/cpuX/cpuidle/ access */ 59/* CPUidle idlestate specific /sys/devices/system/cpu/cpuX/cpuidle/ access */
@@ -69,17 +69,17 @@ unsigned int sysfs_idlestate_read_file(unsigned int cpu, unsigned int idlestate,
69{ 69{
70 char path[SYSFS_PATH_MAX]; 70 char path[SYSFS_PATH_MAX];
71 int fd; 71 int fd;
72 size_t numread; 72 ssize_t numread;
73 73
74 snprintf(path, sizeof(path), PATH_TO_CPU "cpu%u/cpuidle/state%u/%s", 74 snprintf(path, sizeof(path), PATH_TO_CPU "cpu%u/cpuidle/state%u/%s",
75 cpu, idlestate, fname); 75 cpu, idlestate, fname);
76 76
77 if ( ( fd = open(path, O_RDONLY) ) == -1 ) 77 fd = open(path, O_RDONLY);
78 if (fd == -1)
78 return 0; 79 return 0;
79 80
80 numread = read(fd, buf, buflen - 1); 81 numread = read(fd, buf, buflen - 1);
81 if ( numread < 1 ) 82 if (numread < 1) {
82 {
83 close(fd); 83 close(fd);
84 return 0; 84 return 0;
85 } 85 }
@@ -87,7 +87,7 @@ unsigned int sysfs_idlestate_read_file(unsigned int cpu, unsigned int idlestate,
87 buf[numread] = '\0'; 87 buf[numread] = '\0';
88 close(fd); 88 close(fd);
89 89
90 return numread; 90 return (unsigned int) numread;
91} 91}
92 92
93/* read access to files which contain one numeric value */ 93/* read access to files which contain one numeric value */
@@ -116,19 +116,18 @@ static unsigned long long sysfs_idlestate_get_one_value(unsigned int cpu,
116 char linebuf[MAX_LINE_LEN]; 116 char linebuf[MAX_LINE_LEN];
117 char *endp; 117 char *endp;
118 118
119 if ( which >= MAX_IDLESTATE_VALUE_FILES ) 119 if (which >= MAX_IDLESTATE_VALUE_FILES)
120 return 0; 120 return 0;
121 121
122 if ( ( len = sysfs_idlestate_read_file(cpu, idlestate, 122 len = sysfs_idlestate_read_file(cpu, idlestate,
123 idlestate_value_files[which], 123 idlestate_value_files[which],
124 linebuf, sizeof(linebuf))) == 0 ) 124 linebuf, sizeof(linebuf));
125 { 125 if (len == 0)
126 return 0; 126 return 0;
127 }
128 127
129 value = strtoull(linebuf, &endp, 0); 128 value = strtoull(linebuf, &endp, 0);
130 129
131 if ( endp == linebuf || errno == ERANGE ) 130 if (endp == linebuf || errno == ERANGE)
132 return 0; 131 return 0;
133 132
134 return value; 133 return value;
@@ -148,9 +147,9 @@ static const char *idlestate_string_files[MAX_IDLESTATE_STRING_FILES] = {
148}; 147};
149 148
150 149
151static char * sysfs_idlestate_get_one_string(unsigned int cpu, 150static char *sysfs_idlestate_get_one_string(unsigned int cpu,
152 unsigned int idlestate, 151 unsigned int idlestate,
153 enum idlestate_string which) 152 enum idlestate_string which)
154{ 153{
155 char linebuf[MAX_LINE_LEN]; 154 char linebuf[MAX_LINE_LEN];
156 char *result; 155 char *result;
@@ -159,12 +158,14 @@ static char * sysfs_idlestate_get_one_string(unsigned int cpu,
159 if (which >= MAX_IDLESTATE_STRING_FILES) 158 if (which >= MAX_IDLESTATE_STRING_FILES)
160 return NULL; 159 return NULL;
161 160
162 if ( ( len = sysfs_idlestate_read_file(cpu, idlestate, 161 len = sysfs_idlestate_read_file(cpu, idlestate,
163 idlestate_string_files[which], 162 idlestate_string_files[which],
164 linebuf, sizeof(linebuf))) == 0 ) 163 linebuf, sizeof(linebuf));
164 if (len == 0)
165 return NULL; 165 return NULL;
166 166
167 if ( ( result = strdup(linebuf) ) == NULL ) 167 result = strdup(linebuf);
168 if (result == NULL)
168 return NULL; 169 return NULL;
169 170
170 if (result[strlen(result) - 1] == '\n') 171 if (result[strlen(result) - 1] == '\n')
@@ -173,27 +174,30 @@ static char * sysfs_idlestate_get_one_string(unsigned int cpu,
173 return result; 174 return result;
174} 175}
175 176
176unsigned long sysfs_get_idlestate_latency(unsigned int cpu, unsigned int idlestate) 177unsigned long sysfs_get_idlestate_latency(unsigned int cpu,
178 unsigned int idlestate)
177{ 179{
178 return sysfs_idlestate_get_one_value(cpu, idlestate, IDLESTATE_LATENCY); 180 return sysfs_idlestate_get_one_value(cpu, idlestate, IDLESTATE_LATENCY);
179} 181}
180 182
181unsigned long sysfs_get_idlestate_usage(unsigned int cpu, unsigned int idlestate) 183unsigned long sysfs_get_idlestate_usage(unsigned int cpu,
184 unsigned int idlestate)
182{ 185{
183 return sysfs_idlestate_get_one_value(cpu, idlestate, IDLESTATE_USAGE); 186 return sysfs_idlestate_get_one_value(cpu, idlestate, IDLESTATE_USAGE);
184} 187}
185 188
186unsigned long long sysfs_get_idlestate_time(unsigned int cpu, unsigned int idlestate) 189unsigned long long sysfs_get_idlestate_time(unsigned int cpu,
190 unsigned int idlestate)
187{ 191{
188 return sysfs_idlestate_get_one_value(cpu, idlestate, IDLESTATE_TIME); 192 return sysfs_idlestate_get_one_value(cpu, idlestate, IDLESTATE_TIME);
189} 193}
190 194
191char * sysfs_get_idlestate_name(unsigned int cpu, unsigned int idlestate) 195char *sysfs_get_idlestate_name(unsigned int cpu, unsigned int idlestate)
192{ 196{
193 return sysfs_idlestate_get_one_string(cpu, idlestate, IDLESTATE_NAME); 197 return sysfs_idlestate_get_one_string(cpu, idlestate, IDLESTATE_NAME);
194} 198}
195 199
196char * sysfs_get_idlestate_desc(unsigned int cpu, unsigned int idlestate) 200char *sysfs_get_idlestate_desc(unsigned int cpu, unsigned int idlestate)
197{ 201{
198 return sysfs_idlestate_get_one_string(cpu, idlestate, IDLESTATE_DESC); 202 return sysfs_idlestate_get_one_string(cpu, idlestate, IDLESTATE_DESC);
199} 203}
@@ -211,14 +215,14 @@ int sysfs_get_idlestate_count(unsigned int cpu)
211 215
212 216
213 snprintf(file, SYSFS_PATH_MAX, PATH_TO_CPU "cpuidle"); 217 snprintf(file, SYSFS_PATH_MAX, PATH_TO_CPU "cpuidle");
214 if ( stat(file, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode)) 218 if (stat(file, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode))
215 return -ENODEV; 219 return -ENODEV;
216 220
217 snprintf(file, SYSFS_PATH_MAX, PATH_TO_CPU "cpu%u/cpuidle/state0", cpu); 221 snprintf(file, SYSFS_PATH_MAX, PATH_TO_CPU "cpu%u/cpuidle/state0", cpu);
218 if ( stat(file, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode)) 222 if (stat(file, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode))
219 return 0; 223 return 0;
220 224
221 while(stat(file, &statbuf) == 0 && S_ISDIR(statbuf.st_mode)) { 225 while (stat(file, &statbuf) == 0 && S_ISDIR(statbuf.st_mode)) {
222 snprintf(file, SYSFS_PATH_MAX, PATH_TO_CPU 226 snprintf(file, SYSFS_PATH_MAX, PATH_TO_CPU
223 "cpu%u/cpuidle/state%d", cpu, idlestates); 227 "cpu%u/cpuidle/state%d", cpu, idlestates);
224 idlestates++; 228 idlestates++;
@@ -261,7 +265,7 @@ static const char *cpuidle_string_files[MAX_CPUIDLE_STRING_FILES] = {
261}; 265};
262 266
263 267
264static char * sysfs_cpuidle_get_one_string(enum cpuidle_string which) 268static char *sysfs_cpuidle_get_one_string(enum cpuidle_string which)
265{ 269{
266 char linebuf[MAX_LINE_LEN]; 270 char linebuf[MAX_LINE_LEN];
267 char *result; 271 char *result;
@@ -270,11 +274,13 @@ static char * sysfs_cpuidle_get_one_string(enum cpuidle_string which)
270 if (which >= MAX_CPUIDLE_STRING_FILES) 274 if (which >= MAX_CPUIDLE_STRING_FILES)
271 return NULL; 275 return NULL;
272 276
273 if ( ( len = sysfs_cpuidle_read_file(cpuidle_string_files[which], 277 len = sysfs_cpuidle_read_file(cpuidle_string_files[which],
274 linebuf, sizeof(linebuf))) == 0 ) 278 linebuf, sizeof(linebuf));
279 if (len == 0)
275 return NULL; 280 return NULL;
276 281
277 if ( ( result = strdup(linebuf) ) == NULL ) 282 result = strdup(linebuf);
283 if (result == NULL)
278 return NULL; 284 return NULL;
279 285
280 if (result[strlen(result) - 1] == '\n') 286 if (result[strlen(result) - 1] == '\n')
@@ -283,7 +289,7 @@ static char * sysfs_cpuidle_get_one_string(enum cpuidle_string which)
283 return result; 289 return result;
284} 290}
285 291
286char * sysfs_get_cpuidle_governor(void) 292char *sysfs_get_cpuidle_governor(void)
287{ 293{
288 char *tmp = sysfs_cpuidle_get_one_string(CPUIDLE_GOVERNOR_RO); 294 char *tmp = sysfs_cpuidle_get_one_string(CPUIDLE_GOVERNOR_RO);
289 if (!tmp) 295 if (!tmp)
@@ -292,7 +298,7 @@ char * sysfs_get_cpuidle_governor(void)
292 return tmp; 298 return tmp;
293} 299}
294 300
295char * sysfs_get_cpuidle_driver(void) 301char *sysfs_get_cpuidle_driver(void)
296{ 302{
297 return sysfs_cpuidle_get_one_string(CPUIDLE_DRIVER); 303 return sysfs_cpuidle_get_one_string(CPUIDLE_DRIVER);
298} 304}
@@ -304,9 +310,9 @@ char * sysfs_get_cpuidle_driver(void)
304 * 310 *
305 * Returns negative value on failure 311 * Returns negative value on failure
306 */ 312 */
307int sysfs_get_sched(const char* smt_mc) 313int sysfs_get_sched(const char *smt_mc)
308{ 314{
309 unsigned long value; 315 unsigned long value;
310 char linebuf[MAX_LINE_LEN]; 316 char linebuf[MAX_LINE_LEN];
311 char *endp; 317 char *endp;
312 char path[SYSFS_PATH_MAX]; 318 char path[SYSFS_PATH_MAX];
@@ -314,11 +320,12 @@ int sysfs_get_sched(const char* smt_mc)
314 if (strcmp("mc", smt_mc) && strcmp("smt", smt_mc)) 320 if (strcmp("mc", smt_mc) && strcmp("smt", smt_mc))
315 return -EINVAL; 321 return -EINVAL;
316 322
317 snprintf(path, sizeof(path), PATH_TO_CPU "sched_%s_power_savings", smt_mc); 323 snprintf(path, sizeof(path),
318 if (sysfs_read_file(path, linebuf, MAX_LINE_LEN) == 0 ) 324 PATH_TO_CPU "sched_%s_power_savings", smt_mc);
325 if (sysfs_read_file(path, linebuf, MAX_LINE_LEN) == 0)
319 return -1; 326 return -1;
320 value = strtoul(linebuf, &endp, 0); 327 value = strtoul(linebuf, &endp, 0);
321 if ( endp == linebuf || errno == ERANGE ) 328 if (endp == linebuf || errno == ERANGE)
322 return -1; 329 return -1;
323 return value; 330 return value;
324} 331}
@@ -329,7 +336,7 @@ int sysfs_get_sched(const char* smt_mc)
329 * 336 *
330 * Returns negative value on failure 337 * Returns negative value on failure
331 */ 338 */
332int sysfs_set_sched(const char* smt_mc, int val) 339int sysfs_set_sched(const char *smt_mc, int val)
333{ 340{
334 char linebuf[MAX_LINE_LEN]; 341 char linebuf[MAX_LINE_LEN];
335 char path[SYSFS_PATH_MAX]; 342 char path[SYSFS_PATH_MAX];
@@ -338,13 +345,14 @@ int sysfs_set_sched(const char* smt_mc, int val)
338 if (strcmp("mc", smt_mc) && strcmp("smt", smt_mc)) 345 if (strcmp("mc", smt_mc) && strcmp("smt", smt_mc))
339 return -EINVAL; 346 return -EINVAL;
340 347
341 snprintf(path, sizeof(path), PATH_TO_CPU "sched_%s_power_savings", smt_mc); 348 snprintf(path, sizeof(path),
349 PATH_TO_CPU "sched_%s_power_savings", smt_mc);
342 sprintf(linebuf, "%d", val); 350 sprintf(linebuf, "%d", val);
343 351
344 if ( stat(path, &statbuf) != 0 ) 352 if (stat(path, &statbuf) != 0)
345 return -ENODEV; 353 return -ENODEV;
346 354
347 if (sysfs_write_file(path, linebuf, MAX_LINE_LEN) == 0 ) 355 if (sysfs_write_file(path, linebuf, MAX_LINE_LEN) == 0)
348 return -1; 356 return -1;
349 return 0; 357 return 0;
350} 358}
diff --git a/tools/power/cpupower/utils/helpers/sysfs.h b/tools/power/cpupower/utils/helpers/sysfs.h
index 5d02d2fc70e1..f9373e090637 100644
--- a/tools/power/cpupower/utils/helpers/sysfs.h
+++ b/tools/power/cpupower/utils/helpers/sysfs.h
@@ -7,17 +7,22 @@
7 7
8extern unsigned int sysfs_read_file(const char *path, char *buf, size_t buflen); 8extern unsigned int sysfs_read_file(const char *path, char *buf, size_t buflen);
9 9
10extern unsigned long sysfs_get_idlestate_latency(unsigned int cpu, unsigned int idlestate); 10extern unsigned long sysfs_get_idlestate_latency(unsigned int cpu,
11extern unsigned long sysfs_get_idlestate_usage(unsigned int cpu, unsigned int idlestate); 11 unsigned int idlestate);
12extern unsigned long long sysfs_get_idlestate_time(unsigned int cpu, unsigned int idlestate); 12extern unsigned long sysfs_get_idlestate_usage(unsigned int cpu,
13extern char * sysfs_get_idlestate_name(unsigned int cpu, unsigned int idlestate); 13 unsigned int idlestate);
14extern char * sysfs_get_idlestate_desc(unsigned int cpu, unsigned int idlestate); 14extern unsigned long long sysfs_get_idlestate_time(unsigned int cpu,
15 unsigned int idlestate);
16extern char *sysfs_get_idlestate_name(unsigned int cpu,
17 unsigned int idlestate);
18extern char *sysfs_get_idlestate_desc(unsigned int cpu,
19 unsigned int idlestate);
15extern int sysfs_get_idlestate_count(unsigned int cpu); 20extern int sysfs_get_idlestate_count(unsigned int cpu);
16 21
17extern char * sysfs_get_cpuidle_governor(void); 22extern char *sysfs_get_cpuidle_governor(void);
18extern char * sysfs_get_cpuidle_driver(void); 23extern char *sysfs_get_cpuidle_driver(void);
19 24
20extern int sysfs_get_sched(const char* smt_mc); 25extern int sysfs_get_sched(const char *smt_mc);
21extern int sysfs_set_sched(const char* smt_mc, int val); 26extern int sysfs_set_sched(const char *smt_mc, int val);
22 27
23#endif /* __CPUPOWER_HELPERS_SYSFS_H__ */ 28#endif /* __CPUPOWER_HELPERS_SYSFS_H__ */
diff --git a/tools/power/cpupower/utils/helpers/topology.c b/tools/power/cpupower/utils/helpers/topology.c
index 5ad842b956bb..385ee5c7570c 100644
--- a/tools/power/cpupower/utils/helpers/topology.c
+++ b/tools/power/cpupower/utils/helpers/topology.c
@@ -22,17 +22,17 @@
22/* returns -1 on failure, 0 on success */ 22/* returns -1 on failure, 0 on success */
23int sysfs_topology_read_file(unsigned int cpu, const char *fname) 23int sysfs_topology_read_file(unsigned int cpu, const char *fname)
24{ 24{
25 unsigned long value; 25 unsigned long value;
26 char linebuf[MAX_LINE_LEN]; 26 char linebuf[MAX_LINE_LEN];
27 char *endp; 27 char *endp;
28 char path[SYSFS_PATH_MAX]; 28 char path[SYSFS_PATH_MAX];
29 29
30 snprintf(path, sizeof(path), PATH_TO_CPU "cpu%u/topology/%s", 30 snprintf(path, sizeof(path), PATH_TO_CPU "cpu%u/topology/%s",
31 cpu, fname); 31 cpu, fname);
32 if (sysfs_read_file(path, linebuf, MAX_LINE_LEN) == 0 ) 32 if (sysfs_read_file(path, linebuf, MAX_LINE_LEN) == 0)
33 return -1; 33 return -1;
34 value = strtoul(linebuf, &endp, 0); 34 value = strtoul(linebuf, &endp, 0);
35 if ( endp == linebuf || errno == ERANGE ) 35 if (endp == linebuf || errno == ERANGE)
36 return -1; 36 return -1;
37 return value; 37 return value;
38} 38}