xref: /minix3/sys/uvm/uvm_pdpolicy.h (revision 6c8f7fc3bac7ab5f78ee27de8bed706631d8c836)
1*6c8f7fc3SBen Gras /*	$NetBSD: uvm_pdpolicy.h,v 1.3 2007/02/21 23:00:14 thorpej Exp $	*/
2*6c8f7fc3SBen Gras 
3*6c8f7fc3SBen Gras /*-
4*6c8f7fc3SBen Gras  * Copyright (c)2005, 2006 YAMAMOTO Takashi,
5*6c8f7fc3SBen Gras  * All rights reserved.
6*6c8f7fc3SBen Gras  *
7*6c8f7fc3SBen Gras  * Redistribution and use in source and binary forms, with or without
8*6c8f7fc3SBen Gras  * modification, are permitted provided that the following conditions
9*6c8f7fc3SBen Gras  * are met:
10*6c8f7fc3SBen Gras  * 1. Redistributions of source code must retain the above copyright
11*6c8f7fc3SBen Gras  *    notice, this list of conditions and the following disclaimer.
12*6c8f7fc3SBen Gras  * 2. Redistributions in binary form must reproduce the above copyright
13*6c8f7fc3SBen Gras  *    notice, this list of conditions and the following disclaimer in the
14*6c8f7fc3SBen Gras  *    documentation and/or other materials provided with the distribution.
15*6c8f7fc3SBen Gras  *
16*6c8f7fc3SBen Gras  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17*6c8f7fc3SBen Gras  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*6c8f7fc3SBen Gras  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*6c8f7fc3SBen Gras  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20*6c8f7fc3SBen Gras  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21*6c8f7fc3SBen Gras  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22*6c8f7fc3SBen Gras  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23*6c8f7fc3SBen Gras  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24*6c8f7fc3SBen Gras  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25*6c8f7fc3SBen Gras  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26*6c8f7fc3SBen Gras  * SUCH DAMAGE.
27*6c8f7fc3SBen Gras  */
28*6c8f7fc3SBen Gras 
29*6c8f7fc3SBen Gras #ifndef _UVM_PDPOLICY_H_
30*6c8f7fc3SBen Gras #define _UVM_PDPOLICY_H_
31*6c8f7fc3SBen Gras 
32*6c8f7fc3SBen Gras struct vm_page;
33*6c8f7fc3SBen Gras struct vm_anon;
34*6c8f7fc3SBen Gras 
35*6c8f7fc3SBen Gras /*
36*6c8f7fc3SBen Gras  * these API is for uvm internal use only.
37*6c8f7fc3SBen Gras  * don't use them directly from outside of /sys/uvm.
38*6c8f7fc3SBen Gras  */
39*6c8f7fc3SBen Gras 
40*6c8f7fc3SBen Gras void uvmpdpol_init(void);
41*6c8f7fc3SBen Gras void uvmpdpol_reinit(void);
42*6c8f7fc3SBen Gras void uvmpdpol_estimatepageable(int *, int *);
43*6c8f7fc3SBen Gras bool uvmpdpol_needsscan_p(void);
44*6c8f7fc3SBen Gras 
45*6c8f7fc3SBen Gras void uvmpdpol_pageactivate(struct vm_page *);
46*6c8f7fc3SBen Gras void uvmpdpol_pagedeactivate(struct vm_page *);
47*6c8f7fc3SBen Gras void uvmpdpol_pagedequeue(struct vm_page *);
48*6c8f7fc3SBen Gras void uvmpdpol_pageenqueue(struct vm_page *);
49*6c8f7fc3SBen Gras bool uvmpdpol_pageisqueued_p(struct vm_page *);
50*6c8f7fc3SBen Gras void uvmpdpol_anfree(struct vm_anon *);
51*6c8f7fc3SBen Gras 
52*6c8f7fc3SBen Gras void uvmpdpol_tune(void);
53*6c8f7fc3SBen Gras void uvmpdpol_scaninit(void);
54*6c8f7fc3SBen Gras struct vm_page *uvmpdpol_selectvictim(void);
55*6c8f7fc3SBen Gras void uvmpdpol_balancequeue(int);
56*6c8f7fc3SBen Gras 
57*6c8f7fc3SBen Gras void uvmpdpol_sysctlsetup(void);
58*6c8f7fc3SBen Gras 
59*6c8f7fc3SBen Gras #endif /* !_UVM_PDPOLICY_H_ */
60