2011年8月9日火曜日

/proc/uptimeとsysinfoのuptimeは同じだと思う

{関連ソース}

http://lxr.linux.no/#linux+v3.0.1/kernel/timer.c#L1520
1520int do_sysinfo(struct sysinfo *info)
...
1528        ktime_get_ts(&tp);
1529        monotonic_to_bootbased(&tp);
1530        info->uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);

http://lxr.linux.no/#linux+v3.0.1/fs/proc/uptime.c
  20        do_posix_clock_monotonic_gettime(&uptime);
  21        monotonic_to_bootbased(&uptime);

http://lxr.linux.no/#linux+v3.0.1/include/linux/time.h#L153
 153#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)



{メモ}
ktime_get_ts() , do_posix_clock_monotonic_gettime()
 monotonic time を得る
monotonic_to_bootbased()
 suspend中の時間を加えて、uptimeに変換する

xtime
 wall_clock
monotonic time
 Monotonic is peggedat zero at system boot time
 (bootからの時間。ただし、suspend中の時間を除く。)
wall_to_monotonic
 monotonic_time == xtime + wall_to_monotonic
 (通常、マイナスの値になる。)
total_sleep_time
 uptime         == xtime + wall_to_monotonic + total_sleep_time
 (suspendしていた時間の合計。bootからの時間であるuptimeを計算する際に使う)

boottime(bootした時刻)
 boottime       == xtime - uptime になることから、
                == - ( wall_to_monotonic + total_sleep_time ) という計算結果が得られる。

0 件のコメント:

コメントを投稿