summaryrefslogtreecommitdiffstats
path: root/freebsd
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2014-11-27 19:44:20 -0200
committerHisham Muhammad <hisham@gobolinux.org>2014-11-27 19:44:20 -0200
commit3ba3d6fa6f5f2c3075041a1a0db4d07f86a4a517 (patch)
tree1b3e4e2cfb52482af7e80d19a2335b795d736e72 /freebsd
parent1dd165c14bf71a6f55abdea2fdc19b54efc03780 (diff)
Add uptime calculation code.
Diffstat (limited to 'freebsd')
-rw-r--r--freebsd/Platform.c18
-rw-r--r--freebsd/Platform.h1
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

© 2014-2024 Faster IT GmbH | imprint | privacy policy