Hi! > >> +#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? > > If this were to be merged I assume it would be rewritten directly into > kernel/power/suspend.c instead of using syscore ops. That was just > done to ease future merges while it was out of tree. > > dmesg is not the solution, it's not a stable api, it would require > constant parsing to make sure you didn't miss data before it fell out > of the ringbuffer, and sched_clock often does not (and should not) > tick during suspend, so printk times don't show the time spent > suspended.
If timing info printed is invalid, that should be fixed. Pavel -- (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/