diff options
author | eadler <eadler@FreeBSD.org> | 2012-06-01 04:42:52 +0000 |
---|---|---|
committer | eadler <eadler@FreeBSD.org> | 2012-06-01 04:42:52 +0000 |
commit | 01b578179fed9f789e3df40ebecf3cf100d3fbf6 (patch) | |
tree | fbac0136e1f455ee3e937406043c1d301bfeda21 | |
parent | 94636061532c3e7cc7822b8816c0ef9f22f70b77 (diff) | |
download | FreeBSD-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
-rw-r--r-- | sys/vm/swap_pager.c | 15 |
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."); |