Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/share/man/man9 vm_map_t -> struct vm_map *.



details:   https://anonhg.NetBSD.org/src/rev/af337bdf085b
branches:  trunk
changeset: 513333:af337bdf085b
user:      chs <chs%NetBSD.org@localhost>
date:      Sat Jul 28 15:31:29 2001 +0000

description:
vm_map_t -> struct vm_map *.
add UBC interfaces.

diffstat:

 share/man/man9/uvm.9 |  217 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 132 insertions(+), 85 deletions(-)

diffs (truncated from 322 to 300 lines):

diff -r a9ef1e4f9e48 -r af337bdf085b share/man/man9/uvm.9
--- a/share/man/man9/uvm.9      Sat Jul 28 15:08:10 2001 +0000
+++ b/share/man/man9/uvm.9      Sat Jul 28 15:31:29 2001 +0000
@@ -1,4 +1,4 @@
-.\"    $NetBSD: uvm.9,v 1.24 2001/06/21 15:22:38 jdolecek Exp $
+.\"    $NetBSD: uvm.9,v 1.25 2001/07/28 15:31:29 chs Exp $
 .\"
 .\" Copyright (c) 1998 Matthew R. Green
 .\" All rights reserved.
@@ -108,15 +108,15 @@
 .Pp
 .nr nS 1
 .Ft int
-.Fn uvm_map "vm_map_t map" "vaddr_t *startp" "vsize_t size" "struct uvm_object *uobj" "voff_t uoffset" "uvm_flag_t flags"
+.Fn uvm_map "struct vm_map *map" "vaddr_t *startp" "vsize_t size" "struct uvm_object *uobj" "voff_t uoffset" "uvm_flag_t flags"
 .Ft int
-.Fn uvm_map_pageable "vm_map_t map" "vaddr_t start" "vaddr_t end" "boolean_t new_pageable" "int lockflags"
+.Fn uvm_map_pageable "struct vm_map *map" "vaddr_t start" "vaddr_t end" "boolean_t new_pageable" "int lockflags"
 .Ft boolean_t
-.Fn uvm_map_checkprot "vm_map_t map" "vaddr_t start" "vaddr_t end" "vm_prot_t protection"
+.Fn uvm_map_checkprot "struct vm_map *map" "vaddr_t start" "vaddr_t end" "vm_prot_t protection"
 .Ft int
-.Fn uvm_map_protect "vm_map_t map" "vaddr_t start" "vaddr_t end" "vm_prot_t new_prot" "boolean_t set_max"
+.Fn uvm_map_protect "struct vm_map *map" "vaddr_t start" "vaddr_t end" "vm_prot_t new_prot" "boolean_t set_max"
 .Ft int
-.Fn uvm_deallocate "vm_map_t map" "vaddr_t start" "vsize_t size"
+.Fn uvm_deallocate "struct vm_map *map" "vaddr_t start" "vsize_t size"
 
 .Ft struct vmspace *
 .Fn uvmspace_alloc "vaddr_t min" "vaddr_t max" "int pageable"
@@ -343,7 +343,7 @@
 .Pp
 .nr nS 1
 .Ft int
-.Fn uvm_fault "vm_map_t orig_map" "vaddr_t vaddr" "vm_fault_t fault_type" "vm_prot_t access_type"
+.Fn uvm_fault "struct vm_map *orig_map" "vaddr_t vaddr" "vm_fault_t fault_type" "vm_prot_t access_type"
 .nr nS 0
 .Pp
 .Fn uvm_fault
@@ -364,13 +364,11 @@
 .Ft struct uvm_object *
 .Fn uvn_attach "void *arg" "vm_prot_t accessprot"
 .Ft void
-.Fn uvm_vnp_setsize "struct vnode *vp" "u_quad_t newsize"
-.Ft void
-.Fn uvm_vnp_sync "struct mount *mp"
+.Fn uvm_vnp_setsize "struct vnode *vp" "voff_t newsize"
+.Ft void *
+.Fn ubc_alloc "struct uvm_object *uobj" "voff_t offset" "vsize_t *lenp" "int flags"
 .Ft void
-.Fn uvm_vnp_terminate "struct vnode *vp"
-.Ft boolean_t
-.Fn uvm_vnp_uncache "struct vnode *vp"
+.Fn ubc_release "void *va" "int flags"
 .nr nS 0
 .Pp
 .Fn uvn_attach
@@ -384,37 +382,46 @@
 to
 .Fa newsize .
 Caller must hold a reference to the vnode.  If the vnode shrinks, pages
-no longer used are discarded.  This function will be removed when the
-filesystem and VM buffer caches are merged.
+no longer used are discarded.
 .Pp
-.Fn uvm_vnp_sync
-flushes dirty vnodes from either the mount point passed in
-.Fa mp ,
-or all dirty vnodes if
-.Fa mp
-is
-.Dv NULL .
-This function will be removed when the filesystem and VM buffer caches
-are merged.
+.Fn ubc_alloc
+creates a kernel mappings of
+.Fa uobj
+starting at offset
+.Fa offset .
+the desired length of the mapping is pointed to by
+.Fa lenp ,
+but the actual mapping may be smaller than this.
+.Fa lenp
+is updated to contain the actual length mapped.
+The flags must be one of
+.Bd -literal
+#define UBC_READ       0x01    /* mapping will be accessed for read */
+#define UBC_WRITE      0x02    /* mapping will be accessed for write */
+.Ed
 .Pp
-.Fn uvm_vnp_terminate
-frees all VM resources allocated to vnode
-.Fa vp .
-If the vnode still has references, it will not be destroyed; however
-all future operations using this vnode will fail.  This function will be
-removed when the filesystem and VM buffer caches are merged.
+Currently,
+.Fa uobj
+must actually be a vnode object.
+Once the mapping is created, it must be accessed only by methods that can
+handle faults, such as
+.Fn uiomove
+or
+.Fn kcopy .
+Page faults on the mapping will result in the vnode's
+.Fn VOP_GETPAGES
+method being called to resolve the fault.
 .Pp
-.Fn uvm_vnp_uncache
-disables vnode
-.Fa vp
-from persisting when all references are freed.  This function will be
-removed when the file-system and UVM caches are unified.  Returns
-true if there is no active vnode.
+.Fn ubc_release
+frees the mapping at
+.Fa va
+for reuse.  The mapping may be cached to speed future accesses to the same
+region of the object.  The flags are currently unused.
 .Sh VIRTUAL MEMORY I/O
 .Pp
 .nr nS 1
 .Ft int
-.Fn uvm_io "vm_map_t map" "struct uio *uio"
+.Fn uvm_io "struct vm_map *map" "struct uio *uio"
 .nr nS 0
 .Pp
 .Fn uvm_io
@@ -426,23 +433,23 @@
 .Pp
 .nr nS 1
 .Ft vaddr_t
-.Fn uvm_km_alloc "vm_map_t map" "vsize_t size"
+.Fn uvm_km_alloc "struct vm_map *map" "vsize_t size"
 .Ft vaddr_t
-.Fn uvm_km_zalloc "vm_map_t map" "vsize_t size"
+.Fn uvm_km_zalloc "struct vm_map *map" "vsize_t size"
 .Ft vaddr_t
-.Fn uvm_km_alloc1 "vm_map_t map" "vsize_t size" "boolean_t zeroit"
+.Fn uvm_km_alloc1 "struct vm_map *map" "vsize_t size" "boolean_t zeroit"
 .Ft vaddr_t
-.Fn uvm_km_kmemalloc "vm_map_t map" "struct uvm_object *obj" "vsize_t size" "int flags"
+.Fn uvm_km_kmemalloc "struct vm_map *map" "struct uvm_object *obj" "vsize_t size" "int flags"
 .Ft vaddr_t
-.Fn uvm_km_valloc "vm_map_t map" "vsize_t size"
+.Fn uvm_km_valloc "struct vm_map *map" "vsize_t size"
 .Ft vaddr_t
-.Fn uvm_km_valloc_wait "vm_map_t map" "vsize_t size"
+.Fn uvm_km_valloc_wait "struct vm_map *map" "vsize_t size"
 .Ft struct vm_map *
-.Fn uvm_km_suballoc "vm_map_t map" "vaddr_t *min" "vaddr_t *max " "vsize_t size" "boolean_t pageable" "boolean_t fixed" "vm_map_t submap"
+.Fn uvm_km_suballoc "struct vm_map *map" "vaddr_t *min" "vaddr_t *max " "vsize_t size" "boolean_t pageable" "boolean_t fixed" "struct vm_map *submap"
 .Ft void
-.Fn uvm_km_free "vm_map_t map" "vaddr_t addr" "vsize_t size"
+.Fn uvm_km_free "struct vm_map *map" "vaddr_t addr" "vsize_t size"
 .Ft void
-.Fn uvm_km_free_wakeup "vm_map_t map" "vaddr_t addr" "vsize_t size"
+.Fn uvm_km_free_wakeup "struct vm_map *map" "vaddr_t addr" "vsize_t size"
 .nr nS 0
 .Pp
 .Fn uvm_km_alloc
@@ -500,6 +507,43 @@
 .Fn uvm_km_valloc_wait
 will also wait for kernel memory to become available, if there is a
 memory shortage.
+.Pp
+.Fn uvm_km_free
+and
+.Fn uvm_km_free_wakeup
+free
+.Fa size
+bytes of memory in the kernel map, starting at address
+.Fa addr .
+.Fn uvm_km_free_wakeup
+calls
+.Fn wakeup
+on the map before unlocking the map.
+.Pp
+.Fn uvm_km_suballoc
+allocates submap from
+.Fa map ,
+creating a new map if
+.Fa submap
+is
+.Dv NULL .
+The addresses of the submap can be specified exactly by setting the
+.Fa fixed
+argument to non-zero, which causes the
+.Fa min
+argument specify the beginning of the address in the submap.  If
+.Fa fixed
+is zero, any address of size
+.Fa size
+will be allocated from
+.Fa map
+and the start and end addresses returned in
+.Fa min
+and
+.Fa max .
+If
+.Fa pageable
+is non-zero, entries in the map may be paged out.
 .Sh ALLOCATION OF PHYSICAL MEMORY
 .Pp
 .nr nS 1
@@ -580,43 +624,6 @@
 of the physical addresses of the segment, and the available start and end
 addresses of pages not already in use.
 .\" XXX expand on "system boot time"!
-.Pp
-.Fn uvm_km_suballoc
-allocates submap from
-.Fa map ,
-creating a new map if
-.Fa submap
-is
-.Dv NULL .
-The addresses of the submap can be specified exactly by setting the
-.Fa fixed
-argument to non-zero, which causes the
-.Fa min
-argument specify the beginning of the address in the submap.  If
-.Fa fixed
-is zero, any address of size
-.Fa size
-will be allocated from
-.Fa map
-and the start and end addresses returned in
-.Fa min
-and
-.Fa max .
-If
-.Fa pageable
-is non-zero, entries in the map may be paged out.
-.Pp
-.Fn uvm_km_free
-and
-.Fn uvm_km_free_wakeup
-free
-.Fa size
-bytes of memory in the kernel map, starting at address
-.Fa addr .
-.Fn uvm_km_free_wakeup
-calls
-.Fn thread_wakeup
-on the map before unlocking the map.
 .Sh PROCESSES
 .Pp
 .nr nS 1
@@ -672,6 +679,10 @@
 .Fn uvm_grow "struct proc *p" "vaddr_t sp"
 .Ft int
 .Fn uvm_coredump "struct proc *p" "struct vnode *vp" "struct ucred *cred" "struct core *chdr"
+
+.Ft void
+.Fn uvn_findpages "struct uvm_object *uobj" "voff_t offset" "int *npagesp" "struct vm_page **pps" "int flags"
+
 .nr nS 0
 .Pp
 The
@@ -688,8 +699,8 @@
 .Bd -literal
 #define UAO_FLAG_KERNOBJ        0x1     /* create kernel object */
 #define UAO_FLAG_KERNSWAP       0x2     /* enable kernel swap */
+.Ed
 .Pp
-.Ed
 which can only be used once each at system boot time.
 .Fn uao_reference
 creates an additional reference to the named anonymous memory object.
@@ -862,6 +873,40 @@
 .Fa cred
 and core header description in
 .Fa chdr .
+.Pp
+.Fn uvn_findpages
+looks up or creates pages in
+.Fa uobj
+at offset
+.Fa offset ,
+marks them busy and returns them in the
+.Fa pps
+array.
+Currently
+.Fa uobj
+must be a vnode object.
+The number of pages requested is pointed to by
+.Fa npagesp ,
+and this value is updated with the actual number of pages returned.
+The flags can be
+.Bd -literal
+#define UFP_ALL                0x00    /* return all pages requested */
+#define UFP_NOWAIT     0x01    /* don't sleep */
+#define UFP_NOALLOC    0x02    /* don't allocate new pages */
+#define UFP_NOCACHE    0x04    /* don't return pages which already exist */
+#define UFP_NORDONLY   0x08    /* don't return PG_READONLY pages */
+.Ed
+.Pp
+.Dv UFP_ALL
+is a pseudo-flag meaning all requested pages should be returned.



Home | Main Index | Thread Index | Old Index