Refreshed patch set for powertop
Note: Not fully test yet, only confirmed that can be built passed.
From 2fbaddc181a271c23db70c0fb089959fd437cb66 Mon Sep 17 00:00:00 2001 | |
From: Goldie Lin <[email protected]> | |
Date: Tue, 30 Jun 2015 14:23:30 +0800 | |
Subject: [PATCH 1/5] Android disable C exceptions | |
For some reason, ofstream fails to write to sysfs nodes | |
on Android. So use old-fashion open()/write()/close(). | |
--- | |
src/lib.cpp | 14 ++++++++++++++ | |
1 file changed, 14 insertions(+) | |
diff --git a/src/lib.cpp b/src/lib.cpp | |
index 437803b..ae83855 100644 | |
--- a/src/lib.cpp | |
+++ b/src/lib.cpp | |
@@ -169,6 +169,7 @@ void set_max_cpu(int cpu) | |
void write_sysfs(const string &filename, const string &value) | |
{ | |
+#ifndef ANDROID | |
ofstream file; | |
file.open(filename.c_str(), ios::out); | |
@@ -181,6 +182,19 @@ void write_sysfs(const string &filename, const string &value) | |
} catch (std::exception &exc) { | |
return; | |
} | |
+#else | |
+ int fd; | |
+ | |
+ fd = ::open(filename.c_str(), O_WRONLY); | |
+ if (fd < 0) | |
+ return; | |
+ | |
+ ::write(fd, value.c_str(), value.length()); | |
+ | |
+ close(fd); | |
+ | |
+ return; | |
+#endif | |
} | |
int read_sysfs(const string &filename, bool *ok) | |
-- | |
2.4.5 |
From 90c3e44b6752ed2dec4451aca2629bda788c915b Mon Sep 17 00:00:00 2001 | |
From: Goldie Lin <[email protected]> | |
Date: Tue, 30 Jun 2015 14:26:28 +0800 | |
Subject: [PATCH 2/5] Android prevent segfaults | |
The mbsrtowcs() in Android seems to change the content of | |
source pointer to 0x00. So save a copy of the source | |
string so we can manipulate it later, preventing segfaults. | |
--- | |
src/lib.cpp | 3 ++- | |
1 file changed, 2 insertions(+), 1 deletion(-) | |
diff --git a/src/lib.cpp b/src/lib.cpp | |
index ae83855..099b4cf 100644 | |
--- a/src/lib.cpp | |
+++ b/src/lib.cpp | |
@@ -275,6 +275,7 @@ string read_sysfs_string(const char *format, const char *param) | |
void align_string(char *buffer, size_t min_sz, size_t max_sz) | |
{ | |
size_t sz; | |
+ char *buf = buffer; | |
/** mbsrtowcs() allows NULL dst and zero sz, | |
* comparing to mbstowcs(), which causes undefined | |
@@ -288,7 +289,7 @@ void align_string(char *buffer, size_t min_sz, size_t max_sz) | |
return; | |
} | |
while (sz < min_sz) { | |
- strcat(buffer, " "); | |
+ strcat(buf, " "); | |
sz++; | |
} | |
} | |
-- | |
2.4.5 |
From d84bd13efcc285c83e778351adcb0c32c3ecac80 Mon Sep 17 00:00:00 2001 | |
From: Goldie Lin <[email protected]> | |
Date: Tue, 30 Jun 2015 14:39:31 +0800 | |
Subject: [PATCH 3/5] Android update Android.mk | |
1. Update Android.mk to include source files, | |
and paths to external includes/libraries. | |
2. Do not include libintl.h if NLS is not enabled. | |
3. Workaround missing functions in Android. | |
--- | |
Android.mk | 43 +++++++++++++++++++++++++++++++++---------- | |
README.android | 23 +++++++++++++++++++++++ | |
src/cpu/intel_cpus.h | 1 + | |
src/lib.cpp | 2 ++ | |
src/lib.h | 2 ++ | |
src/main.cpp | 4 ++++ | |
src/report/report.cpp | 5 +++++ | |
src/tuning/tuningusb.cpp | 1 + | |
8 files changed, 71 insertions(+), 10 deletions(-) | |
create mode 100644 README.android | |
diff --git a/Android.mk b/Android.mk | |
index 2461233..8c71e17 100644 | |
--- a/Android.mk | |
+++ b/Android.mk | |
@@ -1,18 +1,37 @@ | |
+# Please run this before building | |
+# ./src/csstoh.sh src/powertop.css src/css.h | |
+ | |
LOCAL_PATH := $(call my-dir) | |
include $(CLEAR_VARS) | |
LOCAL_MODULE_TAGS := debug | |
LOCAL_SHARED_LIBRARIES := libstlport \ | |
- libnl \ | |
- libpci \ | |
- libtraceevnet \ | |
+ libnl | |
+ | |
LOCAL_MODULE := powertop | |
#LOCAL_CFLAGS += -Wall -O2 -g -fno-omit-frame-pointer -fstack-protector -Wshadow -Wformat -D_FORTIFY_SOURCE=2 | |
#LOCAL_CPPFLAGS += -Wall -O2 -g -fno-omit-frame-pointer | |
+LOCAL_CFLAGS += -DHAVE_LIBNL20 | |
+LOCAL_CPPFLAGS += -DPACKAGE_VERSION=\"2.7\" -DPACKAGE=powertop -DHAVE_LIBNL20 | |
+ | |
LOCAL_C_INCLUDES += external/stlport/stlport/ external/stlport/stlport/stl external/stlport/stlport/using/h/ bionic external/libnl/include/ | |
+# ncurses | |
+LOCAL_C_INCLUDES += external/ncurses/include/ | |
+LOCAL_SHARED_LIBRARIES += libncurses | |
+ | |
+# pciutils | |
+LOCAL_C_INCLUDES += external/pciutils/include/ | |
+LOCAL_STATIC_LIBRARIES += libpci_static | |
+ | |
+# libtraceevent | |
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/traceevent/ | |
+ | |
+# local includes | |
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/src/ | |
+ | |
LOCAL_SRC_FILES += \ | |
src/parameters/parameters.cpp \ | |
src/parameters/persistent.cpp \ | |
@@ -21,10 +40,11 @@ LOCAL_SRC_FILES += \ | |
src/process/work.cpp \ | |
src/process/process.cpp \ | |
src/process/timer.cpp \ | |
- src/process/device.cpp \ | |
+ src/process/processdevice.cpp \ | |
src/process/interrupt.cpp \ | |
src/process/do_process.cpp \ | |
src/cpu/intel_cpus.cpp \ | |
+ src/cpu/intel_gpu.cpp \ | |
src/cpu/cpu.cpp \ | |
src/cpu/cpu_linux.cpp \ | |
src/cpu/cpudevice.cpp \ | |
@@ -39,19 +59,23 @@ LOCAL_SRC_FILES += \ | |
src/measurement/extech.cpp \ | |
src/measurement/sysfs.cpp \ | |
src/display.cpp \ | |
- src/report.cpp \ | |
+ src/report/report.cpp \ | |
+ src/report/report-maker.cpp \ | |
+ src/report/report-formatter-base.cpp \ | |
+ src/report/report-formatter-csv.cpp \ | |
+ src/report/report-formatter-html.cpp \ | |
+ src/report/report-data-html.cpp \ | |
src/main.cpp \ | |
src/tuning/tuning.cpp \ | |
src/tuning/tuningi2c.cpp \ | |
- src/tuning/usb.cpp \ | |
+ src/tuning/tuningusb.cpp \ | |
src/tuning/bluetooth.cpp \ | |
src/tuning/ethernet.cpp \ | |
src/tuning/runtime.cpp \ | |
src/tuning/iw.c \ | |
src/tuning/iw.h \ | |
src/tuning/tunable.cpp \ | |
- src/tuning/sysfs.cpp \ | |
- src/tuning/cpufreq.cpp \ | |
+ src/tuning/tuningsysfs.cpp \ | |
src/tuning/wifi.cpp \ | |
src/perf/perf_bundle.cpp \ | |
src/perf/perf.cpp \ | |
@@ -67,12 +91,11 @@ LOCAL_SRC_FILES += \ | |
src/devices/network.cpp \ | |
src/devices/device.cpp \ | |
src/devices/gpu_rapl_device.cpp \ | |
+ src/devices/devfreq.cpp \ | |
src/devlist.cpp \ | |
src/calibrate/calibrate.cpp \ | |
src/lib.cpp \ | |
traceevent/event-parse.c \ | |
- traceevent/event-parse.h \ | |
- traceevent/event-utils.h \ | |
traceevent/parse-filter.c \ | |
traceevent/parse-utils.c \ | |
traceevent/trace-seq.c | |
diff --git a/README.android b/README.android | |
new file mode 100644 | |
index 0000000..0765b01 | |
--- /dev/null | |
+++ b/README.android | |
@@ -0,0 +1,23 @@ | |
+To build PowerTop for Android: | |
+ | |
+1. Obtain pciutils and ncurses libraries. | |
+ Skip this step if they are already in the tree. | |
+ | |
+ pciutils: Clone | |
+ https://github.com/trevd/android_external_pciutils | |
+ into external/pciutils | |
+ | |
+ ncurses: Clone | |
+ https://github.com/cvpcs/android_external_libncurses | |
+ into external/ncurses | |
+ | |
+2. Run | |
+ ./src/csstoh.sh src/powertop.css src/css.h | |
+ to generate the css.h header file. | |
+ | |
+3. Apply patches inside patches/Android | |
+ | |
+4. PowerTop can be built with top level make, | |
+ or by doing "mm". | |
+ | |
+ The resulting binary is under $ANDROID_PRODUCT_OUT/system/bin/powertop | |
diff --git a/src/cpu/intel_cpus.h b/src/cpu/intel_cpus.h | |
index 0331069..830f06b 100644 | |
--- a/src/cpu/intel_cpus.h | |
+++ b/src/cpu/intel_cpus.h | |
@@ -55,6 +55,7 @@ protected: | |
DIR *dir; | |
public: | |
intel_util(); | |
+ virtual ~intel_util() {}; | |
virtual void byt_has_ahci(); | |
virtual int get_byt_ahci_support(); | |
}; | |
diff --git a/src/lib.cpp b/src/lib.cpp | |
index 099b4cf..d61903c 100644 | |
--- a/src/lib.cpp | |
+++ b/src/lib.cpp | |
@@ -52,7 +52,9 @@ extern "C" { | |
#include <sys/stat.h> | |
#include <dirent.h> | |
#include <locale.h> | |
+#ifdef ENABLE_NLS | |
#include <libintl.h> | |
+#endif | |
#include <limits> | |
#include <math.h> | |
#include <ncurses.h> | |
diff --git a/src/lib.h b/src/lib.h | |
index 5c94271..1fb51b7 100644 | |
--- a/src/lib.h | |
+++ b/src/lib.h | |
@@ -25,7 +25,9 @@ | |
#ifndef INCLUDE_GUARD_LIB_H | |
#define INCLUDE_GUARD_LIB_H | |
+#ifdef ENABLE_NLS | |
#include <libintl.h> | |
+#endif | |
#include <stdint.h> | |
#include <stdlib.h> | |
diff --git a/src/main.cpp b/src/main.cpp | |
index dc69fca..1e56af1 100644 | |
--- a/src/main.cpp | |
+++ b/src/main.cpp | |
@@ -44,7 +44,9 @@ | |
#include "perf/perf.h" | |
#include "perf/perf_bundle.h" | |
#include "lib.h" | |
+#ifndef ANDROID | |
#include "../config.h" | |
+#endif | |
#include "devices/device.h" | |
@@ -392,7 +394,9 @@ int main(int argc, char **argv) | |
char workload[4096] = {0,}; | |
int iterations = 1, auto_tune = 0; | |
+#ifndef ANDROID | |
set_new_handler(out_of_memory); | |
+#endif | |
setlocale (LC_ALL, ""); | |
diff --git a/src/report/report.cpp b/src/report/report.cpp | |
index cd3c961..568ddb4 100644 | |
--- a/src/report/report.cpp | |
+++ b/src/report/report.cpp | |
@@ -37,6 +37,11 @@ | |
#include <unistd.h> | |
#include "report-data-html.h" | |
+// not in Android c-lib | |
+#ifdef ANDROID | |
+#define strchrnul strchr | |
+#endif | |
+ | |
using namespace std; | |
struct reportstream reportout; | |
diff --git a/src/tuning/tuningusb.cpp b/src/tuning/tuningusb.cpp | |
index d2a0c11..a0476de 100644 | |
--- a/src/tuning/tuningusb.cpp | |
+++ b/src/tuning/tuningusb.cpp | |
@@ -32,6 +32,7 @@ | |
#include <utility> | |
#include <iostream> | |
#include <fstream> | |
+#include <ctype.h> | |
#include "../lib.h" | |
-- | |
2.4.5 |
From 067aba5e6c329e7970cbe77474b3abe28a99e092 Mon Sep 17 00:00:00 2001 | |
From: Goldie Lin <[email protected]> | |
Date: Tue, 30 Jun 2015 14:41:01 +0800 | |
Subject: [PATCH 4/5] Added | |
patches/android/0001-Android-disable-C-exceptions.patch | |
--- | |
.../0001-Android-disable-C-exceptions.patch | 221 +++++++++++++++++++++ | |
1 file changed, 221 insertions(+) | |
create mode 100644 patches/android/0001-Android-disable-C-exceptions.patch | |
diff --git a/patches/android/0001-Android-disable-C-exceptions.patch b/patches/android/0001-Android-disable-C-exceptions.patch | |
new file mode 100644 | |
index 0000000..89d7b2b | |
--- /dev/null | |
+++ b/patches/android/0001-Android-disable-C-exceptions.patch | |
@@ -0,0 +1,221 @@ | |
+From 604d8f6da54524f0f7bfdd7aea91d353b4f1b612 Mon Sep 17 00:00:00 2001 | |
+From: Daniel Leung <[email protected]> | |
+Date: Wed, 25 Feb 2015 13:24:14 -0800 | |
+Subject: [PATCH 1/1] Android: disable C++ exceptions | |
+ | |
+Android native C++ libraries do not support C++ | |
+exceptions. | |
+ | |
+Signed-off-by: Daniel Leung <[email protected]> | |
+--- | |
+ Android.mk | 2 +- | |
+ src/devices/ahci.cpp | 8 ++++++++ | |
+ src/devices/alsa.cpp | 8 ++++++++ | |
+ src/lib.cpp | 19 +++++++++++++++++++ | |
+ 4 files changed, 36 insertions(+), 1 deletion(-) | |
+ | |
+diff --git a/Android.mk b/Android.mk | |
+index dd98d0f..f6b8689 100644 | |
+--- a/Android.mk | |
++++ b/Android.mk | |
+@@ -14,7 +14,7 @@ LOCAL_MODULE := powertop | |
+ #LOCAL_CPPFLAGS += -Wall -O2 -g -fno-omit-frame-pointer | |
+ | |
+ LOCAL_CFLAGS += -DHAVE_LIBNL20 | |
+-LOCAL_CPPFLAGS += -DPACKAGE_VERSION=\"2.7\" -DPACKAGE=powertop -DHAVE_LIBNL20 | |
++LOCAL_CPPFLAGS += -DPACKAGE_VERSION=\"2.7\" -DPACKAGE=powertop -DHAVE_LIBNL20 -DDISABLE_TRYCATCH | |
+ | |
+ LOCAL_C_INCLUDES += external/stlport/stlport/ external/stlport/stlport/stl external/stlport/stlport/using/h/ bionic external/libnl/include/ | |
+ | |
+diff --git a/src/devices/ahci.cpp b/src/devices/ahci.cpp | |
+index 72e889f..ddf20b8 100644 | |
+--- a/src/devices/ahci.cpp | |
++++ b/src/devices/ahci.cpp | |
+@@ -161,7 +161,9 @@ void ahci::start_measurement(void) | |
+ ifstream file; | |
+ | |
+ sprintf(filename, "%s/ahci_alpm_active", sysfs_path); | |
++#ifndef DISABLE_TRYCATCH | |
+ try { | |
++#endif | |
+ file.open(filename, ios::in); | |
+ if (file) { | |
+ file >> start_active; | |
+@@ -186,10 +188,12 @@ void ahci::start_measurement(void) | |
+ file >> start_devslp; | |
+ } | |
+ file.close(); | |
++#ifndef DISABLE_TRYCATCH | |
+ } | |
+ catch (std::ios_base::failure &c) { | |
+ fprintf(stderr, "%s\n", c.what()); | |
+ } | |
++#endif | |
+ | |
+ } | |
+ | |
+@@ -201,7 +205,9 @@ void ahci::end_measurement(void) | |
+ double p; | |
+ double total; | |
+ | |
++#ifndef DISABLE_TRYCATCH | |
+ try { | |
++#endif | |
+ sprintf(filename, "%s/ahci_alpm_active", sysfs_path); | |
+ file.open(filename, ios::in); | |
+ if (file) { | |
+@@ -226,10 +232,12 @@ void ahci::end_measurement(void) | |
+ file >> end_devslp; | |
+ } | |
+ file.close(); | |
++#ifndef DISABLE_TRYCATCH | |
+ } | |
+ catch (std::ios_base::failure &c) { | |
+ fprintf(stderr, "%s\n", c.what()); | |
+ } | |
++#endif | |
+ if (end_active < start_active) | |
+ end_active = start_active; | |
+ if (end_partial < start_partial) | |
+diff --git a/src/devices/alsa.cpp b/src/devices/alsa.cpp | |
+index a1fca71..ba3c0b6 100644 | |
+--- a/src/devices/alsa.cpp | |
++++ b/src/devices/alsa.cpp | |
+@@ -87,7 +87,9 @@ void alsa::start_measurement(void) | |
+ ifstream file; | |
+ | |
+ sprintf(filename, "%s/power_off_acct", sysfs_path); | |
++#ifndef DISABLE_TRYCATCH | |
+ try { | |
++#endif | |
+ file.open(filename, ios::in); | |
+ if (file) { | |
+ file >> start_inactive; | |
+@@ -100,10 +102,12 @@ void alsa::start_measurement(void) | |
+ file >> start_active; | |
+ } | |
+ file.close(); | |
++#ifndef DISABLE_TRYCATCH | |
+ } | |
+ catch (std::ios_base::failure &c) { | |
+ fprintf(stderr, "%s\n", c.what()); | |
+ } | |
++#endif | |
+ } | |
+ | |
+ void alsa::end_measurement(void) | |
+@@ -113,7 +117,9 @@ void alsa::end_measurement(void) | |
+ double p; | |
+ | |
+ sprintf(filename, "%s/power_off_acct", sysfs_path); | |
++#ifndef DISABLE_TRYCATCH | |
+ try { | |
++#endif | |
+ file.open(filename, ios::in); | |
+ if (file) { | |
+ file >> end_inactive; | |
+@@ -126,10 +132,12 @@ void alsa::end_measurement(void) | |
+ file >> end_active; | |
+ } | |
+ file.close(); | |
++#ifndef DISABLE_TRYCATCH | |
+ } | |
+ catch (std::ios_base::failure &c) { | |
+ fprintf(stderr, "%s\n", c.what()); | |
+ } | |
++#endif | |
+ | |
+ p = (end_active - start_active) / (0.001 + end_active + end_inactive - start_active - start_inactive) * 100.0; | |
+ report_utilization(name, p); | |
+diff --git a/src/lib.cpp b/src/lib.cpp | |
+index 0dec0b7..91dac7a 100644 | |
+--- a/src/lib.cpp | |
++++ b/src/lib.cpp | |
+@@ -176,13 +176,17 @@ void write_sysfs(const string &filename, const string &value) | |
+ file.open(filename.c_str(), ios::out); | |
+ if (!file) | |
+ return; | |
++#ifndef DISABLE_TRYCATCH | |
+ try | |
+ { | |
++#endif | |
+ file << value; | |
+ file.close(); | |
++#ifndef DISABLE_TRYCATCH | |
+ } catch (std::exception &exc) { | |
+ return; | |
+ } | |
++#endif | |
+ } | |
+ | |
+ int read_sysfs(const string &filename, bool *ok) | |
+@@ -196,16 +200,23 @@ int read_sysfs(const string &filename, bool *ok) | |
+ *ok = false; | |
+ return 0; | |
+ } | |
++#ifndef DISABLE_TRYCATCH | |
+ try | |
+ { | |
++#else | |
++ if (ok) | |
++ *ok = false; | |
++#endif | |
+ file >> i; | |
+ if (ok) | |
+ *ok = true; | |
++#ifndef DISABLE_TRYCATCH | |
+ } catch (std::exception &exc) { | |
+ if (ok) | |
+ *ok = false; | |
+ i = 0; | |
+ } | |
++#endif | |
+ file.close(); | |
+ return i; | |
+ } | |
+@@ -219,17 +230,21 @@ string read_sysfs_string(const string &filename) | |
+ file.open(filename.c_str(), ios::in); | |
+ if (!file) | |
+ return ""; | |
++#ifndef DISABLE_TRYCATCH | |
+ try | |
+ { | |
++#endif | |
+ file.getline(content, 4096); | |
+ file.close(); | |
+ c = strchr(content, '\n'); | |
+ if (c) | |
+ *c = 0; | |
++#ifndef DISABLE_TRYCATCH | |
+ } catch (std::exception &exc) { | |
+ file.close(); | |
+ return ""; | |
+ } | |
++#endif | |
+ return content; | |
+ } | |
+ | |
+@@ -246,17 +261,21 @@ string read_sysfs_string(const char *format, const char *param) | |
+ file.open(filename, ios::in); | |
+ if (!file) | |
+ return ""; | |
++#ifndef DISABLE_TRYCATCH | |
+ try | |
+ { | |
++#endif | |
+ file.getline(content, 4096); | |
+ file.close(); | |
+ c = strchr(content, '\n'); | |
+ if (c) | |
+ *c = 0; | |
++#ifndef DISABLE_TRYCATCH | |
+ } catch (std::exception &exc) { | |
+ file.close(); | |
+ return ""; | |
+ } | |
++#endif | |
+ return content; | |
+ } | |
+ | |
+-- | |
+1.8.3.2 | |
-- | |
2.4.5 |
From 6366c8e064ebfd74a3917d37f6ebd3cb9a2c1c6d Mon Sep 17 00:00:00 2001 | |
From: Goldie Lin <[email protected]> | |
Date: Tue, 30 Jun 2015 14:53:22 +0800 | |
Subject: [PATCH 5/5] Android: disable C++ exceptions | |
Android native C++ libraries do not support C++ | |
exceptions. | |
--- | |
Android.mk | 2 +- | |
src/devices/ahci.cpp | 8 ++++++++ | |
src/devices/alsa.cpp | 8 ++++++++ | |
src/lib.cpp | 19 +++++++++++++++++++ | |
4 files changed, 36 insertions(+), 1 deletion(-) | |
diff --git a/Android.mk b/Android.mk | |
index 8c71e17..38ae297 100644 | |
--- a/Android.mk | |
+++ b/Android.mk | |
@@ -14,7 +14,7 @@ LOCAL_MODULE := powertop | |
#LOCAL_CPPFLAGS += -Wall -O2 -g -fno-omit-frame-pointer | |
LOCAL_CFLAGS += -DHAVE_LIBNL20 | |
-LOCAL_CPPFLAGS += -DPACKAGE_VERSION=\"2.7\" -DPACKAGE=powertop -DHAVE_LIBNL20 | |
+LOCAL_CPPFLAGS += -DPACKAGE_VERSION=\"2.7\" -DPACKAGE=powertop -DHAVE_LIBNL20 -DDISABLE_TRYCATCH | |
LOCAL_C_INCLUDES += external/stlport/stlport/ external/stlport/stlport/stl external/stlport/stlport/using/h/ bionic external/libnl/include/ | |
diff --git a/src/devices/ahci.cpp b/src/devices/ahci.cpp | |
index 72e889f..ddf20b8 100644 | |
--- a/src/devices/ahci.cpp | |
+++ b/src/devices/ahci.cpp | |
@@ -161,7 +161,9 @@ void ahci::start_measurement(void) | |
ifstream file; | |
sprintf(filename, "%s/ahci_alpm_active", sysfs_path); | |
+#ifndef DISABLE_TRYCATCH | |
try { | |
+#endif | |
file.open(filename, ios::in); | |
if (file) { | |
file >> start_active; | |
@@ -186,10 +188,12 @@ void ahci::start_measurement(void) | |
file >> start_devslp; | |
} | |
file.close(); | |
+#ifndef DISABLE_TRYCATCH | |
} | |
catch (std::ios_base::failure &c) { | |
fprintf(stderr, "%s\n", c.what()); | |
} | |
+#endif | |
} | |
@@ -201,7 +205,9 @@ void ahci::end_measurement(void) | |
double p; | |
double total; | |
+#ifndef DISABLE_TRYCATCH | |
try { | |
+#endif | |
sprintf(filename, "%s/ahci_alpm_active", sysfs_path); | |
file.open(filename, ios::in); | |
if (file) { | |
@@ -226,10 +232,12 @@ void ahci::end_measurement(void) | |
file >> end_devslp; | |
} | |
file.close(); | |
+#ifndef DISABLE_TRYCATCH | |
} | |
catch (std::ios_base::failure &c) { | |
fprintf(stderr, "%s\n", c.what()); | |
} | |
+#endif | |
if (end_active < start_active) | |
end_active = start_active; | |
if (end_partial < start_partial) | |
diff --git a/src/devices/alsa.cpp b/src/devices/alsa.cpp | |
index a1fca71..ba3c0b6 100644 | |
--- a/src/devices/alsa.cpp | |
+++ b/src/devices/alsa.cpp | |
@@ -87,7 +87,9 @@ void alsa::start_measurement(void) | |
ifstream file; | |
sprintf(filename, "%s/power_off_acct", sysfs_path); | |
+#ifndef DISABLE_TRYCATCH | |
try { | |
+#endif | |
file.open(filename, ios::in); | |
if (file) { | |
file >> start_inactive; | |
@@ -100,10 +102,12 @@ void alsa::start_measurement(void) | |
file >> start_active; | |
} | |
file.close(); | |
+#ifndef DISABLE_TRYCATCH | |
} | |
catch (std::ios_base::failure &c) { | |
fprintf(stderr, "%s\n", c.what()); | |
} | |
+#endif | |
} | |
void alsa::end_measurement(void) | |
@@ -113,7 +117,9 @@ void alsa::end_measurement(void) | |
double p; | |
sprintf(filename, "%s/power_off_acct", sysfs_path); | |
+#ifndef DISABLE_TRYCATCH | |
try { | |
+#endif | |
file.open(filename, ios::in); | |
if (file) { | |
file >> end_inactive; | |
@@ -126,10 +132,12 @@ void alsa::end_measurement(void) | |
file >> end_active; | |
} | |
file.close(); | |
+#ifndef DISABLE_TRYCATCH | |
} | |
catch (std::ios_base::failure &c) { | |
fprintf(stderr, "%s\n", c.what()); | |
} | |
+#endif | |
p = (end_active - start_active) / (0.001 + end_active + end_inactive - start_active - start_inactive) * 100.0; | |
report_utilization(name, p); | |
diff --git a/src/lib.cpp b/src/lib.cpp | |
index d61903c..5b4a9b9 100644 | |
--- a/src/lib.cpp | |
+++ b/src/lib.cpp | |
@@ -177,13 +177,17 @@ void write_sysfs(const string &filename, const string &value) | |
file.open(filename.c_str(), ios::out); | |
if (!file) | |
return; | |
+#ifndef DISABLE_TRYCATCH | |
try | |
{ | |
+#endif | |
file << value; | |
file.close(); | |
+#ifndef DISABLE_TRYCATCH | |
} catch (std::exception &exc) { | |
return; | |
} | |
+#endif | |
#else | |
int fd; | |
@@ -210,16 +214,23 @@ int read_sysfs(const string &filename, bool *ok) | |
*ok = false; | |
return 0; | |
} | |
+#ifndef DISABLE_TRYCATCH | |
try | |
{ | |
+#else | |
+ if (ok) | |
+ *ok = false; | |
+#endif | |
file >> i; | |
if (ok) | |
*ok = true; | |
+#ifndef DISABLE_TRYCATCH | |
} catch (std::exception &exc) { | |
if (ok) | |
*ok = false; | |
i = 0; | |
} | |
+#endif | |
file.close(); | |
return i; | |
} | |
@@ -233,17 +244,21 @@ string read_sysfs_string(const string &filename) | |
file.open(filename.c_str(), ios::in); | |
if (!file) | |
return ""; | |
+#ifndef DISABLE_TRYCATCH | |
try | |
{ | |
+#endif | |
file.getline(content, 4096); | |
file.close(); | |
c = strchr(content, '\n'); | |
if (c) | |
*c = 0; | |
+#ifndef DISABLE_TRYCATCH | |
} catch (std::exception &exc) { | |
file.close(); | |
return ""; | |
} | |
+#endif | |
return content; | |
} | |
@@ -260,17 +275,21 @@ string read_sysfs_string(const char *format, const char *param) | |
file.open(filename, ios::in); | |
if (!file) | |
return ""; | |
+#ifndef DISABLE_TRYCATCH | |
try | |
{ | |
+#endif | |
file.getline(content, 4096); | |
file.close(); | |
c = strchr(content, '\n'); | |
if (c) | |
*c = 0; | |
+#ifndef DISABLE_TRYCATCH | |
} catch (std::exception &exc) { | |
file.close(); | |
return ""; | |
} | |
+#endif | |
return content; | |
} | |
-- | |
2.4.5 |