On Tue, Nov 06, 2001 at 05:54:37PM +0000, Padraig Brady wrote:
> I can't beleive there isn't a platform independent
> getSecondsSinceBoot() function, but can't find one.
> Please tell me I'm wrong.
use the wtmp :)
struct utmp u;
if((fd=open("/var/run/wtmp", O_RDONLY)) < 0)
/* handle error */
/* set it to all zero's */
while(read(fd, &u, sizeof(u)) == sizeof(u))
if(u.ut_type == BOOT_TIME)
bt = u.ut_time; /* ut_time is a portable macro */
/* dont break, we want last entry that matches */
disclaimer: only rough code, didnt check for errors/typos
you should get the general idea from this
this should be portable across anything which uses a wtmp
> Note time() and gettimeofday() both return seconds since 1970,
> and hence won't do as the value returned isn't guaranteed to
> monotonically increase (as the system date can change).
yep, they all return from the unix epoch, it is guranteed to
increase, as long as you keep your system time correct
> Note also that uptime in /proc/loadavg wraps after 472 days
> (32 bit jiffies). Is there a value anywhere that increments
> monotonically with second resolution?
not sure what you mean, the above will definitely get you a
rough boot time, subtract from current to get the real value.
it does need an accurate system time though.
If you want to know exactly how many jiffies have elapsed since
boot time (whenever you define _that_ ) you will probably need
to write a kernel patch :o)
colmmacc at redbrick.dcu.ie
Maintained by the ILUG website team. The aim of Linux.ie is to
support and help commercial and private users of Linux in Ireland. You can
display ILUG news in your own webpages, read backend
information to find out how. Networking services kindly provided by HEAnet, server kindly donated by
Dell. Linux is a trademark of Linus Torvalds,
used with permission. No penguins were harmed in the production or maintenance
of this highly praised website. Looking for the
Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!