[BACK]Return to uvm_pmap.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / uvm

Annotation of src/sys/uvm/uvm_pmap.h, Revision 1.14.2.2

1.14.2.1  skrll       1: /*     $NetBSD: uvm_pmap.h,v 1.18 2004/03/27 00:59:55 he Exp $ */
1.1       mrg         2:
1.7       chs         3: /*
1.1       mrg         4:  * Copyright (c) 1991, 1993
                      5:  *     The Regents of the University of California.  All rights reserved.
                      6:  *
                      7:  * This code is derived from software contributed to Berkeley by
                      8:  * The Mach Operating System project at Carnegie-Mellon University.
                      9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
1.14.2.1  skrll      18:  * 3. Neither the name of the University nor the names of its contributors
1.1       mrg        19:  *    may be used to endorse or promote products derived from this software
                     20:  *    without specific prior written permission.
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     23:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     24:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     25:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     26:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     27:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     28:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     29:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     30:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     31:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     32:  * SUCH DAMAGE.
                     33:  *
                     34:  *     @(#)pmap.h      8.1 (Berkeley) 6/11/93
                     35:  *
                     36:  *
                     37:  * Copyright (c) 1987, 1990 Carnegie-Mellon University.
                     38:  * All rights reserved.
                     39:  *
                     40:  * Author: Avadis Tevanian, Jr.
1.7       chs        41:  *
1.1       mrg        42:  * Permission to use, copy, modify and distribute this software and
                     43:  * its documentation is hereby granted, provided that both the copyright
                     44:  * notice and this permission notice appear in all copies of the
                     45:  * software, derivative works or modified versions, and any portions
                     46:  * thereof, and that both notices appear in supporting documentation.
1.7       chs        47:  *
                     48:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     49:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
1.1       mrg        50:  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
1.7       chs        51:  *
1.1       mrg        52:  * Carnegie Mellon requests users of this software to return to
                     53:  *
                     54:  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
                     55:  *  School of Computer Science
                     56:  *  Carnegie Mellon University
                     57:  *  Pittsburgh PA 15213-3890
                     58:  *
                     59:  * any improvements or extensions that they make and grant Carnegie the
                     60:  * rights to redistribute these changes.
                     61:  */
                     62:
                     63: /*
                     64:  *     Machine address mapping definitions -- machine-independent
                     65:  *     section.  [For machine-dependent section, see "machine/pmap.h".]
                     66:  */
                     67:
                     68: #ifndef        _PMAP_VM_
                     69: #define        _PMAP_VM_
                     70:
1.12      thorpej    71: struct lwp;            /* for pmap_activate()/pmap_deactivate() proto */
1.1       mrg        72:
                     73: /*
                     74:  * Each machine dependent implementation is expected to
                     75:  * keep certain statistics.  They may do this anyway they
                     76:  * so choose, but are expected to return the statistics
                     77:  * in the following structure.
                     78:  */
                     79: struct pmap_statistics {
                     80:        long            resident_count; /* # of pages mapped (total)*/
                     81:        long            wired_count;    /* # of pages wired */
                     82: };
                     83: typedef struct pmap_statistics *pmap_statistics_t;
                     84:
1.8       matt       85: #ifdef _KERNEL
1.1       mrg        86: #include <machine/pmap.h>
1.8       matt       87: #endif
1.1       mrg        88:
                     89: /*
                     90:  * Flags passed to pmap_enter().  Note the bottom 3 bits are VM_PROT_*
                     91:  * bits, used to indicate the access type that was made (to seed modified
                     92:  * and referenced information).
                     93:  */
                     94: #define        PMAP_WIRED      0x00000010      /* wired mapping */
                     95: #define        PMAP_CANFAIL    0x00000020      /* can fail if resource shortage */
                     96:
                     97: #ifndef PMAP_EXCLUDE_DECLS     /* Used in Sparc port to virtualize pmap mod */
                     98: #ifdef _KERNEL
                     99: __BEGIN_DECLS
1.6       thorpej   100: #if !defined(pmap_kernel)
1.14.2.1  skrll     101: struct pmap    *pmap_kernel(void);
1.6       thorpej   102: #endif
                    103:
1.14.2.1  skrll     104: void           pmap_activate(struct lwp *);
                    105: void           pmap_deactivate(struct lwp *);
                    106: void           pmap_unwire(pmap_t, vaddr_t);
1.1       mrg       107:
                    108: #if !defined(pmap_clear_modify)
1.14.2.1  skrll     109: boolean_t      pmap_clear_modify(struct vm_page *);
1.1       mrg       110: #endif
                    111: #if !defined(pmap_clear_reference)
1.14.2.1  skrll     112: boolean_t      pmap_clear_reference(struct vm_page *);
1.1       mrg       113: #endif
                    114:
1.14.2.1  skrll     115: #if !defined(pmap_collect)
                    116: void           pmap_collect(pmap_t);
                    117: #endif
                    118: #if !defined(pmap_copy)
                    119: void           pmap_copy(pmap_t, pmap_t, vaddr_t, vsize_t, vaddr_t);
                    120: #endif
1.10      thorpej   121: #if !defined(pmap_copy_page)
1.14.2.1  skrll     122: void           pmap_copy_page(paddr_t, paddr_t);
1.10      thorpej   123: #endif
1.14.2.1  skrll     124: struct pmap    *pmap_create(void);
                    125: void           pmap_destroy(pmap_t);
                    126: int            pmap_enter(pmap_t, vaddr_t, paddr_t, vm_prot_t, int);
                    127: boolean_t      pmap_extract(pmap_t, vaddr_t, paddr_t *);
1.1       mrg       128: #if defined(PMAP_GROWKERNEL)
1.14.2.1  skrll     129: vaddr_t                pmap_growkernel(vaddr_t);
1.1       mrg       130: #endif
                    131:
1.14.2.1  skrll     132: void           pmap_init(void);
1.1       mrg       133:
1.14.2.1  skrll     134: void           pmap_kenter_pa(vaddr_t, paddr_t, vm_prot_t);
                    135: void           pmap_kremove(vaddr_t, vsize_t);
1.1       mrg       136: #if !defined(pmap_is_modified)
1.14.2.1  skrll     137: boolean_t      pmap_is_modified(struct vm_page *);
1.1       mrg       138: #endif
                    139: #if !defined(pmap_is_referenced)
1.14.2.1  skrll     140: boolean_t      pmap_is_referenced(struct vm_page *);
1.1       mrg       141: #endif
                    142:
1.14.2.1  skrll     143: void           pmap_page_protect(struct vm_page *, vm_prot_t);
1.1       mrg       144:
                    145: #if !defined(pmap_phys_address)
1.14.2.1  skrll     146: paddr_t                pmap_phys_address(int);
                    147: #endif
                    148: void           pmap_protect(pmap_t, vaddr_t, vaddr_t, vm_prot_t);
                    149: #if !defined(pmap_reference)
                    150: void           pmap_reference(pmap_t);
                    151: #endif
                    152: #if !defined(pmap_remove)
                    153: void           pmap_remove(pmap_t, vaddr_t, vaddr_t);
                    154: #endif
                    155: void           pmap_remove_all(struct pmap *);
                    156: #if !defined(pmap_update)
                    157: void           pmap_update(pmap_t);
1.1       mrg       158: #endif
1.6       thorpej   159: #if !defined(pmap_resident_count)
1.14.2.1  skrll     160: long           pmap_resident_count(pmap_t);
1.6       thorpej   161: #endif
                    162: #if !defined(pmap_wired_count)
1.14.2.1  skrll     163: long           pmap_wired_count(pmap_t);
1.6       thorpej   164: #endif
1.10      thorpej   165: #if !defined(pmap_zero_page)
1.14.2.1  skrll     166: void           pmap_zero_page(paddr_t);
1.10      thorpej   167: #endif
1.1       mrg       168:
1.14.2.1  skrll     169: void           pmap_virtual_space(vaddr_t *, vaddr_t *);
1.1       mrg       170: #if defined(PMAP_STEAL_MEMORY)
1.14.2.1  skrll     171: vaddr_t                pmap_steal_memory(vsize_t, vaddr_t *, vaddr_t *);
1.1       mrg       172: #endif
                    173:
                    174: #if defined(PMAP_FORK)
1.14.2.1  skrll     175: void           pmap_fork(pmap_t, pmap_t);
1.1       mrg       176: #endif
                    177: __END_DECLS
                    178: #endif /* kernel*/
                    179: #endif  /* PMAP_EXCLUDE_DECLS */
                    180:
                    181: #endif /* _PMAP_VM_ */

CVSweb <webmaster@jp.NetBSD.org>