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
|
||||
is being slow and which device drivers are misbehaving.
|
||||
|
||||
Reading from this file will display what the mode is currently set
|
||||
to. Writing to this file will accept one of
|
||||
Reading from this file will display all supported modes and the currently
|
||||
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)
|
||||
'shutdown'
|
||||
|
|
|
@ -350,7 +350,34 @@ static const char * const pm_disk_modes[] = {
|
|||
|
||||
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