Add uptime calculation code.

This commit is contained in:
Hisham Muhammad 2014-11-27 19:44:20 -02:00
parent 1dd165c14b
commit 3ba3d6fa6f
3 changed files with 21 additions and 4 deletions

View File

@ -43,12 +43,10 @@ endif
if HTOP_FREEBSD if HTOP_FREEBSD
myhtopplatsources = freebsd/Platform.c freebsd/FreeBSDProcessList.c \ myhtopplatsources = freebsd/Platform.c freebsd/FreeBSDProcessList.c \
freebsd/FreeBSDCRT.c \ freebsd/FreeBSDCRT.c
freebsd/UptimeMeter.c
myhtopplatheaders = freebsd/Platform.h freebsd/FreeBSDProcessList.h \ myhtopplatheaders = freebsd/Platform.h freebsd/FreeBSDProcessList.h \
freebsd/FreeBSDCRT.h \ freebsd/FreeBSDCRT.h
freebsd/UptimeMeter.h
endif endif
if HTOP_UNSUPPORTED if HTOP_UNSUPPORTED

View File

@ -17,6 +17,11 @@ in the source distribution for its full text.
#include "ClockMeter.h" #include "ClockMeter.h"
#include "HostnameMeter.h" #include "HostnameMeter.h"
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/time.h>
#include <time.h>
/*{ /*{
#include "Action.h" #include "Action.h"
}*/ }*/
@ -46,3 +51,16 @@ MeterClass* Platform_meterTypes[] = {
NULL NULL
}; };
int Platform_getUptime() {
struct timeval bootTime, currTime;
int mib[2] = { CTL_KERN, KERN_BOOTTIME };
size_t size = sizeof(bootTime);
int err = sysctl(mib, 2, &bootTime, &size, NULL, 0);
if (err) {
return -1;
}
gettimeofday(&currTime, NULL);
return (int) difftime(currTime.tv_sec, bootTime.tv_sec);
}

View File

@ -15,5 +15,6 @@ void Platform_setBindings(Htop_Action* keys);
extern MeterClass* Platform_meterTypes[]; extern MeterClass* Platform_meterTypes[];
int Platform_getUptime();
#endif #endif