uvmspace_share man page on NetBSD

Man page or keyword search:  
man Server   9087 pages
apropos Keyword Search (all sections)
Output format
NetBSD logo
[printable version]

UVM_MAP(9)		 BSD Kernel Developer's Manual		    UVM_MAP(9)

NAME
     uvm_map — virtual address space management interface

SYNOPSIS
     #include <sys/param.h>
     #include <uvm/uvm.h>

     int
     uvm_map(struct vm_map *map, vaddr_t *startp, vsize_t size,
	 struct uvm_object *uobj, voff_t uoffset, vsize_t align,
	 uvm_flag_t flags);

     void
     uvm_unmap(struct vm_map *map, vaddr_t start, vaddr_t end);

     int
     uvm_map_pageable(struct vm_map *map, vaddr_t start, vaddr_t end,
	 bool new_pageable, int lockflags);

     bool
     uvm_map_checkprot(struct vm_map *map, vaddr_t start, vaddr_t end,
	 vm_prot_t protection);

     int
     uvm_map_protect(struct vm_map *map, vaddr_t start, vaddr_t end,
	 vm_prot_t new_prot, bool set_max);

     int
     uvm_deallocate(struct vm_map *map, vaddr_t start, vsize_t size);

     struct vmspace *
     uvmspace_alloc(vaddr_t min, vaddr_t max);

     void
     uvmspace_exec(struct lwp *l, vaddr_t start, vaddr_t end);

     struct vmspace *
     uvmspace_fork(struct vmspace *vm);

     void
     uvmspace_free(struct vmspace *vm);

     void
     uvmspace_share(struct proc *p1, struct proc *p2);

     vaddr_t
     uvm_uarea_alloc(void);

     void
     uvm_uarea_free(vaddr_t uaddr);

     vaddr_t
     uvm_uarea_system_alloc(void);

     void
     uvm_uarea_system_free(vaddr_t uaddr);

DESCRIPTION
     The UVM facility for virtual address space management.

FUNCTIONS
     uvm_map() establishes a valid mapping in map map, which must be unlocked.
     The new mapping has size size, which must be a multiple of PAGE_SIZE.
     The uobj and uoffset arguments can have four meanings.  When uobj is NULL
     and uoffset is UVM_UNKNOWN_OFFSET, uvm_map() does not use the machine-
     dependent PMAP_PREFER function.  If uoffset is any other value, it is
     used as the hint to PMAP_PREFER.  When uobj is not NULL and uoffset is
     UVM_UNKNOWN_OFFSET, uvm_map() finds the offset based upon the virtual
     address, passed as startp.	 If uoffset is any other value, then a regular
     mapping is performed at this offset.  The start address of the map will
     be returned in startp.

     align specifies alignment of mapping unless UVM_FLAG_FIXED is specified
     in flags.	align must be a power of 2.

     flags passed to uvm_map() are typically created using the
     UVM_MAPFLAG(vm_prot_t prot, vm_prot_t maxprot, vm_inherit_t inh, int
     advice, int flags) macro, which uses the following values.	 The prot and
     maxprot can take are:

     UVM_PROT_NONE	 No protection bits.

     UVM_PROT_R		 Read.

     UVM_PROT_W		 Write.

     UVM_PROT_X		 Exec.

     UVM_PROT_MASK	 Mask to extraction the protection bits.

     Additionally, the following constants for ORed values are available:
     UVM_PROT_RW, UVM_PROT_RX, UVM_PROT_WX and UVM_PROT_RWX.

     The values that inh can take are:

     UVM_INH_SHARE	 Share the map.

     UVM_INH_COPY	 Copy the map.

     UVM_INH_NONE	 No inheritance.

     UVM_INH_MASK	 Mark to extract inherit flags.

     The values that advice can take are:

     UVM_ADV_NORMAL	 "Normal" use.

     UVM_ADV_RANDOM	 "Random" access likelyhood.

     UVM_ADV_SEQUENTIAL	 "Sequential" access likelyhood.

     UVM_ADV_MASK	 Mask to extract the advice flags.

     The values that flags can take are:

     UVM_FLAG_FIXED	 Attempt to map on the address specified by startp.
			 Otherwise, it is used just as a hint.

     UVM_FLAG_OVERLAY	 Establish overlay.

     UVM_FLAG_NOMERGE	 Do not merge map entries, if such merge is possible.

     UVM_FLAG_COPYONW	 Use copy-on-write i.e. do not fault in the pages
			 immediately.

     UVM_FLAG_AMAPPAD	 User for BSS: alocate larger amap, if extending is
			 likely.

     UVM_FLAG_TRYLOCK	 Fail if cannot acquire the lock immediately.

     UVM_FLAG_NOWAIT	 Not allowed to sleep.	Fail, in such case.

     UVM_FLAG_QUANTUM	 Indicates that map entry cannot be split once mapped.

     UVM_FLAG_WAITVA	 Sleep until VA space is available, if it is not.

     UVM_FLAG_VAONLY	 Unmap only VA space.  Used by uvm_unmap().

     The UVM_MAPFLAG macro arguments can be combined with an or operator.
     There are several special purpose macros for checking protection combina‐
     tions, e.g., the UVM_PROT_WX.  There are also some additional macros to
     extract bits from the flags.  The UVM_PROTECTION, UVM_INHERIT,
     UVM_MAXPROTECTION and UVM_ADVICE macros return the protection, inheri‐
     tance, maximum protection and advice, respectively.  uvm_map() returns
     zero on success or error number otherwise.

     uvm_unmap() removes a valid mapping, from start to end, in map map, which
     must be unlocked.

     uvm_map_pageable() changes the pageability of the pages in the range from
     start to end in map map to new_pageable.  uvm_map_pageable() returns zero
     on success or error number otherwise.

     uvm_map_checkprot() checks the protection of the range from start to end
     in map map against protection.  This returns either true or false.

     uvm_map_protect() changes the protection start to end in map map to
     new_prot, also setting the maximum protection to the region to new_prot
     if set_max is true.  This function returns a standard UVM return value.

     uvm_deallocate() deallocates kernel memory in map map from address start
     to start + size.

     uvmspace_alloc() allocates and returns a new address space, with ranges
     from min to max.

     uvmspace_exec() either reuses the address space of thread l (its process)
     if there are no other references to it, or creates a new one with
     uvmspace_alloc().	The range of valid addresses in the address space is
     reset to start through end.

     uvmspace_fork() creates and returns a new address space based upon the vm
     address space, typically used when allocating an address space for a
     child process.

     uvmspace_free() lowers the reference count on the address space vm, free‐
     ing the data structures if there are no other references.

     uvmspace_share() causes process p2 to share the address space of p1.

     uvm_uarea_alloc() allocates memory for a u-area (i.e. kernel stack, PCB,
     etc) and returns the address.

     uvm_uarea_free() frees a u-area allocated with uvm_uarea_alloc().

     uvm_uarea_system_alloc() and uvm_uarea_system_free() are optimised rou‐
     tines, which are used for kernel threads.

SEE ALSO
     pmap(9), uvm(9), uvm_km(9), vmem(9)

HISTORY
     UVM and uvm_map first appeared in NetBSD 1.4.

BSD				 June 3, 2011				   BSD
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server NetBSD

List of man pages available for NetBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net