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

FreeBSD Manual Pages

  
 
  

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

NAME
     contigmalloc -- 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);

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

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

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 be-
     tween 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 contigmalloc_domainset() variant  allows  the	caller	to  additionally
     specify a numa(4) domain selection policy.  See domainset(9) for some exam-
     ple policies.

     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 imme-
	     diately fulfilled due to resource shortage.

     Other flags (if present) are ignored.

     The contigfree() function is deprecated.  Use free(9) instead.

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

RETURN VALUES
     The contigmalloc() function returns a kernel virtual address if  allocation
     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  crossing  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 ports 15.1		  July 26, 2024 		 CONTIGMALLOC(9)

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

home | help