diff options
| author | Takashi Iwai <tiwai@suse.de> | 2009-12-15 04:29:06 -0500 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2009-12-15 04:29:06 -0500 |
| commit | 709334c87dbdb44150ce436b3d13c814db0dcae9 (patch) | |
| tree | 5861a45f70c1f283720337abd864498f5afb3dbe /kernel/power/hibernate.c | |
| parent | 0d64b568fcd48b133721c1d322e7c51d85eb12df (diff) | |
| parent | f74890277a196949e4004fe2955e1d4fb3930f98 (diff) | |
Merge branch 'fixes' of git://git.alsa-project.org/alsa-kernel into for-linus
Diffstat (limited to 'kernel/power/hibernate.c')
| -rw-r--r-- | kernel/power/hibernate.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 04a9e90d248f..bbfe472d7524 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c | |||
| @@ -32,6 +32,7 @@ static int noresume = 0; | |||
| 32 | static char resume_file[256] = CONFIG_PM_STD_PARTITION; | 32 | static char resume_file[256] = CONFIG_PM_STD_PARTITION; |
| 33 | dev_t swsusp_resume_device; | 33 | dev_t swsusp_resume_device; |
| 34 | sector_t swsusp_resume_block; | 34 | sector_t swsusp_resume_block; |
| 35 | int in_suspend __nosavedata = 0; | ||
| 35 | 36 | ||
| 36 | enum { | 37 | enum { |
| 37 | HIBERNATION_INVALID, | 38 | HIBERNATION_INVALID, |
| @@ -202,6 +203,35 @@ static void platform_recover(int platform_mode) | |||
| 202 | } | 203 | } |
| 203 | 204 | ||
| 204 | /** | 205 | /** |
| 206 | * swsusp_show_speed - print the time elapsed between two events. | ||
| 207 | * @start: Starting event. | ||
| 208 | * @stop: Final event. | ||
| 209 | * @nr_pages - number of pages processed between @start and @stop | ||
| 210 | * @msg - introductory message to print | ||
| 211 | */ | ||
| 212 | |||
| 213 | void swsusp_show_speed(struct timeval *start, struct timeval *stop, | ||
| 214 | unsigned nr_pages, char *msg) | ||
| 215 | { | ||
| 216 | s64 elapsed_centisecs64; | ||
| 217 | int centisecs; | ||
| 218 | int k; | ||
| 219 | int kps; | ||
| 220 | |||
| 221 | elapsed_centisecs64 = timeval_to_ns(stop) - timeval_to_ns(start); | ||
| 222 | do_div(elapsed_centisecs64, NSEC_PER_SEC / 100); | ||
| 223 | centisecs = elapsed_centisecs64; | ||
| 224 | if (centisecs == 0) | ||
| 225 | centisecs = 1; /* avoid div-by-zero */ | ||
| 226 | k = nr_pages * (PAGE_SIZE / 1024); | ||
| 227 | kps = (k * 100) / centisecs; | ||
| 228 | printk(KERN_INFO "PM: %s %d kbytes in %d.%02d seconds (%d.%02d MB/s)\n", | ||
| 229 | msg, k, | ||
| 230 | centisecs / 100, centisecs % 100, | ||
| 231 | kps / 1000, (kps % 1000) / 10); | ||
| 232 | } | ||
| 233 | |||
| 234 | /** | ||
| 205 | * create_image - freeze devices that need to be frozen with interrupts | 235 | * create_image - freeze devices that need to be frozen with interrupts |
| 206 | * off, create the hibernation image and thaw those devices. Control | 236 | * off, create the hibernation image and thaw those devices. Control |
| 207 | * reappears in this routine after a restore. | 237 | * reappears in this routine after a restore. |
