提交 f0ced9b2 编写于 作者: J Johannes Berg 提交者: Linus Torvalds

power management: change /sys/power/disk display

Change /sys/power/disk to display all valid modes as well as the currently
selected one in a fashion known from the LED subsystem.

This changes userspace API, but it is apparently not used much (we asked
some userspace developers)
Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
Acked-by: N"Rafael J. Wysocki" <rjw@sisk.pl>
Acked-by: NPavel Machek <pavel@ucw.cz>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 ab3bfca7
...@@ -34,8 +34,12 @@ for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then, ...@@ -34,8 +34,12 @@ for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then,
we are able to look in the log messages and work out, for example, which code we are able to look in the log messages and work out, for example, which code
is being slow and which device drivers are misbehaving. is being slow and which device drivers are misbehaving.
Reading from this file will display what the mode is currently set Reading from this file will display all supported modes and the currently
to. Writing to this file will accept one of selected one in brackets, for example
[shutdown] reboot test testproc
Writing to this file will accept one of
'platform' (only if the platform supports it) 'platform' (only if the platform supports it)
'shutdown' 'shutdown'
......
...@@ -350,7 +350,34 @@ static const char * const pm_disk_modes[] = { ...@@ -350,7 +350,34 @@ static const char * const pm_disk_modes[] = {
static ssize_t disk_show(struct kset *kset, char *buf) static ssize_t disk_show(struct kset *kset, char *buf)
{ {
return sprintf(buf, "%s\n", pm_disk_modes[pm_disk_mode]); int i;
char *start = buf;
for (i = PM_DISK_PLATFORM; i < PM_DISK_MAX; i++) {
if (!pm_disk_modes[i])
continue;
switch (i) {
case PM_DISK_SHUTDOWN:
case PM_DISK_REBOOT:
case PM_DISK_TEST:
case PM_DISK_TESTPROC:
break;
default:
if (pm_ops && pm_ops->enter &&
(i == pm_ops->pm_disk_mode))
break;
/* not a valid mode, continue with loop */
continue;
}
if (i == pm_disk_mode)
buf += sprintf(buf, "[%s]", pm_disk_modes[i]);
else
buf += sprintf(buf, "%s", pm_disk_modes[i]);
if (i+1 != PM_DISK_MAX)
buf += sprintf(buf, " ");
}
buf += sprintf(buf, "\n");
return buf-start;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册