2014年7月16日水曜日

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()から切り取っただけですが。

0 件のコメント:

コメントを投稿