aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/power/main.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2006-09-26 02:32:58 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-26 11:49:04 -0400
commitc5c6ba4e08ab9c9e390a0f3a7d9a5c332f5cc6ef (patch)
tree4e13a9eebd8f3901dcc187c585369ef843d1e1a7 /kernel/power/main.c
parent7d145aa3abf4d96c91f37c012facd5cfbb9010d1 (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.c30
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
282power_attr(state); 283power_attr(state);
283 284
285#ifdef CONFIG_PM_TRACE
286int pm_trace_enabled;
287
288static ssize_t pm_trace_show(struct subsystem * subsys, char * buf)
289{
290 return sprintf(buf, "%d\n", pm_trace_enabled);
291}
292
293static ssize_t
294pm_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
305power_attr(pm_trace);
306
307static struct attribute * g[] = {
308 &state_attr.attr,
309 &pm_trace_attr.attr,
310 NULL,
311};
312#else
284static struct attribute * g[] = { 313static struct attribute * g[] = {
285 &state_attr.attr, 314 &state_attr.attr,
286 NULL, 315 NULL,
287}; 316};
317#endif /* CONFIG_PM_TRACE */
288 318
289static struct attribute_group attr_group = { 319static struct attribute_group attr_group = {
290 .attrs = g, 320 .attrs = g,