diff --git a/include/uv.h b/include/uv.h index b89e637e..179398d6 100644 --- a/include/uv.h +++ b/include/uv.h @@ -1127,8 +1127,8 @@ int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size); int uv_exepath(char* buffer, size_t* size); /* Gets memory info in bytes */ -double uv_get_free_memory(void); -double uv_get_total_memory(void); +uint64_t uv_get_free_memory(void); +uint64_t uv_get_total_memory(void); /* * Returns the current high-resolution real time. This is expressed in diff --git a/src/unix/cygwin.c b/src/unix/cygwin.c index bafe83bf..2f0680a4 100644 --- a/src/unix/cygwin.c +++ b/src/unix/cygwin.c @@ -58,12 +58,12 @@ int uv_exepath(char* buffer, size_t* size) { return 0; } -double uv_get_free_memory(void) { - return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_AVPHYS_PAGES); +uint64_t uv_get_free_memory(void) { + return (uint64_t) sysconf(_SC_PAGESIZE) * sysconf(_SC_AVPHYS_PAGES); } -double uv_get_total_memory(void) { - return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_PHYS_PAGES); +uint64_t uv_get_total_memory(void) { + return (uint64_t) sysconf(_SC_PAGESIZE) * sysconf(_SC_PHYS_PAGES); } int uv_fs_event_init(uv_loop_t* loop, diff --git a/src/unix/darwin.c b/src/unix/darwin.c index a518cb26..675e0ad4 100644 --- a/src/unix/darwin.c +++ b/src/unix/darwin.c @@ -71,7 +71,7 @@ int uv_exepath(char* buffer, size_t* size) { return 0; } -double uv_get_free_memory(void) { +uint64_t uv_get_free_memory(void) { vm_statistics_data_t info; mach_msg_type_number_t count = sizeof(info) / sizeof(integer_t); @@ -80,10 +80,10 @@ double uv_get_free_memory(void) { return -1; } - return (double) info.free_count * sysconf(_SC_PAGESIZE); + return (uint64_t) info.free_count * sysconf(_SC_PAGESIZE); } -double uv_get_total_memory(void) { +uint64_t uv_get_total_memory(void) { uint64_t info; int which[] = {CTL_HW, HW_MEMSIZE}; size_t size = sizeof(info); @@ -92,7 +92,7 @@ double uv_get_total_memory(void) { return -1; } - return (double) info; + return (uint64_t) info; } void uv_loadavg(double avg[3]) { diff --git a/src/unix/freebsd.c b/src/unix/freebsd.c index 5609ac4c..cd14d226 100644 --- a/src/unix/freebsd.c +++ b/src/unix/freebsd.c @@ -70,7 +70,7 @@ int uv_exepath(char* buffer, size_t* size) { return 0; } -double uv_get_free_memory(void) { +uint64_t uv_get_free_memory(void) { int freecount; size_t size = sizeof(freecount); @@ -78,11 +78,11 @@ double uv_get_free_memory(void) { &freecount, &size, NULL, 0) == -1){ return -1; } - return (double) freecount * sysconf(_SC_PAGESIZE); + return (uint64_t) freecount * sysconf(_SC_PAGESIZE); } -double uv_get_total_memory(void) { +uint64_t uv_get_total_memory(void) { unsigned long info; int which[] = {CTL_HW, HW_PHYSMEM}; @@ -92,7 +92,7 @@ double uv_get_total_memory(void) { return -1; } - return (double) info; + return (uint64_t) info; } void uv_loadavg(double avg[3]) { diff --git a/src/unix/linux.c b/src/unix/linux.c index fb499a97..e7ca1840 100644 --- a/src/unix/linux.c +++ b/src/unix/linux.c @@ -75,12 +75,12 @@ int uv_exepath(char* buffer, size_t* size) { return 0; } -double uv_get_free_memory(void) { - return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_AVPHYS_PAGES); +uint64_t uv_get_free_memory(void) { + return (uint64_t) sysconf(_SC_PAGESIZE) * sysconf(_SC_AVPHYS_PAGES); } -double uv_get_total_memory(void) { - return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_PHYS_PAGES); +uint64_t uv_get_total_memory(void) { + return (uint64_t) sysconf(_SC_PAGESIZE) * sysconf(_SC_PHYS_PAGES); } static int new_inotify_fd(void) { diff --git a/src/unix/netbsd.c b/src/unix/netbsd.c index ff42e8ce..8b91f65c 100644 --- a/src/unix/netbsd.c +++ b/src/unix/netbsd.c @@ -82,7 +82,7 @@ int uv_exepath(char* buffer, size_t* size) { return 0; } -double uv_get_free_memory(void) { +uint64_t uv_get_free_memory(void) { struct uvmexp info; size_t size = sizeof(info); int which[] = {CTL_VM, VM_UVMEXP}; @@ -91,10 +91,10 @@ double uv_get_free_memory(void) { return -1; } - return (double) info.free * psysconf(_SC_PAGESIZE); + return (uint64_t) info.free * psysconf(_SC_PAGESIZE); } -double uv_get_total_memory(void) { +uint64_t uv_get_total_memory(void) { #if defined(HW_PHYSMEM64) uint64_t info; int which[] = {CTL_HW, HW_PHYSMEM64}; @@ -108,5 +108,5 @@ double uv_get_total_memory(void) { return -1; } - return (double) info; + return (uint64_t) info; } diff --git a/src/unix/openbsd.c b/src/unix/openbsd.c index 98af6d0f..55f8ceb0 100644 --- a/src/unix/openbsd.c +++ b/src/unix/openbsd.c @@ -98,7 +98,7 @@ out: return status; } -double uv_get_free_memory(void) { +uint64_t uv_get_free_memory(void) { struct uvmexp info; size_t size = sizeof(info); int which[] = {CTL_VM, VM_UVMEXP}; @@ -107,10 +107,10 @@ double uv_get_free_memory(void) { return -1; } - return (double) info.free * sysconf(_SC_PAGESIZE); + return (uint64_t) info.free * sysconf(_SC_PAGESIZE); } -double uv_get_total_memory(void) { +uint64_t uv_get_total_memory(void) { uint64_t info; int which[] = {CTL_HW, HW_PHYSMEM64}; size_t size = sizeof(info); @@ -119,5 +119,5 @@ double uv_get_total_memory(void) { return -1; } - return (double) info; + return (uint64_t) info; } diff --git a/src/unix/sunos.c b/src/unix/sunos.c index 9c717021..c0bfe32e 100644 --- a/src/unix/sunos.c +++ b/src/unix/sunos.c @@ -66,13 +66,13 @@ int uv_exepath(char* buffer, size_t* size) { } -double uv_get_free_memory(void) { - return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_AVPHYS_PAGES); +uint64_t uv_get_free_memory(void) { + return (uint64_t) sysconf(_SC_PAGESIZE) * sysconf(_SC_AVPHYS_PAGES); } -double uv_get_total_memory(void) { - return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_PHYS_PAGES); +uint64_t uv_get_total_memory(void) { + return (uint64_t) sysconf(_SC_PAGESIZE) * sysconf(_SC_PHYS_PAGES); } diff --git a/src/win/util.c b/src/win/util.c index cc6f93cf..3bc3e1db 100644 --- a/src/win/util.c +++ b/src/win/util.c @@ -103,7 +103,7 @@ void uv_loadavg(double avg[3]) { } -double uv_get_free_memory(void) { +uint64_t uv_get_free_memory(void) { MEMORYSTATUSEX memory_status; memory_status.dwLength = sizeof(memory_status); @@ -112,11 +112,11 @@ double uv_get_free_memory(void) { return -1; } - return (double)memory_status.ullAvailPhys; + return (uint64_t)memory_status.ullAvailPhys; } -double uv_get_total_memory(void) { +uint64_t uv_get_total_memory(void) { MEMORYSTATUSEX memory_status; memory_status.dwLength = sizeof(memory_status); @@ -125,7 +125,7 @@ double uv_get_total_memory(void) { return -1; } - return (double)memory_status.ullTotalPhys; + return (uint64_t)memory_status.ullTotalPhys; } diff --git a/test/test-get-memory.c b/test/test-get-memory.c index 502927d3..00281af6 100644 --- a/test/test-get-memory.c +++ b/test/test-get-memory.c @@ -23,10 +23,10 @@ #include "task.h" TEST_IMPL(get_memory) { - double free_mem = uv_get_free_memory(); - double total_mem = uv_get_total_memory(); + uint64_t free_mem = uv_get_free_memory(); + uint64_t total_mem = uv_get_total_memory(); - printf("free_mem=%.0f, total_mem=%.0f\n", free_mem, total_mem); + printf("free_mem=%llu, total_mem=%llu\n", free_mem, total_mem); ASSERT(free_mem > 0); ASSERT(total_mem > 0);