Linux kernel内で起動からの時間を知る

Linuxで起動してからの時間を知りたいとき迷わず

$ uptime

を実行するのですが、
カーネル内部で知りたいときはどうするのでしょうか?

シェルスクリプトならuptimeコマンドの結果を加工すればいいですし、
プログラムからなら”/proc/uptime”から読み出すことができますが、
カーネルからだと

struct timespec uptime;
do_posix_clock_monotonic_gettime(&uptime);
monotonic_to_bootbased(&uptime);
printk("uptime=%lu\n",(unsigned long)uptime.tv_sec);

とすればいいんですね。
いやまあ、カーネルの”fs/proc/uptime.c”のuptime_read_proc()から切り取っただけですが。

広告