LINUX.IE, website of the Irish Linux Users' Group
Tux rules!

   
Home
New Users
Articles
Download
Projects
Community
Vendors

  Print Version
Email to...
 
Archives:


planetILUG

Recent News

News Archive


Join the
ILUG
on FaceBook


Join the
ILUG
on LinkedIn


Join the
ILUG SETI
Group



















 
 :: Mailing Lists

[ILUG] [OT] C time_elapsed function

[ILUG] [OT] C time_elapsed function

Colm MacCarthaigh colmmacc at redbrick.dcu.ie
Tue Nov 6 18:15:25 GMT 2001


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 :)

#include <utmp.h>
#include <strings.h>

	time_t  	bt;
	struct utmp 	u;
	int		fd;
	
	
	if((fd=open("/var/run/wtmp", O_RDONLY)) < 0)
		/* handle error */
	
	/* set it to all zero's */
	bzero(bt, sizeof(bt));
	
	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 */
	}

	close(fd);
 

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

2eb21625735b864be9a1dd3245a45ce8




More information about the ILUG mailing list
Read this without the formatting.
                                                                                                    

 

Hosted by HEAnet


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!
RSS Version
Powered by Dell