diff -upr xosview-1.21.org.FreeBSD-11.3-patched/Xdefaults xosview-1.21.mod/Xdefaults --- xosview-1.21.org.FreeBSD-11.3-patched/Xdefaults 2018-09-12 22:52:23.000000000 +0900 +++ xosview-1.21.mod/Xdefaults 2020-03-17 10:03:05.797978000 +0900 @@ -83,7 +83,8 @@ xosview*memTextColor: blue xosview*memOtherColor: orange xosview*memActiveColor: blue xosview*memInactiveColor: lightblue -xosview*memWiredColor: orange +xosview*memLaundryColor: green +xosview*memWiredColor: yellow xosview*memPriority: 10 xosview*memDecay: False xosview*memGraph: False diff -upr xosview-1.21.org.FreeBSD-11.3-patched/bsd/kernel.cc xosview-1.21.mod/bsd/kernel.cc --- xosview-1.21.org.FreeBSD-11.3-patched/bsd/kernel.cc 2020-03-17 09:56:00.000000000 +0900 +++ xosview-1.21.mod/bsd/kernel.cc 2020-03-17 10:19:23.744743000 +0900 @@ -293,7 +293,7 @@ BSDPageInit() { OpenKDIfNeeded(); } -/* meminfo[5] = { active, inactive, wired, cached, free } */ +/* meminfo[6] = { active, inactive, wired, laundry, free, total } */ /* pageinfo[2] = { pages_in, pages_out } */ void BSDGetPageStats(uint64_t *meminfo, uint64_t *pageinfo) { @@ -327,8 +327,10 @@ BSDGetPageStats(uint64_t *meminfo, uint6 u_int v_active_count; u_int v_inactive_count; u_int v_wire_count; + u_int v_laundry_count; u_int v_cache_count; u_int v_free_count; + u_int v_page_count; u_int v_page_size; u_int v_vnodepgsin; u_int v_vnodepgsout; @@ -345,7 +347,11 @@ BSDGetPageStats(uint64_t *meminfo, uint6 #if __FreeBSD_version < 1200017 GET_VM_STATS(v_cache_count); #endif +#if __FreeBSD_version >= 1101000 + GET_VM_STATS(v_laundry_count); +#endif GET_VM_STATS(v_free_count); + GET_VM_STATS(v_page_count); GET_VM_STATS(v_page_size); GET_VM_STATS(v_vnodepgsin); GET_VM_STATS(v_vnodepgsout); @@ -369,13 +375,18 @@ BSDGetPageStats(uint64_t *meminfo, uint6 #if __FreeBSD_version < 1200017 meminfo[3] = (uint64_t)vm.v_cache_count * vm.v_page_size; #endif +#if __FreeBSD_version >= 1101000 + meminfo[3] = (uint64_t)vm.v_laundry_count * vm.v_page_size; +#endif meminfo[4] = (uint64_t)vm.v_free_count * vm.v_page_size; + meminfo[5] = (uint64_t)vm.v_page_count * vm.v_page_size; #else /* XOSVIEW_DFBSD */ meminfo[0] = (uint64_t)vms.v_active_count * vms.v_page_size; meminfo[1] = (uint64_t)vms.v_inactive_count * vms.v_page_size; meminfo[2] = (uint64_t)vms.v_wire_count * vms.v_page_size; meminfo[3] = (uint64_t)vms.v_cache_count * vms.v_page_size; meminfo[4] = (uint64_t)vms.v_free_count * vms.v_page_size; + meminfo[5] = (uint64_t)vms.v_page_count * vms.v_page_size; #endif } if (pageinfo) { diff -upr xosview-1.21.org.FreeBSD-11.3-patched/bsd/memmeter.cc xosview-1.21.mod/bsd/memmeter.cc --- xosview-1.21.org.FreeBSD-11.3-patched/bsd/memmeter.cc 2018-09-12 22:52:23.000000000 +0900 +++ xosview-1.21.mod/bsd/memmeter.cc 2020-03-17 10:55:48.902316000 +0900 @@ -20,13 +20,22 @@ #include "defines.h" #include "kernel.h" #include +#ifdef DEBUG +#include +#define __STDC_FORMAT_MACROS +#include +#endif MemMeter::MemMeter( XOSView *parent ) #if defined(HAVE_UVM) : FieldMeterGraph( parent, 4, "MEM", "ACT/INACT/WRD/FREE" ) { #else - : FieldMeterGraph( parent, 5, "MEM", "ACT/INACT/WRD/CA/FREE" ) { +#if __FreeBSD_version >= 1101000 + : FieldMeterGraph( parent, 5, "MEM", "ACT/INACT/WRD/LA/FREE" ) { +#else + : FieldMeterGraph( parent, 5, "MEM", "ACT/INACT/WRD/CA/FREE" ) { +#endif #endif BSDPageInit(); } @@ -44,7 +53,11 @@ void MemMeter::checkResources( void ) { #if defined(HAVE_UVM) setfieldcolor( 3, parent_->getResource("memFreeColor") ); #else +#if __FreeBSD_version >= 1101000 + setfieldcolor( 3, parent_->getResource("memLaundryColor") ); +#else setfieldcolor( 3, parent_->getResource("memCacheColor") ); +#endif setfieldcolor( 4, parent_->getResource("memFreeColor") ); #endif priority_ = atoi( parent_->getResource("memPriority") ); @@ -65,10 +78,22 @@ void MemMeter::getmeminfo( void ) { fields_[2] = (double)meminfo_[2]; #if defined(HAVE_UVM) fields_[3] = (double)meminfo_[4]; + total_ = (double)(meminfo_[0] + meminfo_[1] + meminfo_[2] + meminfo_[3] + meminfo_[4]); #else fields_[3] = (double)meminfo_[3]; fields_[4] = (double)meminfo_[4]; + total_ = (double)meminfo_[5]; +#endif +#ifdef DEBUG + printf("A:%f, I:%f, W:%f, L:%f, B:?, F:%f, U:%f, T:%f\n", + fields_[0]/1024.0/1024.0, + fields_[1]/1024.0/1024.0, + fields_[2]/1024.0/1024.0, + fields_[3]/1024.0/1024.0, + fields_[4]/1024.0/1024.0, + (total_ - fields_[4])/1024.0/1024.0, + total_/1024.0/1024.0 + ); #endif - total_ = (double)(meminfo_[0] + meminfo_[1] + meminfo_[2] + meminfo_[3] + meminfo_[4]); setUsed(total_ - (double)meminfo_[4], total_); } diff -upr xosview-1.21.org.FreeBSD-11.3-patched/bsd/memmeter.h xosview-1.21.mod/bsd/memmeter.h --- xosview-1.21.org.FreeBSD-11.3-patched/bsd/memmeter.h 2018-09-12 22:52:23.000000000 +0900 +++ xosview-1.21.mod/bsd/memmeter.h 2020-03-17 10:10:03.100999000 +0900 @@ -33,7 +33,7 @@ protected: void getmeminfo( void ); private: - uint64_t meminfo_[5]; + uint64_t meminfo_[6]; }; diff -upr xosview-1.21.org.FreeBSD-11.3-patched/xosview.1 xosview-1.21.mod/xosview.1 --- xosview-1.21.org.FreeBSD-11.3-patched/xosview.1 2018-09-12 22:52:23.000000000 +0900 +++ xosview-1.21.mod/xosview.1 2020-03-14 20:27:23.000000000 +0900 @@ -135,7 +135,7 @@ FreeBSD, OpenBSD, DragonflyBSD). \fBMemory Usage\fP Linux : used | buffers | slab | map | cache | free - FreeBSD: active | inactive | wired | cache | free + FreeBSD: active | inactive | wired | laundry | free DFBSD : active | inactive | wired | cache | free OpenBSD: active | inactive | wired | free NetBSD : active | inactive | wired | free @@ -627,6 +627,8 @@ automatically. .cc mem Cache "cache memory" +.cc mem Laundry "laundry memory" + .cc mem Free "free memory" .cc mem Kernel "kernel memory"