netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=f61e780f0bf7dea59031ea21bb47dbb82a2833ff
commit f61e780f0bf7dea59031ea21bb47dbb82a2833ff Author: Alastair Poole <[email protected]> Date: Fri Jun 5 15:32:11 2020 +0100 bytes: use bytes for everything... Convert Linux memory values to bytes rather than reducing the granularity of every other OS which reports memory use in bytes. The previous method just made everything confusing when it needn't be. --- src/bin/system/machine.c | 45 ++++++++++++++------------------------------- src/bin/ui/ui.c | 11 ++++++----- src/bin/ui/ui.h | 2 +- src/bin/ui/ui_memory.c | 20 ++++++++++---------- 4 files changed, 31 insertions(+), 47 deletions(-) diff --git a/src/bin/system/machine.c b/src/bin/system/machine.c index 508cc5a..3172b4b 100644 --- a/src/bin/system/machine.c +++ b/src/bin/system/machine.c @@ -93,14 +93,6 @@ #define RESULTS_MEM_GB 0x80 #define RESULTS_CPU_CORES 0x100 -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) -static void -_memsize_bytes_to_kb(unsigned long *bytes) -{ - *bytes /= 1024; -} -#endif - #if defined(__linux__) static char * file_contents(const char *path) @@ -490,6 +482,14 @@ _memory_usage_get(meminfo_t *memory) memory->used = memory->total - tmp_free - memory->cached - memory->buffered; memory->swap_used = memory->swap_total - swap_free; + memory->total *= 1024; + memory->used *= 1024; + memory->buffered *= 1024; + memory->cached *= 1024; + memory->shared *= 1024; + memory->swap_total *= 1024; + memory->swap_used *= 1024; + fclose(f); #elif defined(__FreeBSD__) || defined(__DragonFly__) unsigned int free = 0, active = 0, inactive = 0, wired = 0; @@ -518,19 +518,14 @@ _memory_usage_get(meminfo_t *memory) if ((buffered = _sysctlfromname("vfs.bufspace", mib, 2, &len)) < 0) return; - _memsize_bytes_to_kb(&memory->total); memory->used = ((active + wired + cached) * page_size); - _memsize_bytes_to_kb(&memory->used); memory->buffered = buffered; - _memsize_bytes_to_kb(&memory->buffered); memory->cached = (cached * page_size); - _memsize_bytes_to_kb(&memory->cached); result = _sysctlfromname("vm.swap_total", mib, 2, &len); if (result < 0) return; - - memory->swap_total = (result / 1024); + memory->swap_total = result; miblen = 3; if (sysctlnametomib("vm.swap_info", mib, &miblen) == -1) return; @@ -547,9 +542,6 @@ _memory_usage_get(meminfo_t *memory) memory->swap_used += (unsigned long) xsw.xsw_used * page_size; } - - memory->swap_used >>= 10; - #elif defined(__OpenBSD__) static int mib[] = { CTL_HW, HW_PHYSMEM64 }; static int bcstats_mib[] = { CTL_VFS, VFS_GENERIC, VFS_BCACHESTAT }; @@ -592,23 +584,17 @@ _memory_usage_get(meminfo_t *memory) memory->swap_total += (swdev[i].se_nblks / (1024 / DEV_BSIZE)); } } + + memory->swap_total *= 1024; + memory->swap_used *= 1024; swap_out: if (swdev) free(swdev); - memory->total /= 1024; - memory->cached = (uvmexp.pagesize * bcstats.numbufpages); - _memsize_bytes_to_kb(&memory->cached); - memory->used = (uvmexp.active * uvmexp.pagesize); - _memsize_bytes_to_kb(&memory->used); - memory->buffered = (uvmexp.pagesize * (uvmexp.npages - uvmexp.free)); - _memsize_bytes_to_kb(&memory->buffered); - memory->shared = (uvmexp.pagesize * uvmexp.wired); - _memsize_bytes_to_kb(&memory->shared); #elif defined(__MacOS__) int mib[2] = { CTL_HW, HW_MEMSIZE }; size_t total; @@ -624,20 +610,15 @@ swap_out: mach_port = mach_host_self(); count = sizeof(vm_stats) / sizeof(natural_t); - total >>= 10; memory->total = total; if (host_page_size(mach_port, &page_size) == KERN_SUCCESS && host_statistics64(mach_port, HOST_VM_INFO, (host_info64_t)&vm_stats, &count) == KERN_SUCCESS) { memory->used = vm_stats.active_count + vm_stats.inactive_count + vm_stats.wire_count * page_size; - memory->used >>= 10; memory->cached = vm_stats.active_count * page_size; - memory->cached >>= 10; memory->shared = vm_stats.wire_count * page_size; - memory->shared >>= 10; memory->buffered = vm_stats.inactive_count * page_size; - memory->buffered >>= 10; } total = sizeof(xsu); @@ -646,6 +627,8 @@ swap_out: memory->swap_total = xsu.xsu_total; memory->swap_used = xsu.xsu_used; } + memory->swap_total *= 1024; + memory->swap_used *= 1024; #endif } diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c index 8349933..95d3e7d 100644 --- a/src/bin/ui/ui.c +++ b/src/bin/ui/ui.c @@ -1464,12 +1464,13 @@ _evisum_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) } const char * -evisum_size_format(unsigned long value) +evisum_size_format(unsigned long bytes) { const char *s, *unit = "BKMGTPEZY"; - unsigned long int powi = 1; + unsigned long int value, powi = 1; unsigned int precision = 2, powj = 1; + value = bytes; while (value > 1024) { if ((value / 1024) < powi) break; @@ -1484,7 +1485,7 @@ evisum_size_format(unsigned long value) { powj *= 10; if ((value / powi) < powj) break; - --precision; + --precision; } s = eina_slstr_printf("%1.*f %c", precision, (double) value / powi, *unit); @@ -1632,8 +1633,8 @@ _sys_info_all_poll_feedback_cb(void *data, Ecore_Thread *thread, void *msg) value = sysinfo->memory.used / ratio; elm_progressbar_value_set(progress, value / 100); elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s", - evisum_size_format(sysinfo->memory.used << 10), - evisum_size_format(sysinfo->memory.total << 10))); + evisum_size_format(sysinfo->memory.used), + evisum_size_format(sysinfo->memory.total))); out: free(sysinfo->cores); free(sysinfo); diff --git a/src/bin/ui/ui.h b/src/bin/ui/ui.h index 86b8928..058a190 100644 --- a/src/bin/ui/ui.h +++ b/src/bin/ui/ui.h @@ -121,6 +121,6 @@ const char * evisum_icon_path_get(const char *name); const char * -evisum_size_format(unsigned long value); +evisum_size_format(unsigned long bytes); #endif diff --git a/src/bin/ui/ui_memory.c b/src/bin/ui/ui_memory.c index df7075f..dcd65b2 100644 --- a/src/bin/ui/ui_memory.c +++ b/src/bin/ui/ui_memory.c @@ -142,8 +142,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo) elm_progressbar_value_set(progress, value / 100); elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", - evisum_size_format(sysinfo->memory.used << 10), - evisum_size_format(sysinfo->memory.total << 10), + evisum_size_format(sysinfo->memory.used), + evisum_size_format(sysinfo->memory.total), value)); progress = ui->progress_mem_cached; @@ -152,8 +152,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo) elm_progressbar_value_set(progress, value / 100); elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", - evisum_size_format(sysinfo->memory.cached << 10), - evisum_size_format(sysinfo->memory.total << 10), + evisum_size_format(sysinfo->memory.cached), + evisum_size_format(sysinfo->memory.total), value)); progress = ui->progress_mem_buffered; @@ -162,8 +162,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo) elm_progressbar_value_set(progress, value / 100); elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", - evisum_size_format(sysinfo->memory.buffered << 10), - evisum_size_format(sysinfo->memory.total << 10), + evisum_size_format(sysinfo->memory.buffered), + evisum_size_format(sysinfo->memory.total), value)); progress = ui->progress_mem_shared; @@ -172,8 +172,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo) elm_progressbar_value_set(progress, value / 100); elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", - evisum_size_format(sysinfo->memory.shared << 10), - evisum_size_format(sysinfo->memory.total << 10), + evisum_size_format(sysinfo->memory.shared), + evisum_size_format(sysinfo->memory.total), value)); progress = ui->progress_mem_swap; @@ -187,8 +187,8 @@ ui_tab_memory_update(Ui *ui, Sys_Info *sysinfo) elm_progressbar_value_set(progress, value / 100); elm_progressbar_unit_format_set(progress, eina_slstr_printf("%s / %s (%1.0f %)", - evisum_size_format(sysinfo->memory.swap_used << 10), - evisum_size_format(sysinfo->memory.swap_total << 10), + evisum_size_format(sysinfo->memory.swap_used), + evisum_size_format(sysinfo->memory.swap_total), value)); } --
