#include "uptime.h" #include "common/time.h" #include #include const char* ffDetectUptime(FFUptimeResult* result) { #if __NetBSD__ struct timespec bootTime; #else struct timeval bootTime; #endif size_t bootTimeSize = sizeof(bootTime); if (sysctl( (int[]) { CTL_KERN, KERN_BOOTTIME }, 2, &bootTime, &bootTimeSize, NULL, 0) != 0) { return "sysctl({CTL_KERN, KERN_BOOTTIME}) failed"; } #if __NetBSD__ result->bootTime = (uint64_t) bootTime.tv_sec * 1000 + (uint64_t) bootTime.tv_nsec / 1000000; #else result->bootTime = (uint64_t) bootTime.tv_sec * 1000 + (uint64_t) bootTime.tv_usec / 1000; #endif result->uptime = ffTimeGetNow() - result->bootTime; return NULL; }