powertop: merge some patches for bugfixes from Fedora.

This commit is contained in:
Juan RP 2013-02-14 06:57:10 +01:00
parent c6919edaa9
commit a1cda96b29
6 changed files with 270 additions and 1 deletions

View File

@ -0,0 +1,34 @@
--- src/parameters/persistent.cpp.orig 2012-05-04 18:03:54.000000000 +0200
+++ src/parameters/persistent.cpp 2012-05-16 21:29:24.785390730 +0200
@@ -129,9 +129,6 @@ void save_parameters(const char *filenam
// printf("result size is %i, #parameters is %i \n", (int)past_results.size(), (int)all_parameters.parameters.size());
- if (!global_power_valid())
- return;
-
pathname = get_param_directory(filename);
file.open(pathname, ios::out);
@@ -140,12 +137,15 @@ void save_parameters(const char *filenam
return;
}
- map<string, int>::iterator it;
-
- for (it = param_index.begin(); it != param_index.end(); it++) {
- int index;
- index = it->second;
- file << it->first << "\t" << setprecision(9) << all_parameters.parameters[index] << "\n";
+ if (global_power_valid())
+ {
+ map<string, int>::iterator it;
+
+ for (it = param_index.begin(); it != param_index.end(); it++) {
+ int index;
+ index = it->second;
+ file << it->first << "\t" << setprecision(9) << all_parameters.parameters[index] << "\n";
+ }
}
file.close();
}

View File

@ -0,0 +1,41 @@
From bd72b4433fec358801afebf3f02ab899b1745c5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Wed, 28 Nov 2012 16:31:38 +0100
Subject: [PATCH] report: fixed crash when writing report to RO filesystem
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---
src/report/report.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/report/report.cpp b/src/report/report.cpp
index 51bc6a7..c018bb1 100644
--- src/report/report.cpp
+++ src/report/report.cpp
@@ -183,13 +183,16 @@ void init_report_output(char *filename_str, int iterations)
void finish_report_output(void)
{
- fprintf(stderr, _("PowerTOP outputing using base filename %s\n"), reportout.filename);
if (reporttype == REPORT_OFF)
return;
report.finish_report();
- fputs(report.get_result(), reportout.report_file);
- fdatasync(fileno(reportout.report_file));
- fclose(reportout.report_file);
+ if (reportout.report_file)
+ {
+ fprintf(stderr, _("PowerTOP outputing using base filename %s\n"), reportout.filename);
+ fputs(report.get_result(), reportout.report_file);
+ fdatasync(fileno(reportout.report_file));
+ fclose(reportout.report_file);
+ }
report.clear_result();
}
--
1.7.11.7

View File

@ -0,0 +1,11 @@
diff --git a/src/cpu/intel_cpus.h b/src/cpu/intel_cpus.h
index 1949af1..752e8d0 100644
--- src/cpu/intel_cpus.h
+++ src/cpu/intel_cpus.h
@@ -158,5 +158,6 @@ public:
virtual char * fill_cstate_line(int line_nr, char *buffer, const char *separator);
virtual int has_pstate_level(int level) { return 0; };
virtual int has_pstates(void) { return 0; };
+ virtual void wiggle(void) { };
};

View File

@ -0,0 +1,149 @@
From 63b20549280e606e5e73d5c9fe701c79a5abc6cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= <jskarvad@redhat.com>
Date: Wed, 12 Dec 2012 16:19:56 +0100
Subject: [PATCH] Reduced number of useless 'open' syscalls
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
There are called many useless 'open' syscalls that always fail, like:
open("/sys/devices/system/cpu/uevent/cpufreq/scaling_governor", O_RDONLY) = -1 ENOTDIR (Not a directory)
This patch filters them to 'likely' patterns, like e.g.:
/sys/devices/system/cpu/cpuX/cpufreq/scaling_governor, where X is string
starting with digit. For match cases it will add only small overhead.
Originally reported as:
https://bugzilla.redhat.com/show_bug.cgi?id=886185
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
---
src/devices/alsa.cpp | 2 +-
src/devices/backlight.cpp | 2 ++
src/devlist.cpp | 3 ++-
src/tuning/cpufreq.cpp | 11 ++++++-----
src/tuning/tuningsysfs.cpp | 5 +----
5 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/devices/alsa.cpp b/src/devices/alsa.cpp
index 4f5d3f9..33a52f5 100644
--- src/devices/alsa.cpp
+++ src/devices/alsa.cpp
@@ -167,7 +167,7 @@ void create_all_alsa(void)
entry = readdir(dir);
if (!entry)
break;
- if (entry->d_name[0] == '.')
+ if (strncmp(entry->d_name, "hwC", 3) != 0)
continue;
sprintf(filename, "/sys/class/sound/card0/%s/power_on_acct", entry->d_name);
diff --git a/src/devices/backlight.cpp b/src/devices/backlight.cpp
index b8c9147..03aa5bc 100644
--- src/devices/backlight.cpp
+++ src/devices/backlight.cpp
@@ -90,6 +90,8 @@ static int dpms_screen_on(void)
if (!entry)
break;
+ if (strncmp(entry->d_name, "card", 4) != 0)
+ continue;
sprintf(filename, "/sys/class/drm/card0/%s/enabled", entry->d_name);
file.open(filename, ios::in);
if (!file)
diff --git a/src/devlist.cpp b/src/devlist.cpp
index de5abff..633a568 100644
--- src/devlist.cpp
+++ src/devlist.cpp
@@ -37,6 +37,7 @@
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
+#include <ctype.h>
using namespace std;
@@ -117,7 +118,7 @@ void collect_open_devices(void)
entry2 = readdir(dir2);
if (!entry2)
break;
- if (entry2->d_name[0] == '.')
+ if (!isdigit(entry2->d_name[0]))
continue;
sprintf(filename, "/proc/%s/fd/%s", entry->d_name, entry2->d_name);
memset(link, 0, 4096);
diff --git a/src/tuning/cpufreq.cpp b/src/tuning/cpufreq.cpp
index df245ad..e870559 100644
--- src/tuning/cpufreq.cpp
+++ src/tuning/cpufreq.cpp
@@ -36,6 +36,7 @@
#include <dirent.h>
#include <errno.h>
#include <sys/stat.h>
+#include <ctype.h>
#include "../lib.h"
#include "cpufreq.h"
@@ -72,7 +73,7 @@ int cpufreq_tunable::good_bad(void)
return ret;
while ((dirent = readdir(dir))) {
- if (dirent->d_name[0]=='.')
+ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3]))
continue;
sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name);
file = fopen(filename, "r");
@@ -123,7 +124,7 @@ void cpufreq_tunable::toggle(void)
return;
while ((dirent = readdir(dir))) {
- if (dirent->d_name[0]=='.')
+ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3]))
continue;
sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name);
file = fopen(filename, "w");
@@ -141,7 +142,7 @@ void cpufreq_tunable::toggle(void)
return;
while ((dirent = readdir(dir))) {
- if (dirent->d_name[0]=='.')
+ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3]))
continue;
sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name);
file = fopen(filename, "w");
@@ -171,7 +172,7 @@ const char *cpufreq_tunable::toggle_script(void) {
return NULL;
while ((dirent = readdir(dir))) {
- if (dirent->d_name[0]=='.')
+ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3]))
continue;
sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name);
if (stat(filename, &statbuf) == -1)
@@ -189,7 +190,7 @@ const char *cpufreq_tunable::toggle_script(void) {
return NULL;
while ((dirent = readdir(dir))) {
- if (dirent->d_name[0]=='.')
+ if (strncmp(dirent->d_name, "cpu", 3) != 0 || !isdigit(dirent->d_name[3]))
continue;
sprintf(filename, "/sys/devices/system/cpu/%s/cpufreq/scaling_governor", dirent->d_name);
if (stat(filename, &statbuf) == -1)
diff --git a/src/tuning/tuningsysfs.cpp b/src/tuning/tuningsysfs.cpp
index 33d3786..ec1ca6b 100644
--- src/tuning/tuningsysfs.cpp
+++ src/tuning/tuningsysfs.cpp
@@ -131,10 +131,7 @@ void add_sata_tunables(void)
if (!entry)
break;
- if (strcmp(entry->d_name, ".") == 0)
- continue;
-
- if (strcmp(entry->d_name, "..") == 0)
+ if (entry->d_name[0] == '.')
continue;
sprintf(filename, "/sys/class/scsi_host/%s/link_power_management_policy", entry->d_name);
--
1.7.11.7

View File

@ -0,0 +1,34 @@
From: Namhyung Kim <namhyung@gmail.com>
To: powertop@lists.01.org
Date: Sun, 18 Nov 2012 00:42:47 +0900
Message-Id: <1353166967-24095-1-git-send-email-namhyung@gmail.com>
Subject: [Powertop] [PATCH] Use PACKAGE_VERSION for POWERTOP_VERSION
It was missed to update POWERTOP_VERSION macro so that the
new v2.2 release still shows v2.1 string on the header of
ncurses window. Convert to use PACKAGE_VERSION macro which
set by autotools to the AC_INIT version so that it cannot
be missed anymore.
Signed-off-by: Namhyung Kim <namhyung@gmail.com>
---
src/lib.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib.h b/src/lib.h
index 8cf4632..209421a 100644
--- src/lib.h
+++ src/lib.h
@@ -35,8 +35,8 @@
#define _(STRING) gettext(STRING)
-#define POWERTOP_VERSION "v2.1"
-#define POWERTOP_SHORT_VERSION "2.1"
+#define POWERTOP_VERSION "v"PACKAGE_VERSION
+#define POWERTOP_SHORT_VERSION PACKAGE_VERSION
extern int get_max_cpu(void);
--
1.7.9.2

View File

@ -1,7 +1,7 @@
# Template file for 'powertop'
pkgname=powertop
version=2.2
revision=1
revision=2
build_style=gnu-configure
makedepends="pkg-config ncurses-devel pciutils-devel libnl3-devel"
short_desc="Linux tool to find out what is using power on computer"