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:
Johannes Berg
2007-05-06 14:50:50 -07:00
committed by Linus Torvalds
parent ab3bfca7ab
commit f0ced9b229
2 changed files with 34 additions and 3 deletions
+28 -1
View File
@@ -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;
}