Skip to content

Commit

Permalink
cpupower: Add the function to get the sysfs value from specific table
Browse files Browse the repository at this point in the history
Expose the helper into cpufreq header, then cpufreq driver can use this
function to get the sysfs value if it has any specific sysfs interfaces.

Signed-off-by: Huang Rui <ray.huang@amd.com>
  • Loading branch information
huangrui authored and xanmod committed Feb 23, 2022
1 parent 6e70164 commit bbe0cb5
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
23 changes: 16 additions & 7 deletions tools/power/cpupower/lib/cpufreq.c
Expand Up @@ -83,20 +83,21 @@ static const char *cpufreq_value_files[MAX_CPUFREQ_VALUE_READ_FILES] = {
[STATS_NUM_TRANSITIONS] = "stats/total_trans"
};


static unsigned long sysfs_cpufreq_get_one_value(unsigned int cpu,
enum cpufreq_value which)
unsigned long cpufreq_get_sysfs_value_from_table(unsigned int cpu,
const char **table,
unsigned int index,
unsigned int size)
{
unsigned long value;
unsigned int len;
char linebuf[MAX_LINE_LEN];
char *endp;

if (which >= MAX_CPUFREQ_VALUE_READ_FILES)
if (!table || index >= size || !table[index])
return 0;

len = sysfs_cpufreq_read_file(cpu, cpufreq_value_files[which],
linebuf, sizeof(linebuf));
len = sysfs_cpufreq_read_file(cpu, table[index], linebuf,
sizeof(linebuf));

if (len == 0)
return 0;
Expand All @@ -109,6 +110,14 @@ static unsigned long sysfs_cpufreq_get_one_value(unsigned int cpu,
return value;
}

static unsigned long sysfs_cpufreq_get_one_value(unsigned int cpu,
enum cpufreq_value which)
{
return cpufreq_get_sysfs_value_from_table(cpu, cpufreq_value_files,
which,
MAX_CPUFREQ_VALUE_READ_FILES);
}

/* read access to files which contain one string */

enum cpufreq_string {
Expand All @@ -124,7 +133,7 @@ static const char *cpufreq_string_files[MAX_CPUFREQ_STRING_FILES] = {


static char *sysfs_cpufreq_get_one_string(unsigned int cpu,
enum cpufreq_string which)
enum cpufreq_string which)
{
char linebuf[MAX_LINE_LEN];
char *result;
Expand Down
12 changes: 12 additions & 0 deletions tools/power/cpupower/lib/cpufreq.h
Expand Up @@ -203,6 +203,18 @@ int cpufreq_modify_policy_governor(unsigned int cpu, char *governor);
int cpufreq_set_frequency(unsigned int cpu,
unsigned long target_frequency);

/*
* get the sysfs value from specific table
*
* Read the value with the sysfs file name from specific table. Does
* only work if the cpufreq driver has the specific sysfs interfaces.
*/

unsigned long cpufreq_get_sysfs_value_from_table(unsigned int cpu,
const char **table,
unsigned int index,
unsigned int size);

#ifdef __cplusplus
}
#endif
Expand Down

0 comments on commit bbe0cb5

Please sign in to comment.