xref: /original-bsd/sys/vm/pmap.h (revision d852a0c9)
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.5 (Berkeley) 08/28/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();
63 void		pmap_init();
64 void		pmap_pinit __P((struct pmap *pmap));
65 void		pmap_release __P((struct pmap *pmap));
66 vm_offset_t	pmap_map();
67 pmap_t		pmap_create();
68 void		pmap_destroy();
69 void		pmap_reference();
70 void		pmap_remove();
71 void		pmap_page_protect();
72 void		pmap_protect();
73 void		pmap_enter();
74 vm_offset_t	pmap_extract();
75 void		pmap_update();
76 void		pmap_collect();
77 void		pmap_activate();
78 void		pmap_deactivate();
79 void		pmap_copy();
80 void		pmap_statistics();
81 void		pmap_clear_reference();
82 boolean_t	pmap_is_referenced();
83 #ifndef pmap_kernel
84 pmap_t		pmap_kernel();
85 #endif
86 
87 void		pmap_redzone();
88 boolean_t	pmap_access();
89 
90 extern pmap_t	kernel_pmap;
91 #endif
92 
93 #endif	_PMAP_VM_
94