From aefa4022c4774e9efef0e57694dfb1807b293f97 Mon Sep 17 00:00:00 2001 From: Simon Busch Date: Mon, 19 Nov 2012 09:10:58 +0100 Subject: [PATCH] sawmill_logger: don't try to access sysfs entries when not existent Without this we have the following in the system log: 2012-11-19T08:10:34.479387Z [45097] tuna user.err sleepd: sysfs:SysfsGetDouble: Failed to open file '/sys/devices/w1 bus master/w1_master_slaves/getrawcoulomb': No such file or directory 2012-11-19T08:10:34.479875Z [45097] tuna user.err sleepd: sysfs:SysfsGetDouble: Failed to open file '/sys/devices/w1 bus master/w1_master_slaves/getcoulomb': No such file or directory Open-webOS-DCO-1.0-Signed-off-by: Simon Busch --- src/pwrevents/sawmill_logger.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/pwrevents/sawmill_logger.c b/src/pwrevents/sawmill_logger.c index 912f05c..3e3808f 100644 --- a/src/pwrevents/sawmill_logger.c +++ b/src/pwrevents/sawmill_logger.c @@ -53,6 +53,13 @@ static long unsigned int sTotalMSScreenOff = 0; static bool sIsAwake = true; static guint sTimerEventSource = 0; +#define SYSFS_A6_DEVICE "/sys/class/misc/a6_0/regs/" +#define DEF_BATTERY_PATH "/sys/devices/w1 bus master/w1_master_slaves/" + +static bool sSysfsA6DeviceNodeExists = false; +static bool sSysfsBatteryPathExists = false; + + #define NS_PER_MS 1000000 #define MS_PER_S 1000 long int @@ -437,19 +444,22 @@ void read_proc_net_dev() void get_battery_coulomb_reading(double *rc, double *c) { - #define SYSFS_A6_DEVICE "/sys/class/misc/a6_0/regs/" - #define DEF_BATTERY_PATH "/sys/devices/w1 bus master/w1_master_slaves/" - - if (g_file_test(SYSFS_A6_DEVICE, G_FILE_TEST_IS_DIR)) + if (sSysfsA6DeviceNodeExists) { SysfsGetDouble(SYSFS_A6_DEVICE "getrawcoulomb", rc); SysfsGetDouble(SYSFS_A6_DEVICE "getcoulomb", c); } - else + else if (sSysfsBatteryPathExists) { SysfsGetDouble(DEF_BATTERY_PATH "getrawcoulomb", rc); SysfsGetDouble(DEF_BATTERY_PATH "getcoulomb", c); } + else + { + /* we don't have support for getrawcoulomb/getcoulomb */ + *rc = 0.0; + *c = 0.0; + } } gboolean @@ -521,6 +531,9 @@ _sawlog_init(void) sTimeScreenOff = time_now_ms(); sTimerEventSource = g_timeout_add_full(G_PRIORITY_DEFAULT, PRINT_INTERVAL_MS, sawmill_logger_update, GINT_TO_POINTER(TRUE), NULL); + sSysfsA6DeviceNodeExists = g_file_test(SYSFS_A6_DEVICE, G_FILE_TEST_IS_DIR); + sSysfsBatteryPathExists = g_file_test(DEF_BATTERY_PATH, G_FILE_TEST_IS_DIR); + return 0; }