Unix/Linux Go Back    

NetBSD 6.1.5 - man page for uvm_km_suballoc (netbsd section 9)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

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

     uvm_km -- raw kernel memory or address space allocator

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

     uvm_km_alloc(struct vm_map *map, vsize_t size, vsize_t align, uvm_flag_t flags);

     uvm_km_free(struct vm_map *map, vaddr_t addr, vsize_t size, uvm_flag_t flags);

     struct vm_map *
     uvm_km_suballoc(struct vm_map *map, vaddr_t *min, vaddr_t *max, vsize_t size, int flags,
	 bool fixed, struct vm_map_kernel *submap);

     The UVM facility for allocation of kernel memory or address space in pages.  Both wired and
     pageable memory can be allocated by this facility, as well as kernel address space.  Note
     that this is a raw allocator.  For general purpose memory allocation, kmem(9) interface
     should be used.

     uvm_km_alloc() allocates size bytes of kernel memory in map map.  The first address of the
     allocated memory range will be aligned according to the align argument (specify 0 if no
     alignment is necessary).  The alignment must be a multiple of page size.  The flags is a
     bitwise inclusive OR of the allocation type and operation flags.

     The allocation type should be one of:

     UVM_KMF_WIRED     Wired memory.

     UVM_KMF_PAGEABLE  Demand-paged zero-filled memory.

     UVM_KMF_VAONLY    Virtual address only.  No physical pages are mapped in the allocated
		       region.	If necessary, it is the caller's responsibility to enter page
		       mappings.  It is also the caller's responsibility to clean up the mappings
		       before freeing the address range.

     The following operation flags are available:

     UVM_KMF_CANFAIL   Can fail even if UVM_KMF_NOWAIT is not specified and UVM_KMF_WAITVA is

     UVM_KMF_ZERO      Request zero-filled memory.  Only supported for UVM_KMF_WIRED.  Should not
		       be used with other types.

     UVM_KMF_TRYLOCK   Fail if cannot lock the map without sleeping.

     UVM_KMF_NOWAIT    Fail immediately if no memory is available.

     UVM_KMF_WAITVA    Sleep to wait for the virtual address resources if needed.

     If neither UVM_KMF_NOWAIT nor UVM_KMF_CANFAIL are specified and UVM_KMF_WAITVA is specified,
     uvm_km_alloc() will never fail, but rather sleep indefinitely until the allocation succeeds.

     Pageability of the pages allocated with UVM_KMF_PAGEABLE can be changed by
     uvm_map_pageable().  In that case, the entire range must be changed atomically.  Changing a
     part of the range is not supported.

     uvm_km_free() frees the memory range allocated by uvm_km_alloc().	addr must be an address
     returned by uvm_km_alloc().  map and size must be the same as the ones used for the corre-
     sponding uvm_km_alloc().  flags must be the allocation type used for the corresponding
     uvm_km_alloc().  Note that uvm_km_free() is the only way to free memory ranges allocated by
     uvm_km_alloc().  uvm_unmap() must not be used.

     uvm_km_suballoc() allocates submap from map, creating a new map if submap is NULL.  The
     addresses of the submap can be specified explicitly by setting the fixed argument to true,
     which causes the min argument to specify the beginning of the address in the submap.  If
     fixed is false, any address of size size will be allocated from map and the start and end
     addresses returned in min and max.  The flags are used to initialize the created submap.
     The following flags can be set:

     VM_MAP_PAGEABLE  Entries in the map may be paged out.

     VM_MAP_INTRSAFE  Map should be interrupt-safe.

     VM_MAP_TOPDOWN   A top-down mapping should be arranged.

     kmem(9), pmap(9), pool_cache(9), uvm(9), uvm_map(9), vmem(9)

     UVM and uvm_km first appeared in NetBSD 1.4.

BSD					   June 3, 2011 				      BSD
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 01:39 PM.