xref: /original-bsd/sys/vm/pmap.h (revision 3705696b)
1 /*
2  * Copyright (c) 1991, 1993
3  *	The Regents of the University of California.  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	8.1 (Berkeley) 06/11/93
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 __BEGIN_DECLS
63 void		*pmap_bootstrap_alloc __P((int));
64 void		 pmap_bootstrap( /* machine dependent */ );
65 void		 pmap_change_wiring __P((pmap_t, vm_offset_t, boolean_t));
66 void		 pmap_clear_modify __P((vm_offset_t pa));
67 void		 pmap_clear_reference __P((vm_offset_t pa));
68 void		 pmap_collect __P((pmap_t));
69 void		 pmap_copy __P((pmap_t,
70 		    pmap_t, vm_offset_t, vm_size_t, vm_offset_t));
71 void		 pmap_copy_page __P((vm_offset_t, vm_offset_t));
72 pmap_t		 pmap_create __P((vm_size_t));
73 void		 pmap_destroy __P((pmap_t));
74 void		 pmap_enter __P((pmap_t,
75 		    vm_offset_t, vm_offset_t, vm_prot_t, boolean_t));
76 vm_offset_t	 pmap_extract __P((pmap_t, vm_offset_t));
77 void		 pmap_init __P((vm_offset_t, vm_offset_t));
78 boolean_t	 pmap_is_modified __P((vm_offset_t pa));
79 boolean_t	 pmap_is_referenced __P((vm_offset_t pa));
80 vm_offset_t	 pmap_map __P((vm_offset_t, vm_offset_t, vm_offset_t, int));
81 void		 pmap_page_protect __P((vm_offset_t, vm_prot_t));
82 void		 pmap_pageable __P((pmap_t,
83 		    vm_offset_t, vm_offset_t, boolean_t));
84 vm_offset_t	 pmap_phys_address __P((int));
85 void		 pmap_pinit __P((pmap_t));
86 void		 pmap_protect __P((pmap_t,
87 		    vm_offset_t, vm_offset_t, vm_prot_t));
88 void		 pmap_reference __P((pmap_t));
89 void		 pmap_release __P((pmap_t));
90 void		 pmap_remove __P((pmap_t, vm_offset_t, vm_offset_t));
91 void		 pmap_update __P((void));
92 void		 pmap_zero_page __P((vm_offset_t));
93 __END_DECLS
94 #endif
95 
96 #endif /* _PMAP_VM_ */
97