diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2014-07-08 17:19:27 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2014-07-08 17:19:27 +0000 |
commit | ca6b780f3bfa5c9a89ba92e6cd2521c9329cdc0f (patch) | |
tree | 42548dbe5d3a602c490a5126d137dcdef5c71c6f /sys/uvm/uvmexp.h | |
parent | 0ed1c38073e501cc08c2d664396820fe904f718c (diff) |
decouple struct uvmexp into a new file, so that uvm_extern.h and sysctl.h
don't need to be married.
ok guenther miod beck jsing kettenis
Diffstat (limited to 'sys/uvm/uvmexp.h')
-rw-r--r-- | sys/uvm/uvmexp.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/sys/uvm/uvmexp.h b/sys/uvm/uvmexp.h new file mode 100644 index 00000000000..cae4458d756 --- /dev/null +++ b/sys/uvm/uvmexp.h @@ -0,0 +1,152 @@ +/* $OpenBSD: uvmexp.h,v 1.1 2014/07/08 17:19:26 deraadt Exp $ */ + +#ifndef _UVM_UVMEXP_ +#define _UVM_UVMEXP_ + +/* + * CTL_VM identifiers + */ +#define VM_METER 1 /* struct vmmeter */ +#define VM_LOADAVG 2 /* struct loadavg */ +#define VM_PSSTRINGS 3 /* PSSTRINGS */ +#define VM_UVMEXP 4 /* struct uvmexp */ +#define VM_SWAPENCRYPT 5 /* int */ +#define VM_NKMEMPAGES 6 /* int - # kmem_map pages */ +#define VM_ANONMIN 7 +#define VM_VTEXTMIN 8 +#define VM_VNODEMIN 9 +#define VM_MAXSLP 10 +#define VM_USPACE 11 +#define VM_MAXID 12 /* number of valid vm ids */ + +#define CTL_VM_NAMES { \ + { 0, 0 }, \ + { "vmmeter", CTLTYPE_STRUCT }, \ + { "loadavg", CTLTYPE_STRUCT }, \ + { "psstrings", CTLTYPE_STRUCT }, \ + { "uvmexp", CTLTYPE_STRUCT }, \ + { "swapencrypt", CTLTYPE_NODE }, \ + { "nkmempages", CTLTYPE_INT }, \ + { "anonmin", CTLTYPE_INT }, \ + { "vtextmin", CTLTYPE_INT }, \ + { "vnodemin", CTLTYPE_INT }, \ + { "maxslp", CTLTYPE_INT }, \ + { "uspace", CTLTYPE_INT }, \ +} + +/* + * uvmexp: global data structures that are exported to parts of the kernel + * other than the vm system. + */ +struct uvmexp { + /* vm_page constants */ + int pagesize; /* size of a page (PAGE_SIZE): must be power of 2 */ + int pagemask; /* page mask */ + int pageshift; /* page shift */ + + /* vm_page counters */ + int npages; /* number of pages we manage */ + int free; /* number of free pages */ + int active; /* number of active pages */ + int inactive; /* number of pages that we free'd but may want back */ + int paging; /* number of pages in the process of being paged out */ + int wired; /* number of wired pages */ + + int zeropages; /* number of zero'd pages */ + int reserve_pagedaemon; /* number of pages reserved for pagedaemon */ + int reserve_kernel; /* number of pages reserved for kernel */ + int anonpages; /* number of pages used by anon pagers */ + int vnodepages; /* number of pages used by vnode page cache */ + int vtextpages; /* number of pages used by vtext vnodes */ + + /* pageout params */ + int freemin; /* min number of free pages */ + int freetarg; /* target number of free pages */ + int inactarg; /* target number of inactive pages */ + int wiredmax; /* max number of wired pages */ + int anonmin; /* min threshold for anon pages */ + int vtextmin; /* min threshold for vtext pages */ + int vnodemin; /* min threshold for vnode pages */ + int anonminpct; /* min percent anon pages */ + int vtextminpct;/* min percent vtext pages */ + int vnodeminpct;/* min percent vnode pages */ + + /* swap */ + int nswapdev; /* number of configured swap devices in system */ + int swpages; /* number of PAGE_SIZE'ed swap pages */ + int swpginuse; /* number of swap pages in use */ + int swpgonly; /* number of swap pages in use, not also in RAM */ + int nswget; /* number of times fault calls uvm_swap_get() */ + int nanon; /* number total of anon's in system */ + int nanonneeded;/* number of anons currently needed */ + int nfreeanon; /* number of free anon's */ + + /* stat counters */ + int faults; /* page fault count */ + int traps; /* trap count */ + int intrs; /* interrupt count */ + int swtch; /* context switch count */ + int softs; /* software interrupt count */ + int syscalls; /* system calls */ + int pageins; /* pagein operation count */ + /* pageouts are in pdpageouts below */ + int obsolete_swapins; /* swapins */ + int obsolete_swapouts; /* swapouts */ + int pgswapin; /* pages swapped in */ + int pgswapout; /* pages swapped out */ + int forks; /* forks */ + int forks_ppwait; /* forks where parent waits */ + int forks_sharevm; /* forks where vmspace is shared */ + int pga_zerohit; /* pagealloc where zero wanted and zero + was available */ + int pga_zeromiss; /* pagealloc where zero wanted and zero + not available */ + int zeroaborts; /* number of times page zeroing was + aborted */ + + /* fault subcounters */ + int fltnoram; /* number of times fault was out of ram */ + int fltnoanon; /* number of times fault was out of anons */ + int fltpgwait; /* number of times fault had to wait on a page */ + int fltpgrele; /* number of times fault found a released page */ + int fltrelck; /* number of times fault relock called */ + int fltrelckok; /* number of times fault relock is a success */ + int fltanget; /* number of times fault gets anon page */ + int fltanretry; /* number of times fault retrys an anon get */ + int fltamcopy; /* number of times fault clears "needs copy" */ + int fltnamap; /* number of times fault maps a neighbor anon page */ + int fltnomap; /* number of times fault maps a neighbor obj page */ + int fltlget; /* number of times fault does a locked pgo_get */ + int fltget; /* number of times fault does an unlocked get */ + int flt_anon; /* number of times fault anon (case 1a) */ + int flt_acow; /* number of times fault anon cow (case 1b) */ + int flt_obj; /* number of times fault is on object page (2a) */ + int flt_prcopy; /* number of times fault promotes with copy (2b) */ + int flt_przero; /* number of times fault promotes with zerofill (2b) */ + + /* daemon counters */ + int pdwoke; /* number of times daemon woke up */ + int pdrevs; /* number of times daemon rev'd clock hand */ + int pdswout; /* number of times daemon called for swapout */ + int pdfreed; /* number of pages daemon freed since boot */ + int pdscans; /* number of pages daemon scanned since boot */ + int pdanscan; /* number of anonymous pages scanned by daemon */ + int pdobscan; /* number of object pages scanned by daemon */ + int pdreact; /* number of pages daemon reactivated since boot */ + int pdbusy; /* number of times daemon found a busy page */ + int pdpageouts; /* number of times daemon started a pageout */ + int pdpending; /* number of times daemon got a pending pagout */ + int pddeact; /* number of pages daemon deactivates */ + int pdreanon; /* anon pages reactivated due to min threshold */ + int pdrevnode; /* vnode pages reactivated due to min threshold */ + int pdrevtext; /* vtext pages reactivated due to min threshold */ + + int fpswtch; /* FPU context switches */ + int kmapent; /* number of kernel map entries */ +}; + +struct _ps_strings { + void *val; +}; + +#endif /*_UVM_UVMEXP_ */ |