freebsd-ports/sysutils/byobu/files/patch-usr_lib_byobu_memory
Kevin Bowling 298fdc2dd2 sysutils/byobu: Improve FreeBSD compatibility
PR:		254565
Approved by:	Justin Coffman <jcoffman@xsecure.io> (maintainer)
2021-04-08 12:55:20 -07:00

74 lines
2.5 KiB
Text

--- usr/lib/byobu/memory.orig 2016-09-15 19:22:48 UTC
+++ usr/lib/byobu/memory
@@ -26,16 +26,35 @@ __memory_detail() {
__memory() {
local free="" total="" buffers="" cached=""
local kb_main_used=0 buffers_plus_cached=0 fo_buffers=0 fo_cached=0
- if [ -r /proc/meminfo ]; then
- while read tok val unit; do
- case "$tok" in
- MemTotal:) total=${val};;
- MemFree:) free=${val};;
- Buffers:) buffers=${val};;
- Cached:) cached=${val};;
- esac
- [ -n "${free}" -a -n "${total}" -a -n "${buffers}" -a -n "${cached}" ] && break;
- done < /proc/meminfo
+
+ if [ $(uname) = "Linux" ]; then
+ if [ -r /proc/meminfo ]; then
+ while read tok val unit; do
+ case "$tok" in
+ MemTotal:) total=${val};;
+ MemFree:) free=${val};;
+ Buffers:) buffers=${val};;
+ Cached:) cached=${val};;
+ esac
+ [ -n "${free}" -a -n "${total}" -a -n "${buffers}" -a -n "${cached}" ] && break;
+ done < /proc/meminfo
+ fi
+ elif [ $(uname) = "FreeBSD" ]; then
+ # FreeBSD support
+ mem_phys=$(sysctl -n hw.physmem)
+ page_size=$(sysctl -n hw.pagesize)
+ mem_inactive=$(($(sysctl -n vm.stats.vm.v_inactive_count)*$page_size))
+ mem_cache=$(($(sysctl -n vm.stats.vm.v_cache_count)*$page_size))
+ mem_free=$(($(sysctl -n vm.stats.vm.v_free_count)*$page_size))
+
+ mem_avail=$(($mem_inactive+$mem_cache+$mem_free))
+ mem_used=$(($mem_phys-$mem_avail))
+
+ total=$(($mem_phys/1024))
+ free=$(($mem_avail/1024))
+
+ buffers=0
+ cached=0
elif eval $BYOBU_TEST vm_stat >/dev/null 2>&1; then
# MacOS support
# calculation borrowed from http://apple.stackexchange.com/a/48195/18857
@@ -44,16 +63,18 @@ __memory() {
speculative_blocks=$(vm_stat | grep speculative | awk '{ print $3 }' | sed -e 's/\.//')
free=$((($free_blocks+speculative_blocks)*4))
inactive=$(($inactive_blocks*4))
- total=$((($free+$inactive)))
+ total=$(($free+$inactive))
buffers=0
cached=0
fi
- kb_main_used=$(($total-$free))
- buffers_plus_cached=$(($buffers+$cached))
- # "free output" buffers and cache (output from 'free')
- fo_buffers=$(($kb_main_used - $buffers_plus_cached))
- fpdiv $((100*${fo_buffers})) "${total}" 0;
- usage=${_RET}
+
+ kb_main_used=$(($total-$free))
+ buffers_plus_cached=$(($buffers+$cached))
+ # "free output" buffers and cache (output from 'free')
+ fo_buffers=$(($kb_main_used - $buffers_plus_cached))
+ fpdiv $((100*${fo_buffers})) "${total}" 0;
+ usage=${_RET}
+
if [ $total -ge 1048576 ]; then
fpdiv "$total" 1048567 1
total=${_RET}