| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | .\" $NetBSD: pmap.9,v 1.38 2009/08/03 22:08:57 pooka Exp $ | | 1 | .\" $NetBSD: pmap.9,v 1.39 2009/10/21 23:33:32 rmind Exp $ |
2 | .\" | | 2 | .\" |
3 | .\" Copyright (c) 2000, 2001, 2002 The NetBSD Foundation, Inc. | | 3 | .\" Copyright (c) 2000, 2001, 2002 The NetBSD Foundation, Inc. |
4 | .\" All rights reserved. | | 4 | .\" All rights reserved. |
5 | .\" | | 5 | .\" |
6 | .\" This code is derived from software contributed to The NetBSD Foundation | | 6 | .\" This code is derived from software contributed to The NetBSD Foundation |
7 | .\" by Jason R. Thorpe. | | 7 | .\" by Jason R. Thorpe. |
8 | .\" | | 8 | .\" |
9 | .\" Redistribution and use in source and binary forms, with or without | | 9 | .\" Redistribution and use in source and binary forms, with or without |
10 | .\" modification, are permitted provided that the following conditions | | 10 | .\" modification, are permitted provided that the following conditions |
11 | .\" are met: | | 11 | .\" are met: |
12 | .\" 1. Redistributions of source code must retain the above copyright | | 12 | .\" 1. Redistributions of source code must retain the above copyright |
13 | .\" notice, this list of conditions and the following disclaimer. | | 13 | .\" notice, this list of conditions and the following disclaimer. |
14 | .\" 2. Redistributions in binary form must reproduce the above copyright | | 14 | .\" 2. Redistributions in binary form must reproduce the above copyright |
| @@ -17,27 +17,27 @@ | | | @@ -17,27 +17,27 @@ |
17 | .\" | | 17 | .\" |
18 | .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | | 18 | .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
19 | .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | | 19 | .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
20 | .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | | 20 | .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
21 | .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | | 21 | .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
22 | .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | | 22 | .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | | 23 | .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | | 24 | .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
25 | .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | | 25 | .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
26 | .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | | 26 | .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
27 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | | 27 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
28 | .\" POSSIBILITY OF SUCH DAMAGE. | | 28 | .\" POSSIBILITY OF SUCH DAMAGE. |
29 | .\" | | 29 | .\" |
30 | .Dd August 3, 2009 | | 30 | .Dd October 22, 2009 |
31 | .Dt PMAP 9 | | 31 | .Dt PMAP 9 |
32 | .Os | | 32 | .Os |
33 | .Sh NAME | | 33 | .Sh NAME |
34 | .Nm pmap | | 34 | .Nm pmap |
35 | .Nd machine-dependent portion of the virtual memory system | | 35 | .Nd machine-dependent portion of the virtual memory system |
36 | .Sh SYNOPSIS | | 36 | .Sh SYNOPSIS |
37 | .In sys/param.h | | 37 | .In sys/param.h |
38 | .In uvm/uvm_extern.h | | 38 | .In uvm/uvm_extern.h |
39 | .Ft void | | 39 | .Ft void |
40 | .Fn "pmap_init" "void" | | 40 | .Fn "pmap_init" "void" |
41 | .Ft void | | 41 | .Ft void |
42 | .Fn "pmap_virtual_space" "vaddr_t *vstartp" "vaddr_t *vendp" | | 42 | .Fn "pmap_virtual_space" "vaddr_t *vstartp" "vaddr_t *vendp" |
43 | .Ft vaddr_t | | 43 | .Ft vaddr_t |
| @@ -69,28 +69,26 @@ | | | @@ -69,28 +69,26 @@ |
69 | .Fn "pmap_protect" "pmap_t pmap" "vaddr_t sva" "vaddr_t eva" "vm_prot_t prot" | | 69 | .Fn "pmap_protect" "pmap_t pmap" "vaddr_t sva" "vaddr_t eva" "vm_prot_t prot" |
70 | .Ft void | | 70 | .Ft void |
71 | .Fn "pmap_unwire" "pmap_t pmap" "vaddr_t va" | | 71 | .Fn "pmap_unwire" "pmap_t pmap" "vaddr_t va" |
72 | .Ft bool | | 72 | .Ft bool |
73 | .Fn "pmap_extract" "pmap_t pmap" "vaddr_t va" "paddr_t *pap" | | 73 | .Fn "pmap_extract" "pmap_t pmap" "vaddr_t va" "paddr_t *pap" |
74 | .Ft void | | 74 | .Ft void |
75 | .Fn "pmap_kenter_pa" "vaddr_t va" "paddr_t pa" "vm_prot_t prot" | | 75 | .Fn "pmap_kenter_pa" "vaddr_t va" "paddr_t pa" "vm_prot_t prot" |
76 | .Ft void | | 76 | .Ft void |
77 | .Fn "pmap_kremove" "vaddr_t va" "vsize_t size" | | 77 | .Fn "pmap_kremove" "vaddr_t va" "vsize_t size" |
78 | .Ft void | | 78 | .Ft void |
79 | .Fn "pmap_copy" "pmap_t dst_map" "pmap_t src_map" "vaddr_t dst_addr" \ | | 79 | .Fn "pmap_copy" "pmap_t dst_map" "pmap_t src_map" "vaddr_t dst_addr" \ |
80 | "vsize_t len" "vaddr_t src_addr" | | 80 | "vsize_t len" "vaddr_t src_addr" |
81 | .Ft void | | 81 | .Ft void |
82 | .Fn "pmap_collect" "pmap_t pmap" | | | |
83 | .Ft void | | | |
84 | .Fn "pmap_update" "pmap_t pmap" | | 82 | .Fn "pmap_update" "pmap_t pmap" |
85 | .Ft void | | 83 | .Ft void |
86 | .Fn "pmap_activate" "struct lwp *l" | | 84 | .Fn "pmap_activate" "struct lwp *l" |
87 | .Ft void | | 85 | .Ft void |
88 | .Fn "pmap_deactivate" "struct lwp *l" | | 86 | .Fn "pmap_deactivate" "struct lwp *l" |
89 | .Ft void | | 87 | .Ft void |
90 | .Fn "pmap_zero_page" "paddr_t pa" | | 88 | .Fn "pmap_zero_page" "paddr_t pa" |
91 | .Ft void | | 89 | .Ft void |
92 | .Fn "pmap_copy_page" "paddr_t src" "paddr_t dst" | | 90 | .Fn "pmap_copy_page" "paddr_t src" "paddr_t dst" |
93 | .Ft void | | 91 | .Ft void |
94 | .Fn "pmap_page_protect" "struct vm_page *pg" "vm_prot_t prot" | | 92 | .Fn "pmap_page_protect" "struct vm_page *pg" "vm_prot_t prot" |
95 | .Ft bool | | 93 | .Ft bool |
96 | .Fn "pmap_clear_modify" "struct vm_page *pg" | | 94 | .Fn "pmap_clear_modify" "struct vm_page *pg" |
| @@ -667,49 +665,26 @@ bytes into | | | @@ -667,49 +665,26 @@ bytes into |
667 | .Fa dst_map | | 665 | .Fa dst_map |
668 | starting at | | 666 | starting at |
669 | .Fa dst_addr . | | 667 | .Fa dst_addr . |
670 | .Pp | | 668 | .Pp |
671 | Note that while this function is required to be provided by a | | 669 | Note that while this function is required to be provided by a |
672 | .Nm | | 670 | .Nm |
673 | implementation, it is not actually required to do anything. | | 671 | implementation, it is not actually required to do anything. |
674 | .Fn pmap_copy | | 672 | .Fn pmap_copy |
675 | is merely advisory (it is used in the | | 673 | is merely advisory (it is used in the |
676 | .Xr fork 2 | | 674 | .Xr fork 2 |
677 | path to | | 675 | path to |
678 | .Dq pre-fault | | 676 | .Dq pre-fault |
679 | the child's address space). | | 677 | the child's address space). |
680 | .It void Fn "pmap_collect" "pmap_t pmap" | | | |
681 | This function is called just before a process is swapped out to | | | |
682 | allow the | | | |
683 | .Nm | | | |
684 | module to release resources used to map the process's address space. | | | |
685 | The implementation may choose to remove physical mappings in order | | | |
686 | to free for example page tables back to the system. | | | |
687 | Note, however, that wired mappings must | | | |
688 | .Em not | | | |
689 | be removed when | | | |
690 | .Fn pmap_collect | | | |
691 | is called. | | | |
692 | .Pp | | | |
693 | Note that while this function is required to be provided by a | | | |
694 | .Nm | | | |
695 | implementation, it is not actually required to do anything. | | | |
696 | .Fn pmap_collect | | | |
697 | is merely advisory. | | | |
698 | It is recommended, however, that | | | |
699 | .Fn pmap_collect | | | |
700 | be fully implemented by a | | | |
701 | .Nm | | | |
702 | implementation. | | | |
703 | .It void Fn "pmap_update" "pmap_t pmap" | | 678 | .It void Fn "pmap_update" "pmap_t pmap" |
704 | This function is used to inform the | | 679 | This function is used to inform the |
705 | .Nm | | 680 | .Nm |
706 | module that all physical mappings, for the specified pmap, must now be | | 681 | module that all physical mappings, for the specified pmap, must now be |
707 | correct. | | 682 | correct. |
708 | That is, all delayed virtual-to-physical mappings updates (such as TLB | | 683 | That is, all delayed virtual-to-physical mappings updates (such as TLB |
709 | invalidation or address space identifier updates) must be completed. | | 684 | invalidation or address space identifier updates) must be completed. |
710 | This routine must be used after calls to | | 685 | This routine must be used after calls to |
711 | .Fn pmap_enter , | | 686 | .Fn pmap_enter , |
712 | .Fn pmap_remove , | | 687 | .Fn pmap_remove , |
713 | .Fn pmap_protect , | | 688 | .Fn pmap_protect , |
714 | .Fn pmap_kenter_pa , | | 689 | .Fn pmap_kenter_pa , |
715 | and | | 690 | and |