Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/uvm/uvm_pdpolicy_clock.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/uvm/uvm_pdpolicy_clock.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.14.6.1 retrieving revision 1.15 diff -u -p -r1.14.6.1 -r1.15 --- src/sys/uvm/uvm_pdpolicy_clock.c 2012/02/18 07:36:01 1.14.6.1 +++ src/sys/uvm/uvm_pdpolicy_clock.c 2012/01/27 19:48:42 1.15 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_pdpolicy_clock.c,v 1.14.6.1 2012/02/18 07:36:01 mrg Exp $ */ +/* $NetBSD: uvm_pdpolicy_clock.c,v 1.15 2012/01/27 19:48:42 para Exp $ */ /* NetBSD: uvm_pdaemon.c,v 1.72 2006/01/05 10:47:33 yamt Exp $ */ /* @@ -69,7 +69,7 @@ #else /* defined(PDSIM) */ #include -__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.14.6.1 2012/02/18 07:36:01 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_pdpolicy_clock.c,v 1.15 2012/01/27 19:48:42 para Exp $"); #include #include @@ -419,8 +419,23 @@ uvmpdpol_reinit(void) bool uvmpdpol_needsscan_p(void) { + vmem_size_t kva_size; + vmem_size_t kva_free; - return pdpol_state.s_inactive < pdpol_state.s_inactarg; + kva_size = vmem_size(kmem_arena, VMEM_FREE|VMEM_ALLOC); + kva_free = vmem_size(kmem_arena, VMEM_FREE); + + if (kva_free < (kva_size / 10)) { + return true; + } + + if (pdpol_state.s_inactive < pdpol_state.s_inactarg) { + return true; + } + if (pdpol_state.s_inactive < pdpol_state.s_inactarg) { + return true; + } + return false; } void