summaryrefslogtreecommitdiffstats
path: root/sys/vm/swap_pager.c
diff options
context:
space:
mode:
authoreadler <eadler@FreeBSD.org>2012-06-01 04:42:52 +0000
committereadler <eadler@FreeBSD.org>2012-06-01 04:42:52 +0000
commit01b578179fed9f789e3df40ebecf3cf100d3fbf6 (patch)
treefbac0136e1f455ee3e937406043c1d301bfeda21 /sys/vm/swap_pager.c
parent94636061532c3e7cc7822b8816c0ef9f22f70b77 (diff)
downloadFreeBSD-src-01b578179fed9f789e3df40ebecf3cf100d3fbf6.zip
FreeBSD-src-01b578179fed9f789e3df40ebecf3cf100d3fbf6.tar.gz
Add sysctl to query amount of swap space free
PR: kern/166780 Submitted by: Radim Kolar <hsn@sendmail.cz> Approved by: cperciva MFC after: 1 week
Diffstat (limited to 'sys/vm/swap_pager.c')
-rw-r--r--sys/vm/swap_pager.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c
index be999cc..ac7c7db 100644
--- a/sys/vm/swap_pager.c
+++ b/sys/vm/swap_pager.c
@@ -2692,3 +2692,18 @@ swaponvp(struct thread *td, struct vnode *vp, u_long nblks)
NODEV);
return (0);
}
+
+static int
+sysctl_vm_swap_free(SYSCTL_HANDLER_ARGS) {
+ int swap_free, used;
+ int total;
+
+ swap_pager_status(&total, &used);
+
+ swap_free = (total - used) * PAGE_SIZE;
+ return SYSCTL_OUT(req, &swap_free, sizeof(swap_free));
+}
+
+SYSCTL_OID(_vm, OID_AUTO, swap_free, CTLTYPE_INT|CTLFLAG_RD|CTLFLAG_MPSAFE,
+ NULL, 0, sysctl_vm_swap_free, "Q",
+ "Blocks of free swap storage.");
OpenPOWER on IntegriCloud