xref: /minix3/minix/lib/libsys/getuptime.c (revision 25d39513e7c757eb8ae5ac9f6f9c43db7138235f)
1433d6423SLionel Sambuc #include "sysutil.h"
2433d6423SLionel Sambuc 
3d91f738bSDavid van Moolenbroek /*
4d91f738bSDavid van Moolenbroek  * Retrieve the system's uptime (number of clock ticks since system boot),
5d91f738bSDavid van Moolenbroek  * real time (corrected number of clock ticks since system boot), and
6d91f738bSDavid van Moolenbroek  * boot time (in number of seconds since the UNIX epoch).
7d91f738bSDavid van Moolenbroek  */
8d91f738bSDavid van Moolenbroek int
getuptime(clock_t * uptime,clock_t * realtime,time_t * boottime)9d91f738bSDavid van Moolenbroek getuptime(clock_t * uptime, clock_t * realtime, time_t * boottime)
10433d6423SLionel Sambuc {
11d91f738bSDavid van Moolenbroek 	struct minix_kerninfo *minix_kerninfo;
12433d6423SLionel Sambuc 
13d91f738bSDavid van Moolenbroek 	minix_kerninfo = get_minix_kerninfo();
14d91f738bSDavid van Moolenbroek 
15d91f738bSDavid van Moolenbroek 	/* We assume atomic 32-bit field retrieval.  TODO: 64-bit support. */
16*25d39513SDavid van Moolenbroek 	if (uptime != NULL)
17d91f738bSDavid van Moolenbroek 		*uptime = minix_kerninfo->kclockinfo->uptime;
18*25d39513SDavid van Moolenbroek 	if (realtime != NULL)
19d91f738bSDavid van Moolenbroek 		*realtime = minix_kerninfo->kclockinfo->realtime;
20*25d39513SDavid van Moolenbroek 	if (boottime != NULL)
21d91f738bSDavid van Moolenbroek 		*boottime = minix_kerninfo->kclockinfo->boottime;
22d91f738bSDavid van Moolenbroek 
23d91f738bSDavid van Moolenbroek 	return OK;
24433d6423SLionel Sambuc }
25