diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2006-09-26 02:32:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 11:49:04 -0400 |
commit | c5c6ba4e08ab9c9e390a0f3a7d9a5c332f5cc6ef (patch) | |
tree | 4e13a9eebd8f3901dcc187c585369ef843d1e1a7 /kernel/power/main.c | |
parent | 7d145aa3abf4d96c91f37c012facd5cfbb9010d1 (diff) |
[PATCH] PM: Add pm_trace switch
Add the pm_trace attribute in /sys/power which has to be explicitly set to
one to really enable the "PM tracing" code compiled in when CONFIG_PM_TRACE
is set (which modifies the machine's CMOS clock in unpredictable ways).
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/power/main.c')
-rw-r--r-- | kernel/power/main.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/kernel/power/main.c b/kernel/power/main.c index 4d403323a7bb..873228c71dab 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/pm.h> | 17 | #include <linux/pm.h> |
18 | #include <linux/console.h> | 18 | #include <linux/console.h> |
19 | #include <linux/cpu.h> | 19 | #include <linux/cpu.h> |
20 | #include <linux/resume-trace.h> | ||
20 | 21 | ||
21 | #include "power.h" | 22 | #include "power.h" |
22 | 23 | ||
@@ -281,10 +282,39 @@ static ssize_t state_store(struct subsystem * subsys, const char * buf, size_t n | |||
281 | 282 | ||
282 | power_attr(state); | 283 | power_attr(state); |
283 | 284 | ||
285 | #ifdef CONFIG_PM_TRACE | ||
286 | int pm_trace_enabled; | ||
287 | |||
288 | static ssize_t pm_trace_show(struct subsystem * subsys, char * buf) | ||
289 | { | ||
290 | return sprintf(buf, "%d\n", pm_trace_enabled); | ||
291 | } | ||
292 | |||
293 | static ssize_t | ||
294 | pm_trace_store(struct subsystem * subsys, const char * buf, size_t n) | ||
295 | { | ||
296 | int val; | ||
297 | |||
298 | if (sscanf(buf, "%d", &val) == 1) { | ||
299 | pm_trace_enabled = !!val; | ||
300 | return n; | ||
301 | } | ||
302 | return -EINVAL; | ||
303 | } | ||
304 | |||
305 | power_attr(pm_trace); | ||
306 | |||
307 | static struct attribute * g[] = { | ||
308 | &state_attr.attr, | ||
309 | &pm_trace_attr.attr, | ||
310 | NULL, | ||
311 | }; | ||
312 | #else | ||
284 | static struct attribute * g[] = { | 313 | static struct attribute * g[] = { |
285 | &state_attr.attr, | 314 | &state_attr.attr, |
286 | NULL, | 315 | NULL, |
287 | }; | 316 | }; |
317 | #endif /* CONFIG_PM_TRACE */ | ||
288 | 318 | ||
289 | static struct attribute_group attr_group = { | 319 | static struct attribute_group attr_group = { |
290 | .attrs = g, | 320 | .attrs = g, |