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: Johannes Berg <johannes@sipsolutions.net> Acked-by: "Rafael J. Wysocki" <rjw@sisk.pl> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ab3bfca7ab
commit
f0ced9b229
2 changed files with 34 additions and 3 deletions
|
@ -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[] = {
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue