Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CONTIGMALLOC(9)	       FreeBSD Kernel Developer's Manual       CONTIGMALLOC(9)

NAME
     contigmalloc, contigfree -- manage	contiguous kernel physical memory

SYNOPSIS
     #include <sys/types.h>
     #include <sys/malloc.h>

     void *
     contigmalloc(unsigned long	size, struct malloc_type *type,	int flags,
	 vm_paddr_t low, vm_paddr_t high, unsigned long	alignment,
	 vm_paddr_t boundary);

     void
     contigfree(void *addr, unsigned long size,	struct malloc_type *type);

DESCRIPTION
     The contigmalloc()	function allocates size	bytes of contiguous physical
     memory that is aligned to alignment bytes,	and which does not cross a
     boundary of boundary bytes.  If successful, the allocation	will reside
     between physical addresses	low and	high.  The returned pointer points to
     a wired kernel virtual address range of size bytes	allocated from the
     kernel virtual address (KVA) map.

     The flags parameter modifies contigmalloc()'s behaviour as	follows:

     M_ZERO  Causes the	allocated physical memory to be	zero filled.

     M_NOWAIT
	     Causes contigmalloc() to return NULL if the request cannot	be
	     immediately fulfilled due to resource shortage.

     Other flags (if present) are ignored.

     The contigfree() function deallocates memory allocated by a previous call
     to	contigmalloc().

IMPLEMENTATION NOTES
     The contigmalloc()	function does not sleep	waiting	for memory resources
     to	be freed up, but instead actively reclaims pages before	giving up.
     However, unless M_NOWAIT is specified, it may select a page for reclama-
     tion that must first be written to	backing	storage, causing it to sleep.

     The contigfree() function does not	accept NULL as an address input,
     unlike free(9).

RETURN VALUES
     The contigmalloc()	function returns a kernel virtual address if alloca-
     tion succeeds, or NULL otherwise.

EXAMPLES
     void *p;
     p = contigmalloc(8192, M_DEVBUF, M_ZERO, 0, (1L <<	22),
	 32 * 1024, 1024 * 1024);

     Ask for 8192 bytes	of zero-filled memory residing between physical
     address 0 and 4194303 inclusive, aligned to a 32K boundary	and not	cross-
     ing a 1M address boundary.

DIAGNOSTICS
     The contigmalloc()	function will panic if size is zero, or	if alignment
     or	boundary is not	a power	of two.

SEE ALSO
     malloc(9),	memguard(9)

FreeBSD	11.1		       January 29, 2015			  FreeBSD 11.1

NAME | SYNOPSIS | DESCRIPTION | IMPLEMENTATION NOTES | RETURN VALUES | EXAMPLES | DIAGNOSTICS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=contigmalloc&sektion=9&manpath=FreeBSD+11.1-RELEASE>

home | help