diff options
author | andre <andre@FreeBSD.org> | 2005-10-17 15:37:22 +0000 |
---|---|---|
committer | andre <andre@FreeBSD.org> | 2005-10-17 15:37:22 +0000 |
commit | 74d3ddeb3259da19ebc6183d77ed2e47ac50eae1 (patch) | |
tree | 9623cd1f5d463a40b1bd4dc6d6ba5383ea694375 /usr.bin/w | |
parent | 58c0a29b889898bebdd9e7edd7455c798986821e (diff) | |
download | FreeBSD-src-74d3ddeb3259da19ebc6183d77ed2e47ac50eae1.zip FreeBSD-src-74d3ddeb3259da19ebc6183d77ed2e47ac50eae1.tar.gz |
Obtain true uptime through clock_gettime(CLOCK_MONOTONIC, struct *timespec)
instead of subtracting 'bootime' from 'now'.
Sponsored by: TCP/IP Optimization Fundraise 2005
Diffstat (limited to 'usr.bin/w')
-rw-r--r-- | usr.bin/w/w.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c index 72559ba..8f69ab6 100644 --- a/usr.bin/w/w.c +++ b/usr.bin/w/w.c @@ -424,9 +424,8 @@ pr_header(time_t *nowp, int nusers) { double avenrun[3]; time_t uptime; + struct timespec tp; int days, hrs, i, mins, secs; - int mib[2]; - size_t size; char buf[256]; /* @@ -437,14 +436,9 @@ pr_header(time_t *nowp, int nusers) (void)printf("%s ", buf); /* * Print how long system has been up. - * (Found by looking getting "boottime" from the kernel) */ - mib[0] = CTL_KERN; - mib[1] = KERN_BOOTTIME; - size = sizeof(boottime); - if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 && - boottime.tv_sec != 0) { - uptime = now - boottime.tv_sec; + if (clock_gettime(CLOCK_MONOTONIC, &tp) != -1) { + uptime = tp.tv_sec; if (uptime > 60) uptime += 30; days = uptime / 86400; |