Annotation of /trunk/hal/patches/hal-0.5.10-prevent-flood-syslog-if-battery-remaining-time-is-ab.patch
Parent Directory | Revision Log
Revision 597 -
(hide annotations)
(download)
Mon May 19 19:05:19 2008 UTC (16 years, 4 months ago) by niro
File size: 2198 byte(s)
Mon May 19 19:05:19 2008 UTC (16 years, 4 months ago) by niro
File size: 2198 byte(s)
-gentoo patches
1 | niro | 597 | From 8da58cadf841e67ef2a474de37054109267f2b64 Mon Sep 17 00:00:00 2001 |
2 | From: Danny Kukawka <danny.kukawka@web.de> | ||
3 | Date: Thu, 6 Dec 2007 20:33:18 +0100 | ||
4 | Subject: [PATCH] prevent flood syslog if battery remaining time is above 60 hours | ||
5 | |||
6 | This prevents to get the syslog flooded with "remaining_time *very* | ||
7 | high, returning -1" warning messages on some laptops. With this patch the | ||
8 | message get send only the first 10 times and then only 1 message for each 100 | ||
9 | cases (we can changes this also to a higher number). | ||
10 | |||
11 | We have this patch already since several months in the SUSE package, maybe | ||
12 | it's usefull in general. | ||
13 | --- | ||
14 | hald/util_pm.c | 22 ++++++++++++++++++++-- | ||
15 | 1 files changed, 20 insertions(+), 2 deletions(-) | ||
16 | |||
17 | diff --git a/hald/util_pm.c b/hald/util_pm.c | ||
18 | index e412ec5..a5a0e12 100644 | ||
19 | --- a/hald/util_pm.c | ||
20 | +++ b/hald/util_pm.c | ||
21 | @@ -39,6 +39,7 @@ | ||
22 | typedef struct { | ||
23 | int last_level; | ||
24 | int last_chargeRate; | ||
25 | + int high_time_warn_count; | ||
26 | time_t last_time; | ||
27 | } batteryInfo; | ||
28 | |||
29 | @@ -160,7 +161,8 @@ util_compute_time_remaining (const char *id, | ||
30 | battery_info->last_level = chargeLevel; | ||
31 | battery_info->last_time = cur_time; | ||
32 | battery_info->last_chargeRate = 0; | ||
33 | - return -1; | ||
34 | + battery_info->high_time_warn_count = 0; | ||
35 | + return -1; | ||
36 | } | ||
37 | } | ||
38 | |||
39 | @@ -188,7 +190,23 @@ util_compute_time_remaining (const char *id, | ||
40 | } | ||
41 | /* Battery life cannot be above 60 hours */ | ||
42 | else if (remaining_time > 60*60*60) { | ||
43 | - HAL_WARNING (("remaining_time *very* high, returning -1")); | ||
44 | + batteryInfo *battery_info; | ||
45 | + | ||
46 | + if (!(battery_info = g_hash_table_lookup(saved_battery_info, id))) { | ||
47 | + battery_info = g_new0(batteryInfo, 1); | ||
48 | + g_hash_table_insert(saved_battery_info, (char*) id, battery_info); | ||
49 | + battery_info->last_level = -1; | ||
50 | + battery_info->last_time = -1; | ||
51 | + battery_info->last_chargeRate = -1; | ||
52 | + battery_info->high_time_warn_count = 0; | ||
53 | + } | ||
54 | + | ||
55 | + /* display the warning only 10 times and then ever 100 calls , should avoid to flood syslog */ | ||
56 | + if (battery_info->high_time_warn_count < 10 || !(battery_info->high_time_warn_count % 100)) { | ||
57 | + HAL_WARNING (("remaining_time *very* high, returning -1")); | ||
58 | + battery_info->high_time_warn_count += 1; | ||
59 | + } | ||
60 | + | ||
61 | remaining_time = -1; | ||
62 | } | ||
63 | |||
64 | -- | ||
65 | 1.5.3.7 | ||
66 |