forked from enlightenment/evisum
FreeBSD: Fix Memory Display.
Peter2121 is right, this is mostly bogus (depending on who you speak to).
This commit is contained in:
parent
36f16a12f6
commit
2114f5dd21
|
@ -97,7 +97,7 @@
|
|||
static void
|
||||
_memsize_bytes_to_kb(unsigned long *bytes)
|
||||
{
|
||||
*bytes = (unsigned int)*bytes >> 10;
|
||||
*bytes /= 1024;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -492,7 +492,8 @@ _memory_usage_get(meminfo_t *memory)
|
|||
|
||||
fclose(f);
|
||||
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
||||
int total_pages = 0, free_pages = 0, inactive_pages = 0;
|
||||
unsigned int free = 0, active = 0, inactive = 0, wired = 0;
|
||||
unsigned int cached = 0, buffered = 0;
|
||||
long int result = 0;
|
||||
int page_size = getpagesize();
|
||||
int mib[4] = { CTL_HW, HW_PHYSMEM, 0, 0 };
|
||||
|
@ -500,46 +501,31 @@ _memory_usage_get(meminfo_t *memory)
|
|||
len = sizeof(memory->total);
|
||||
if (sysctl(mib, 2, &memory->total, &len, NULL, 0) == -1)
|
||||
return;
|
||||
memory->total /= 1024;
|
||||
|
||||
total_pages =
|
||||
_sysctlfromname("vm.stats.vm.v_page_count", mib, 4, &len);
|
||||
if (total_pages < 0)
|
||||
if ((active = _sysctlfromname("vm.stats.vm.v_active_count", mib, 4, &len)) < 0)
|
||||
return;
|
||||
if ((inactive = _sysctlfromname("vm.stats.vm.v_inactive_count", mib, 4, &len)) < 0)
|
||||
return;
|
||||
if ((wired = _sysctlfromname("vm.stats.vm.v_wire_count", mib, 4, &len)) < 0)
|
||||
return;
|
||||
if ((cached = _sysctlfromname("vm.stats.vm.v_cache_count", mib, 4, &len)) < 0)
|
||||
return;
|
||||
if ((free = _sysctlfromname("vm.stats.vm.v_free_count", mib, 4, &len)) < 0)
|
||||
return;
|
||||
if ((buffered = _sysctlfromname("vfs.bufspace", mib, 2, &len)) < 0)
|
||||
return;
|
||||
|
||||
free_pages = _sysctlfromname("vm.stats.vm.v_free_count", mib, 4, &len);
|
||||
if (free_pages < 0)
|
||||
return;
|
||||
|
||||
inactive_pages =
|
||||
_sysctlfromname("vm.stats.vm.v_inactive_count", mib, 4, &len);
|
||||
if (inactive_pages < 0)
|
||||
return;
|
||||
|
||||
memory->used = (total_pages - free_pages - inactive_pages) * page_size;
|
||||
_memsize_bytes_to_kb(&memory->total);
|
||||
memory->used = ((active + wired + cached) * page_size);
|
||||
_memsize_bytes_to_kb(&memory->used);
|
||||
|
||||
result = _sysctlfromname("vfs.bufspace", mib, 2, &len);
|
||||
if (result < 0)
|
||||
return;
|
||||
memory->buffered = (result);
|
||||
memory->buffered = buffered;
|
||||
_memsize_bytes_to_kb(&memory->buffered);
|
||||
|
||||
result = _sysctlfromname("vm.stats.vm.v_active_count", mib, 4, &len);
|
||||
if (result < 0)
|
||||
return;
|
||||
memory->cached = (result * page_size);
|
||||
memory->cached = (cached * page_size);
|
||||
_memsize_bytes_to_kb(&memory->cached);
|
||||
|
||||
result = _sysctlfromname("vm.stats.vm.v_cache_count", mib, 4, &len);
|
||||
if (result < 0)
|
||||
return;
|
||||
memory->shared = (result * page_size);
|
||||
_memsize_bytes_to_kb(&memory->shared);
|
||||
|
||||
result = _sysctlfromname("vm.swap_total", mib, 2, &len);
|
||||
if (result < 0)
|
||||
return;
|
||||
|
||||
memory->swap_total = (result / 1024);
|
||||
|
||||
miblen = 3;
|
||||
|
|
|
@ -1466,28 +1466,29 @@ _evisum_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
const char *
|
||||
evisum_size_format(unsigned long value)
|
||||
{
|
||||
const char *s;
|
||||
double res = value;
|
||||
const char *s, *unit = "BKMGTPEZY";
|
||||
unsigned long int powi = 1;
|
||||
unsigned int precision = 2, powj = 1;
|
||||
|
||||
if (value > (1024 * 1024 * 1024))
|
||||
while (value > 1024)
|
||||
{
|
||||
res /= (1024 * 1024 * 1024);
|
||||
s = eina_slstr_printf("%1.1f %c", res, DATA_UNIT_GB);
|
||||
if ((value / 1024) < powi) break;
|
||||
if (unit[1] == '\0') break;
|
||||
powi *= 1024;
|
||||
++unit;
|
||||
}
|
||||
else if (value > (1024 * 1024))
|
||||
|
||||
if (*unit == 'B') precision = 0;
|
||||
|
||||
while (precision > 0)
|
||||
{
|
||||
res /= (1024 * 1024);
|
||||
s = eina_slstr_printf("%1.1f %c", res, DATA_UNIT_MB);
|
||||
}
|
||||
else if (value > (1024))
|
||||
{
|
||||
res /= (1024);
|
||||
s = eina_slstr_printf("%1.1f %c", res, DATA_UNIT_KB);
|
||||
}
|
||||
else
|
||||
{
|
||||
s = eina_slstr_printf("%1.0f %c", res, DATA_UNIT_B);
|
||||
powj *= 10;
|
||||
if ((value / powi) < powj) break;
|
||||
--precision;
|
||||
}
|
||||
|
||||
s = eina_slstr_printf("%1.*f %c", precision, (double) value / powi, *unit);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,14 +15,6 @@
|
|||
#define FILL EVAS_HINT_FILL
|
||||
#define EXPAND EVAS_HINT_EXPAND
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DATA_UNIT_B = 'B',
|
||||
DATA_UNIT_KB = 'K',
|
||||
DATA_UNIT_MB = 'M',
|
||||
DATA_UNIT_GB = 'G',
|
||||
} Data_Unit;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
SORT_BY_NONE,
|
||||
|
|
Loading…
Reference in New Issue