Lines Matching +full:cpu +full:- +full:read
1 // SPDX-License-Identifier: GPL-2.0-only
3 * (C) 2004-2009 Dominik Brodowski <linux@dominikbrodowski.de>
22 * For example the functionality to disable c-states was introduced in later
29 unsigned int cpuidle_state_file_exists(unsigned int cpu, in cpuidle_state_file_exists() argument
37 snprintf(path, sizeof(path), PATH_TO_CPU "cpu%u/cpuidle/state%u/%s", in cpuidle_state_file_exists()
38 cpu, idlestate, fname); in cpuidle_state_file_exists()
45 * helper function to read file from /sys into given buffer
51 unsigned int cpuidle_state_read_file(unsigned int cpu, in cpuidle_state_read_file() argument
60 snprintf(path, sizeof(path), PATH_TO_CPU "cpu%u/cpuidle/state%u/%s", in cpuidle_state_read_file()
61 cpu, idlestate, fname); in cpuidle_state_read_file()
64 if (fd == -1) in cpuidle_state_read_file()
67 numread = read(fd, buf, buflen - 1); in cpuidle_state_read_file()
86 unsigned int cpuidle_state_write_file(unsigned int cpu, in cpuidle_state_write_file() argument
95 snprintf(path, sizeof(path), PATH_TO_CPU "cpu%u/cpuidle/state%u/%s", in cpuidle_state_write_file()
96 cpu, idlestate, fname); in cpuidle_state_write_file()
99 if (fd == -1) in cpuidle_state_write_file()
113 /* read access to files which contain one numeric value */
133 unsigned long long cpuidle_state_get_one_value(unsigned int cpu, in cpuidle_state_get_one_value() argument
145 len = cpuidle_state_read_file(cpu, idlestate, in cpuidle_state_get_one_value()
159 /* read access to files which contain one string */
173 static char *cpuidle_state_get_one_string(unsigned int cpu, in cpuidle_state_get_one_string() argument
184 len = cpuidle_state_read_file(cpu, idlestate, in cpuidle_state_get_one_string()
194 if (result[strlen(result) - 1] == '\n') in cpuidle_state_get_one_string()
195 result[strlen(result) - 1] = '\0'; in cpuidle_state_get_one_string()
204 * -1 if idlestate is not available
205 * -2 if disabling is not supported by the kernel
207 int cpuidle_is_state_disabled(unsigned int cpu, in cpuidle_is_state_disabled() argument
210 if (cpuidle_state_count(cpu) <= idlestate) in cpuidle_is_state_disabled()
211 return -1; in cpuidle_is_state_disabled()
213 if (!cpuidle_state_file_exists(cpu, idlestate, in cpuidle_is_state_disabled()
215 return -2; in cpuidle_is_state_disabled()
216 return cpuidle_state_get_one_value(cpu, idlestate, IDLESTATE_DISABLE); in cpuidle_is_state_disabled()
224 * -1 if idlestate is not available
225 * -2 if disabling is not supported by the kernel
226 * -3 No write access to disable/enable C-states
228 int cpuidle_state_disable(unsigned int cpu, in cpuidle_state_disable() argument
235 if (cpuidle_state_count(cpu) <= idlestate) in cpuidle_state_disable()
236 return -1; in cpuidle_state_disable()
238 if (!cpuidle_state_file_exists(cpu, idlestate, in cpuidle_state_disable()
240 return -2; in cpuidle_state_disable()
244 bytes_written = cpuidle_state_write_file(cpu, idlestate, "disable", in cpuidle_state_disable()
248 return -3; in cpuidle_state_disable()
251 unsigned long cpuidle_state_latency(unsigned int cpu, in cpuidle_state_latency() argument
254 return cpuidle_state_get_one_value(cpu, idlestate, IDLESTATE_LATENCY); in cpuidle_state_latency()
257 unsigned long cpuidle_state_usage(unsigned int cpu, in cpuidle_state_usage() argument
260 return cpuidle_state_get_one_value(cpu, idlestate, IDLESTATE_USAGE); in cpuidle_state_usage()
263 unsigned long long cpuidle_state_time(unsigned int cpu, in cpuidle_state_time() argument
266 return cpuidle_state_get_one_value(cpu, idlestate, IDLESTATE_TIME); in cpuidle_state_time()
269 char *cpuidle_state_name(unsigned int cpu, unsigned int idlestate) in cpuidle_state_name() argument
271 return cpuidle_state_get_one_string(cpu, idlestate, IDLESTATE_NAME); in cpuidle_state_name()
274 char *cpuidle_state_desc(unsigned int cpu, unsigned int idlestate) in cpuidle_state_desc() argument
276 return cpuidle_state_get_one_string(cpu, idlestate, IDLESTATE_DESC); in cpuidle_state_desc()
280 * Returns number of supported C-states of CPU core cpu
282 * Zero if cpuidle does not export any C-states
284 unsigned int cpuidle_state_count(unsigned int cpu) in cpuidle_state_count() argument
295 snprintf(file, SYSFS_PATH_MAX, PATH_TO_CPU "cpu%u/cpuidle/state0", cpu); in cpuidle_state_count()
301 "cpu%u/cpuidle/state%d", cpu, idlestates); in cpuidle_state_count()
304 idlestates--; in cpuidle_state_count()
308 /* CPUidle general /sys/devices/system/cpu/cpuidle/ sysfs access ********/
311 * helper function to read file from /sys into given buffer
312 * fname is a relative path under "cpu/cpuidle/" dir
326 /* read access to files which contain one string */
360 if (result[strlen(result) - 1] == '\n') in sysfs_cpuidle_get_one_string()
361 result[strlen(result) - 1] = '\0'; in sysfs_cpuidle_get_one_string()
379 /* CPUidle idlestate specific /sys/devices/system/cpu/cpuX/cpuidle/ access */