diff --git a/src/unix/sunos.c b/src/unix/sunos.c index 554f15cd..9c717021 100644 --- a/src/unix/sunos.c +++ b/src/unix/sunos.c @@ -65,28 +65,9 @@ int uv_exepath(char* buffer, size_t* size) { return (0); } + double uv_get_free_memory(void) { - kstat_ctl_t *kc; - kstat_t *ksp; - kstat_named_t *knp; - - ulong_t freemem; - - if ((kc = kstat_open()) == NULL) return -1; - - ksp = kstat_lookup(kc, (char *)"unix", 0, (char *)"system_pages"); - - if(kstat_read(kc, ksp, NULL) == -1){ - return -1; - } - else { - knp = (kstat_named_t *) kstat_data_lookup(ksp, (char *)"freemem"); - freemem = knp->value.ul; - } - - kstat_close(kc); - - return (double) freemem * sysconf(_SC_PAGESIZE); + return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_AVPHYS_PAGES); } @@ -94,6 +75,7 @@ double uv_get_total_memory(void) { return (double) sysconf(_SC_PAGESIZE) * sysconf(_SC_PHYS_PAGES); } + void uv_loadavg(double avg[3]) { (void) getloadavg(avg, 3); } diff --git a/test/test-get-memory.c b/test/test-get-memory.c index 3ea2b992..502927d3 100644 --- a/test/test-get-memory.c +++ b/test/test-get-memory.c @@ -26,8 +26,11 @@ TEST_IMPL(get_memory) { double free_mem = uv_get_free_memory(); double total_mem = uv_get_total_memory(); + printf("free_mem=%.0f, total_mem=%.0f\n", free_mem, total_mem); + ASSERT(free_mem > 0); ASSERT(total_mem > 0); + ASSERT(total_mem > free_mem); return 0; }