aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSarah Sharp <saharabeara@gmail.com>2007-12-21 19:54:15 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-02-01 17:35:00 -0500
commit1512300689426cb98bfd7e567ee9fdfaaf61b7c7 (patch)
treea275493675fe7bc6b666d1c6a8179e103c7a199c /include
parent228426edac844a2c9270528e9cd7ab6260ef7628 (diff)
USB: Export suspend statistics
This patch exports two statistics to userspace: /sys/bus/usb/device/.../power/connected_duration /sys/bus/usb/device/.../power/active_duration connected_duration is the total time (in msec) that the device has been connected. active_duration is the total time the device has not been suspended. With these two statistics, tools like PowerTOP can calculate the percentage time that a device is active, i.e. not suspended or auto-suspended. Users can also use the active_duration to check if a device is actually autosuspended. Currently, they can set power/level to auto and power/autosuspend to a positive timeout, but there's no way to know from userspace if a device was actually autosuspended without looking at the dmesg output. These statistics will be useful in creating an automated userspace script to test autosuspend for USB devices. Signed-off-by: Sarah Sharp <sarah.a.sharp@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include')
-rw-r--r--include/linux/usb.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h
index 8aae045e9a2e..f8a60756fe2a 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -419,12 +419,15 @@ struct usb_device {
419 u32 quirks; /* quirks of the whole device */ 419 u32 quirks; /* quirks of the whole device */
420 atomic_t urbnum; /* number of URBs submitted for the whole device */ 420 atomic_t urbnum; /* number of URBs submitted for the whole device */
421 421
422 unsigned long active_duration; /* total time device is not suspended */
423
422#ifdef CONFIG_PM 424#ifdef CONFIG_PM
423 struct delayed_work autosuspend; /* for delayed autosuspends */ 425 struct delayed_work autosuspend; /* for delayed autosuspends */
424 struct mutex pm_mutex; /* protects PM operations */ 426 struct mutex pm_mutex; /* protects PM operations */
425 427
426 unsigned long last_busy; /* time of last use */ 428 unsigned long last_busy; /* time of last use */
427 int autosuspend_delay; /* in jiffies */ 429 int autosuspend_delay; /* in jiffies */
430 unsigned long connect_time; /* time device was first connected */
428 431
429 unsigned auto_pm:1; /* autosuspend/resume in progress */ 432 unsigned auto_pm:1; /* autosuspend/resume in progress */
430 unsigned do_remote_wakeup:1; /* remote wakeup should be enabled */ 433 unsigned do_remote_wakeup:1; /* remote wakeup should be enabled */