summaryrefslogtreecommitdiffstats
path: root/tools/power/cpupower/lib/cpupower.c
diff options
context:
space:
mode:
authorBorislav Petkov <bp@suse.de>2020-10-15 12:28:58 +0200
committerBorislav Petkov <bp@suse.de>2020-11-16 17:42:12 +0100
commit8113ab20e850491b4144a1a64246f07a2d737a49 (patch)
tree84ff07078bbf6e1e3dda50f7f4b7fff8d8336cd1 /tools/power/cpupower/lib/cpupower.c
parent632211cdd6ad0efeef32c53ac731901b4bed3b94 (diff)
tools/power/cpupower: Read energy_perf_bias from sysfs
... instead of poking at the MSR. For that, move the accessor functions to misc.c and add a sysfs-writing function too. There should be no functional changes resulting from this. Signed-off-by: Borislav Petkov <bp@suse.de> Reviewed-by: Shuah Khan <skhan@linuxfoundation.org> Cc: Thomas Renninger <trenn@suse.com> Link: https://lkml.kernel.org/r/20201029190259.3476-2-bp@alien8.de
Diffstat (limited to 'tools/power/cpupower/lib/cpupower.c')
-rw-r--r--tools/power/cpupower/lib/cpupower.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/tools/power/cpupower/lib/cpupower.c b/tools/power/cpupower/lib/cpupower.c
index 3656e697537e..3f7d0c0c5067 100644
--- a/tools/power/cpupower/lib/cpupower.c
+++ b/tools/power/cpupower/lib/cpupower.c
@@ -16,8 +16,8 @@
unsigned int cpupower_read_sysfs(const char *path, char *buf, size_t buflen)
{
- int fd;
ssize_t numread;
+ int fd;
fd = open(path, O_RDONLY);
if (fd == -1)
@@ -35,6 +35,27 @@ unsigned int cpupower_read_sysfs(const char *path, char *buf, size_t buflen)
return (unsigned int) numread;
}
+unsigned int cpupower_write_sysfs(const char *path, char *buf, size_t buflen)
+{
+ ssize_t numwritten;
+ int fd;
+
+ fd = open(path, O_WRONLY);
+ if (fd == -1)
+ return 0;
+
+ numwritten = write(fd, buf, buflen - 1);
+ if (numwritten < 1) {
+ perror(path);
+ close(fd);
+ return -1;
+ }
+
+ close(fd);
+
+ return (unsigned int) numwritten;
+}
+
/*
* Detect whether a CPU is online
*