diff --git a/bench/benchctxswitch.cpp b/bench/benchctxswitch.cpp index fa489b35..407f7e41 100644 --- a/bench/benchctxswitch.cpp +++ b/bench/benchctxswitch.cpp @@ -11,7 +11,7 @@ int main(int argc, char* argv[]) uintmax_t start; if ( uptime(&start) ) { perror("uptime"); return 1; } - uintmax_t end = start + 1ULL * 1000ULL; // 1 second + uintmax_t end = start + 1ULL * 1000ULL * 1000ULL; // 1 second size_t count = 0; uintmax_t now; while ( !uptime(&now) && now < end ) { usleep(0); count += 2; /* back and forth */ } diff --git a/bench/benchsyscall.cpp b/bench/benchsyscall.cpp index 1201b106..f78868cc 100644 --- a/bench/benchsyscall.cpp +++ b/bench/benchsyscall.cpp @@ -5,7 +5,7 @@ int main(int argc, char* argv[]) { uintmax_t start; if ( uptime(&start) ) { perror("uptime"); return 1; } - uintmax_t end = start + 1ULL * 1000ULL; // 1 second + uintmax_t end = start + 1ULL * 1000ULL * 1000ULL; // 1 second size_t count = 0; uintmax_t now; while ( !uptime(&now) && now < end ) { count++; } diff --git a/libmaxsi/c/hsrc/unistd.h b/libmaxsi/c/hsrc/unistd.h index e94182e1..8f3ccbe5 100644 --- a/libmaxsi/c/hsrc/unistd.h +++ b/libmaxsi/c/hsrc/unistd.h @@ -177,7 +177,7 @@ ssize_t write(int, const void*, size_t); #ifdef SORTIX_EXTENSIONS int memstat(size_t* memused, size_t* memtotal); -int uptime(uintmax_t* mssinceboot); +int uptime(uintmax_t* usecssinceboot); int writeall(int fd, const void* buffer, size_t len); #endif diff --git a/libmaxsi/time.cpp b/libmaxsi/time.cpp index 4ba2c7ae..22249da2 100644 --- a/libmaxsi/time.cpp +++ b/libmaxsi/time.cpp @@ -33,9 +33,9 @@ namespace Maxsi { DEFN_SYSCALL1(int, SysUptime, 34, uintmax_t*); - extern "C" int uptime(uintmax_t* mssinceboot) + extern "C" int uptime(uintmax_t* usecssinceboot) { - return SysUptime(mssinceboot); + return SysUptime(usecssinceboot); } } } diff --git a/sortix/time.cpp b/sortix/time.cpp index 808efecf..67f18ef0 100644 --- a/sortix/time.cpp +++ b/sortix/time.cpp @@ -85,10 +85,10 @@ namespace Sortix bool didUglyIRQ0Hack; - int SysUptime(uintmax_t* mssinceboot) + int SysUptime(uintmax_t* usecssinceboot) { - // TODO: HACK! - *mssinceboot = ((size_t)microsecondssinceboot) / 1000; + // TODO: Validate that usecssinceboot is a valid user-space pointer. + *usecssinceboot = microsecondssinceboot; return 0; } diff --git a/utils/uptime.cpp b/utils/uptime.cpp index d2076042..7031cb09 100644 --- a/utils/uptime.cpp +++ b/utils/uptime.cpp @@ -1,24 +1,24 @@ #include #include -size_t Seconds(size_t ms) +size_t Seconds(uintmax_t usecs) { - return (ms / 1000UL) % (60UL); + return (usecs / (1000ULL * 1000ULL)) % (60ULL); } -size_t Minutes(size_t ms) +size_t Minutes(uintmax_t usecs) { - return (ms / (1000UL * 60UL)) % (60UL); + return (usecs / (1000ULL * 1000ULL * 60ULL)) % (60ULL); } -size_t Hours(size_t ms) +size_t Hours(uintmax_t usecs) { - return (ms / (1000UL * 60UL * 60UL)) % (24UL); + return (usecs / (1000ULL * 1000ULL * 60ULL * 60ULL)) % (24ULL); } -size_t Days(size_t ms) +size_t Days(uintmax_t usecs) { - return (ms / (1000UL * 60UL * 60UL * 24UL)) % (24UL); + return usecs / (1000ULL * 1000ULL * 60ULL * 60ULL * 24ULL); } void PrintElement(size_t num, const char* single, const char* multiple)