xref: /original-bsd/sys/vm/pmap.h (revision 817cfbae)
1 /*
2  * Copyright (c) 1991 Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * The Mach Operating System project at Carnegie-Mellon University.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)pmap.h	7.8 (Berkeley) 09/12/91
11  *
12  *
13  * Copyright (c) 1987, 1990 Carnegie-Mellon University.
14  * All rights reserved.
15  *
16  * Author: Avadis Tevanian, Jr.
17  *
18  * Permission to use, copy, modify and distribute this software and
19  * its documentation is hereby granted, provided that both the copyright
20  * notice and this permission notice appear in all copies of the
21  * software, derivative works or modified versions, and any portions
22  * thereof, and that both notices appear in supporting documentation.
23  *
24  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
25  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
26  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
27  *
28  * Carnegie Mellon requests users of this software to return to
29  *
30  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
31  *  School of Computer Science
32  *  Carnegie Mellon University
33  *  Pittsburgh PA 15213-3890
34  *
35  * any improvements or extensions that they make and grant Carnegie the
36  * rights to redistribute these changes.
37  */
38 
39 /*
40  *	Machine address mapping definitions -- machine-independent
41  *	section.  [For machine-dependent section, see "machine/pmap.h".]
42  */
43 
44 #ifndef	_PMAP_VM_
45 #define	_PMAP_VM_
46 
47 /*
48  * Each machine dependent implementation is expected to
49  * keep certain statistics.  They may do this anyway they
50  * so choose, but are expected to return the statistics
51  * in the following structure.
52  */
53 struct pmap_statistics {
54 	long		resident_count;	/* # of pages mapped (total)*/
55 	long		wired_count;	/* # of pages wired */
56 };
57 typedef struct pmap_statistics	*pmap_statistics_t;
58 
59 #include <machine/pmap.h>
60 
61 #ifdef KERNEL
62 void		pmap_bootstrap( /* machine dependent */ );
63 void *		pmap_bootstrap_alloc __P((int));
64 void		pmap_init __P((vm_offset_t, vm_offset_t));
65 vm_offset_t	pmap_map __P((vm_offset_t, vm_offset_t, vm_offset_t, int));
66 pmap_t		pmap_create __P((vm_size_t));
67 void		pmap_pinit __P((pmap_t));
68 void		pmap_destroy __P((pmap_t));
69 void		pmap_release __P((pmap_t));
70 void		pmap_reference __P((pmap_t));
71 void		pmap_remove __P((pmap_t, vm_offset_t, vm_offset_t));
72 void		pmap_page_protect __P((vm_offset_t, vm_prot_t));
73 void		pmap_protect __P((pmap_t, vm_offset_t, vm_offset_t, vm_prot_t));
74 void		pmap_enter __P((pmap_t, vm_offset_t, vm_offset_t, vm_prot_t, boolean_t));
75 void		pmap_change_wiring __P((pmap_t, vm_offset_t, boolean_t));
76 vm_offset_t	pmap_extract __P((pmap_t, vm_offset_t));
77 void		pmap_copy __P((pmap_t, pmap_t, vm_offset_t, vm_size_t,
78 			vm_offset_t));
79 void		pmap_update __P((void));
80 void		pmap_collect __P((pmap_t));
81 void		pmap_zero_page __P((vm_offset_t));
82 void		pmap_copy_page __P((vm_offset_t, vm_offset_t));
83 void		pmap_pageable __P((pmap_t, vm_offset_t, vm_offset_t,
84 			boolean_t));
85 void		pmap_clear_reference __P((vm_offset_t pa));
86 void		pmap_clear_modify __P((vm_offset_t pa));
87 boolean_t	pmap_is_referenced __P((vm_offset_t pa));
88 boolean_t	pmap_is_modified __P((vm_offset_t pa));
89 vm_offset_t	pmap_phys_address __P((int));
90 #ifndef pmap_kernel
91 pmap_t		pmap_kernel();
92 #endif
93 
94 extern pmap_t	kernel_pmap;
95 #endif
96 
97 #endif	_PMAP_VM_
98