linux 内核启动时间

Time from startup in linux kernel

我想检索自内核启动以来经过的时间(在内核 space 中)。它应该是 printk(); 使用的时间匹配(例如:[ 5.832000] message )。

jiffies提供不同的时间,所以我不确定它是否适合我。

我怎样才能做到这一点?

使用 get_monotonic_boottime 怎么样? jiffies 初始化为开机前 5 分钟,以确保开机后立即溢出并检测错误。

printk implementation lies in kernel/printk/printk.c souce file.
Here it uses following structure before writing log into buffer which we see in console.

struct printk_log {
        u64 ts_nsec;            /* timestamp in nanoseconds */
        u16 len;                /* length of entire record */        
        u16 text_len;           /* length of text buffer */
        u16 dict_len;           /* length of dictionary buffer */
        u8 facility;            /* syslog facility */
        u8 flags:5;             /* internal record flags */
        u8 level:3;             /* syslog level */
};
ts_nsec -> This parameter is set by function "local_clock" which in turn calls "Sched_clock" [ defined in /kernel/sched/clock.c ].
unsigned long long __weak sched_clock(void)
 {
         return (unsigned long long)(jiffies - INITIAL_JIFFIES)
                            * (NSEC_PER_SEC / HZ);
 }

#define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))
i think this will give you more insight about the printk logging