#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; }