Annotation of sys/uvm/uvm_param.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: uvm_param.h,v 1.12 2007/03/26 08:43:34 art Exp $ */
! 2: /* $NetBSD: uvm_param.h,v 1.5 2001/03/09 01:02:12 chs Exp $ */
! 3:
! 4: /*
! 5: * Copyright (c) 1991, 1993
! 6: * The Regents of the University of California. All rights reserved.
! 7: *
! 8: * This code is derived from software contributed to Berkeley by
! 9: * The Mach Operating System project at Carnegie-Mellon University.
! 10: *
! 11: * Redistribution and use in source and binary forms, with or without
! 12: * modification, are permitted provided that the following conditions
! 13: * are met:
! 14: * 1. Redistributions of source code must retain the above copyright
! 15: * notice, this list of conditions and the following disclaimer.
! 16: * 2. Redistributions in binary form must reproduce the above copyright
! 17: * notice, this list of conditions and the following disclaimer in the
! 18: * documentation and/or other materials provided with the distribution.
! 19: * 3. Neither the name of the University nor the names of its contributors
! 20: * may be used to endorse or promote products derived from this software
! 21: * without specific prior written permission.
! 22: *
! 23: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
! 24: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 25: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 26: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
! 27: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 28: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 29: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 30: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 31: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 32: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 33: * SUCH DAMAGE.
! 34: *
! 35: * @(#)vm_param.h 8.2 (Berkeley) 1/9/95
! 36: *
! 37: *
! 38: * Copyright (c) 1987, 1990 Carnegie-Mellon University.
! 39: * All rights reserved.
! 40: *
! 41: * Authors: Avadis Tevanian, Jr., Michael Wayne Young
! 42: *
! 43: * Permission to use, copy, modify and distribute this software and
! 44: * its documentation is hereby granted, provided that both the copyright
! 45: * notice and this permission notice appear in all copies of the
! 46: * software, derivative works or modified versions, and any portions
! 47: * thereof, and that both notices appear in supporting documentation.
! 48: *
! 49: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
! 50: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
! 51: * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
! 52: *
! 53: * Carnegie Mellon requests users of this software to return to
! 54: *
! 55: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
! 56: * School of Computer Science
! 57: * Carnegie Mellon University
! 58: * Pittsburgh PA 15213-3890
! 59: *
! 60: * any improvements or extensions that they make and grant Carnegie the
! 61: * rights to redistribute these changes.
! 62: */
! 63:
! 64: /*
! 65: * Machine independent virtual memory parameters.
! 66: */
! 67:
! 68: #ifndef _VM_PARAM_
! 69: #define _VM_PARAM_
! 70:
! 71: #include <machine/vmparam.h>
! 72:
! 73: /*
! 74: * This belongs in types.h, but breaks too many existing programs.
! 75: */
! 76: typedef int boolean_t;
! 77: #ifndef TRUE
! 78: #define TRUE 1
! 79: #endif
! 80: #ifndef FALSE
! 81: #define FALSE 0
! 82: #endif
! 83:
! 84: /*
! 85: * The machine independent pages are referred to as PAGES. A page
! 86: * is some number of hardware pages, depending on the target machine.
! 87: */
! 88: #define DEFAULT_PAGE_SIZE 4096
! 89:
! 90: #if defined(_KERNEL) && !defined(PAGE_SIZE)
! 91: /*
! 92: * All references to the size of a page should be done with PAGE_SIZE
! 93: * or PAGE_SHIFT. The fact they are variables is hidden here so that
! 94: * we can easily make them constant if we so desire.
! 95: */
! 96: #define PAGE_SIZE uvmexp.pagesize /* size of page */
! 97: #define PAGE_MASK uvmexp.pagemask /* size of page - 1 */
! 98: #define PAGE_SHIFT uvmexp.pageshift /* bits to shift for pages */
! 99: #endif /* _KERNEL */
! 100:
! 101: /*
! 102: * CTL_VM identifiers
! 103: */
! 104: #define VM_METER 1 /* struct vmmeter */
! 105: #define VM_LOADAVG 2 /* struct loadavg */
! 106: #define VM_PSSTRINGS 3 /* PSSTRINGS */
! 107: #define VM_UVMEXP 4 /* struct uvmexp */
! 108: #define VM_SWAPENCRYPT 5 /* int */
! 109: #define VM_NKMEMPAGES 6 /* int - # kmem_map pages */
! 110: #define VM_ANONMIN 7
! 111: #define VM_VTEXTMIN 8
! 112: #define VM_VNODEMIN 9
! 113: #define VM_MAXSLP 10
! 114: #define VM_USPACE 11
! 115: #define VM_MAXID 12 /* number of valid vm ids */
! 116:
! 117: #define CTL_VM_NAMES { \
! 118: { 0, 0 }, \
! 119: { "vmmeter", CTLTYPE_STRUCT }, \
! 120: { "loadavg", CTLTYPE_STRUCT }, \
! 121: { "psstrings", CTLTYPE_STRUCT }, \
! 122: { "uvmexp", CTLTYPE_STRUCT }, \
! 123: { "swapencrypt", CTLTYPE_NODE }, \
! 124: { "nkmempages", CTLTYPE_INT }, \
! 125: { "anonmin", CTLTYPE_INT }, \
! 126: { "vtextmin", CTLTYPE_INT }, \
! 127: { "vnodemin", CTLTYPE_INT }, \
! 128: { "maxslp", CTLTYPE_INT }, \
! 129: { "uspace", CTLTYPE_INT }, \
! 130: }
! 131:
! 132: struct _ps_strings {
! 133: void *val;
! 134: };
! 135:
! 136: #define SWAPSKIPBYTES 8192 /* never use at the start of a swap space */
! 137:
! 138: #ifndef ASSEMBLER
! 139: /*
! 140: * Convert addresses to pages and vice versa.
! 141: * No rounding is used.
! 142: */
! 143: #ifdef _KERNEL
! 144: #define atop(x) ((x) >> PAGE_SHIFT)
! 145: #define ptoa(x) ((x) << PAGE_SHIFT)
! 146:
! 147: /*
! 148: * Round off or truncate to the nearest page. These will work
! 149: * for either addresses or counts (i.e., 1 byte rounds to 1 page).
! 150: */
! 151: #define round_page(x) (((x) + PAGE_MASK) & ~PAGE_MASK)
! 152: #define trunc_page(x) ((x) & ~PAGE_MASK)
! 153:
! 154: extern psize_t mem_size; /* size of physical memory (bytes) */
! 155: #ifdef UBC
! 156: extern int ubc_nwins; /* number of UBC mapping windows */
! 157: extern int ubc_winsize; /* size of a UBC mapping window */
! 158: #endif
! 159:
! 160: #else
! 161: /* out-of-kernel versions of round_page and trunc_page */
! 162: #define round_page(x) \
! 163: ((((vaddr_t)(x) + (vm_page_size - 1)) / vm_page_size) * \
! 164: vm_page_size)
! 165: #define trunc_page(x) \
! 166: ((((vaddr_t)(x)) / vm_page_size) * vm_page_size)
! 167:
! 168: #endif /* _KERNEL */
! 169: #endif /* ASSEMBLER */
! 170: #endif /* _VM_PARAM_ */
CVSweb