Hi! > From: Colin Cross <ccr...@android.com> > > Below is a patch from android kernel that maintains a histogram of > suspend times. Please review and provide feedback. > > Prints the time spent in suspend in the kernel log, and keeps statistics > on the time spent in suspend in /sys/kernel/debug/suspend_time > > Cc: Android Kernel Team <kernel-t...@android.com> > Cc: Colin Cross <ccr...@android.com> > Cc: Todd Poynor <toddpoy...@google.com> > Cc: San Mehat <s...@google.com> > Cc: Benoit Goby <ben...@android.com> > Cc: John Stultz <john.stu...@linaro.org> > Cc: Pavel Machek <pa...@ucw.cz> > Cc: Rafael J. Wysocki <r...@sisk.pl> > Cc: Len Brown <len.br...@intel.com> > Signed-off-by: Colin Cross <ccr...@android.com> > Signed-off-by: Todd Poynor <toddpoy...@google.com> > [zoran.marko...@linaro.org: Re-formatted suspend time table to better fit > expected values, tweaked commit message] > Signed-off-by: Zoran Markovic <zoran.marko...@linaro.org>
> +++ b/kernel/power/suspend_time.c > @@ -0,0 +1,111 @@ > +/* > + * debugfs file to track time spent in suspend > + * > + * Copyright (c) 2011, Google, Inc. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, but > WITHOUT > + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or > + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for > + * more details. > + */ > + > +#include <linux/debugfs.h> > +#include <linux/err.h> > +#include <linux/init.h> > +#include <linux/kernel.h> > +#include <linux/seq_file.h> > +#include <linux/syscore_ops.h> > +#include <linux/time.h> > + > +static struct timespec suspend_time_before; > +static unsigned int time_in_suspend_bins[32]; > + > +#ifdef CONFIG_DEBUG_FS > +static int suspend_time_debug_show(struct seq_file *s, void *data) > +{ > + unsigned int bin; > + seq_printf(s, " time (secs) count\n"); > + seq_printf(s, "------------------------------\n"); > + for (bin = 0; bin < 32; bin++) { > + if (time_in_suspend_bins[bin] == 0) > + continue; > + seq_printf(s, "%10u - %-10u %4u\n", > + bin ? 1 << (bin - 1) : 0, 1 << bin, > + time_in_suspend_bins[bin]); > + } > + return 0; > +} > + > +static int suspend_time_debug_open(struct inode *inode, struct file *file) > +{ > + return single_open(file, suspend_time_debug_show, NULL); > +} Ok, whole new driver to get timing info... As we already have times in printk, can't existing printks() get the same info? Maybe Documentation/ file describing how to get that info from dmesg would be enough? -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/