summaryrefslogtreecommitdiffstats
path: root/devices/mem_swap_freebsd.go
diff options
context:
space:
mode:
authorSean E. Russell <ser@ser1.net>2020-02-27 18:51:28 -0600
committerSean E. Russell <ser@ser1.net>2020-02-28 07:06:51 -0600
commit7a89225d729d4c54c5bc95b21979f48f9cd046b1 (patch)
tree10bf143324cf553765d7002d0eb82abc21c72bb1 /devices/mem_swap_freebsd.go
parent4fce1654c5c263797205997e7635c7d06c393a85 (diff)
Abstracts CPU & mem devices.
Finishes device refactoring: temps Refactoring to allow updating maps. Simpler, and optimizable.
Diffstat (limited to 'devices/mem_swap_freebsd.go')
-rw-r--r--devices/mem_swap_freebsd.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/devices/mem_swap_freebsd.go b/devices/mem_swap_freebsd.go
new file mode 100644
index 0000000..3a95aa9
--- /dev/null
+++ b/devices/mem_swap_freebsd.go
@@ -0,0 +1,44 @@
+// +build freebsd
+
+package devices
+
+import (
+ "os/exec"
+ "strconv"
+ "strings"
+)
+
+func init() {
+ mf := func(mems map[string]MemoryInfo) map[string]error {
+ cmd := "swapinfo -k|sed -n '1!p'|awk '{print $2,$3,$5}'"
+ output, err := exec.Command("sh", "-c", cmd).Output()
+ if err != nil {
+ return map[string]error{"swapinfo": err}
+ }
+
+ s := strings.TrimSuffix(string(output), "\n")
+ s = strings.ReplaceAll(s, "\n", " ")
+ ss := strings.Split(s, " ")
+ ss = ss[((len(ss)/3)-1)*3:]
+
+ errors := make(map[string]error)
+ mem := MemoryInfo{}
+ mem.Total, err = strconv.ParseUint(ss[0], 10, 64)
+ if err != nil {
+ errors["swap total"] = err
+ }
+
+ mem.Used, err = strconv.ParseUint(ss[1], 10, 64)
+ if err != nil {
+ errors["swap used"] = err
+ }
+
+ mem.UsedPercent, err = strconv.ParseFloat(strings.TrimSuffix(ss[2], "%"), 64)
+ if err != nil {
+ errors["swap percent"] = err
+ }
+ mems["Swap"] = mem
+ return errors
+ }
+ RegisterMem(mf)
+}