summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_vmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/subr_vmem.c')
-rw-r--r--sys/kern/subr_vmem.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/kern/subr_vmem.c b/sys/kern/subr_vmem.c
index baaee84..8cc020a 100644
--- a/sys/kern/subr_vmem.c
+++ b/sys/kern/subr_vmem.c
@@ -1319,6 +1319,7 @@ vmem_add(vmem_t *vm, vmem_addr_t addr, vmem_size_t size, int flags)
vmem_size_t
vmem_size(vmem_t *vm, int typemask)
{
+ int i;
switch (typemask) {
case VMEM_ALLOC:
@@ -1327,6 +1328,17 @@ vmem_size(vmem_t *vm, int typemask)
return vm->vm_size - vm->vm_inuse;
case VMEM_FREE|VMEM_ALLOC:
return vm->vm_size;
+ case VMEM_MAXFREE:
+ VMEM_LOCK(vm);
+ for (i = VMEM_MAXORDER - 1; i >= 0; i--) {
+ if (LIST_EMPTY(&vm->vm_freelist[i]))
+ continue;
+ VMEM_UNLOCK(vm);
+ return ((vmem_size_t)ORDER2SIZE(i) <<
+ vm->vm_quantum_shift);
+ }
+ VMEM_UNLOCK(vm);
+ return (0);
default:
panic("vmem_size");
}
OpenPOWER on IntegriCloud