diff options
Diffstat (limited to 'freebsd')
-rw-r--r-- | freebsd/Platform.c | 18 | ||||
-rw-r--r-- | freebsd/Platform.h | 1 |
2 files changed, 19 insertions, 0 deletions
diff --git a/freebsd/Platform.c b/freebsd/Platform.c index acc69595..b004b298 100644 --- a/freebsd/Platform.c +++ b/freebsd/Platform.c @@ -17,6 +17,11 @@ in the source distribution for its full text. #include "ClockMeter.h" #include "HostnameMeter.h" +#include <sys/types.h> +#include <sys/sysctl.h> +#include <sys/time.h> +#include <time.h> + /*{ #include "Action.h" }*/ @@ -46,3 +51,16 @@ MeterClass* Platform_meterTypes[] = { 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); +} diff --git a/freebsd/Platform.h b/freebsd/Platform.h index dc468b81..7435f631 100644 --- a/freebsd/Platform.h +++ b/freebsd/Platform.h @@ -15,5 +15,6 @@ void Platform_setBindings(Htop_Action* keys); extern MeterClass* Platform_meterTypes[]; +int Platform_getUptime(); #endif |