summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/malloc.9
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 15:32:58 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 15:32:58 -0400
commit5cb84ec742fd33f78c8022863fadaa8d0d93e176 (patch)
tree1a81ca3665e6153923e40db7b0d988f8573ab59c /static/netbsd/man9/malloc.9
parenta59214f344567c037d5776879bcfc5fcc1d4d5f6 (diff)
feat: Added NetBSD man pages
Diffstat (limited to 'static/netbsd/man9/malloc.9')
-rw-r--r--static/netbsd/man9/malloc.9254
1 files changed, 254 insertions, 0 deletions
diff --git a/static/netbsd/man9/malloc.9 b/static/netbsd/man9/malloc.9
new file mode 100644
index 00000000..f2905cd0
--- /dev/null
+++ b/static/netbsd/man9/malloc.9
@@ -0,0 +1,254 @@
+.\" $NetBSD: malloc.9,v 1.59 2021/01/04 18:27:46 pgoyette Exp $
+.\"
+.\" Copyright (c) 1996, 2003 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg, and by Jason R. Thorpe.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd January 4, 2021
+.Dt MALLOC 9
+.Os
+.Sh NAME
+.Nm malloc ,
+.Nm realloc ,
+.Nm free ,
+.Nm malloc_type_attach ,
+.Nm malloc_type_detach ,
+.Nm MALLOC_DEFINE ,
+.Nm MALLOC_DECLARE
+.Nd general-purpose kernel memory allocator
+.Sh SYNOPSIS
+.In sys/malloc.h
+.Ft void *
+.Fn malloc "unsigned long size" "struct malloc_type *type" "int flags"
+.Ft void *
+.Fn realloc "void *addr" "unsigned long newsize" "struct malloc_type *type" \
+ "int flags"
+.Ft void
+.Fn free "void *addr" "struct malloc_type *type"
+.Ft void
+.Fn malloc_type_attach "struct malloc_type *type"
+.Ft void
+.Fn malloc_type_detach "struct malloc_type *type"
+.In sys/mallocvar.h
+.Fn MALLOC_DEFINE "type" "shortdesc" "longdesc"
+.Fn MALLOC_JUSTDEFINE "type" "shortdesc" "longdesc"
+.Fn MALLOC_DECLARE "type"
+.Sh DESCRIPTION
+.Bf -symbolic
+These interfaces are being obsoleted and their new use is discouraged.
+For new code, use
+.Xr kmem 9
+for variable-sized or one-time allocations and
+.Xr pool_cache 9
+for frequent fixed-size allocations instead.
+.Ef
+.Pp
+The
+.Fn malloc
+function allocates uninitialized memory in kernel address space for an
+object whose size is specified by
+.Fa size .
+.Fn free
+releases memory at address
+.Fa addr
+that was previously allocated by
+.Fn malloc
+for re-use.
+Unlike
+.Xr free 3 ,
+.Fn free
+does not accept an
+.Fa addr
+argument that is
+.Dv NULL .
+.Pp
+The
+.Fn realloc
+function changes the size of the previously allocated memory referenced
+by
+.Fa addr
+to
+.Fa size
+and returns a pointer to the
+.Pq possibly moved
+object.
+The memory contents are unchanged up to the lesser of the new
+and old sizes.
+If the new size is larger, the newly allocated memory is
+uninitialized.
+If the requested memory cannot be allocated,
+.Dv NULL
+is returned and the memory referenced by
+.Fa addr
+is unchanged.
+If
+.Fa addr
+is
+.Dv NULL ,
+then
+.Fn realloc
+behaves exactly as
+.Fn malloc .
+If the new size is 0, then
+.Fn realloc
+behaves exactly as
+.Fn free .
+.Pp
+Unlike its standard C library counterpart
+.Pq Xr malloc 3 ,
+the kernel version takes two more arguments.
+.Pp
+The
+.Fa flags
+argument further qualifies
+.Fn malloc
+operational characteristics as follows:
+.Bl -tag -offset indent -width M_NOWAIT
+.It Dv M_NOWAIT
+Causes
+.Fn malloc
+to return
+.Dv NULL
+if the request cannot be immediately fulfilled due to resource shortage.
+If this flag is not set
+(see
+.Dv M_WAITOK ) ,
+.Fn malloc
+will never return
+.Dv NULL .
+.It Dv M_WAITOK
+By default,
+.Fn malloc
+may call
+.Xr cv_wait 9
+to wait for resources to be released by other processes, and this
+flag represents this behaviour.
+Note that
+.Dv M_WAITOK
+is conveniently defined to be 0, and hence may be or'ed into the
+.Fa flags
+argument to indicate that it's ok to wait for resources.
+.It Dv M_ZERO
+Causes the allocated memory to be set to all zeros.
+.El
+.Pp
+The
+.Fa type
+argument describes the subsystem and/or use within a subsystem for which
+the allocated memory was needed, and is commonly used to maintain statistics
+about kernel memory usage and, optionally, enforce limits on this usage for
+certain memory types.
+.Pp
+In addition to some built-in generic types defined by the kernel
+memory allocator, subsystems may define their own types.
+.Pp
+The
+.Fn MALLOC_DEFINE
+macro defines a malloc type named
+.Fa type
+with the short description
+.Fa shortdesc ,
+which must be a constant string; this description will be used for
+kernel memory statistics reporting.
+The
+.Fa longdesc
+argument, also a constant string, is intended as way to place a
+comment in the actual type definition, and is not currently stored
+in the type structure.
+If kernel memory statistics are being
+gathered, the system will choose a reasonable default limit for
+the malloc type.
+.Pp
+The
+.Fn MALLOC_DECLARE
+macro is intended for use in header files which are included by
+code which needs to use the malloc type, providing the necessary
+extern declaration.
+.Pp
+Code which includes
+<sys/malloc.h>
+does not need to include
+<sys/mallocvar.h>
+to get these macro definitions.
+The
+<sys/mallocvar.h>
+header file is intended for other header files which need to use the
+.Fn MALLOC_DECLARE
+macro.
+.Pp
+The
+.Fn malloc_type_attach
+function attaches the malloc type
+.Fa type
+to the kernel memory allocator.
+.Pp
+The
+.Fn malloc_type_detach
+function detaches the malloc type
+.Fa type
+previously attached with
+.Fn malloc_type_attach .
+.Pp
+The following generic malloc types are currently defined:
+.Pp
+.Bl -tag -offset indent -width XXXXXXXXXXXXXX -compact
+.It Dv M_DEVBUF
+Device driver memory.
+.It Dv M_DMAMAP
+.Xr bus_dma 9
+structures.
+.It Dv M_FREE
+Should be on free list.
+.It Dv M_TEMP
+Misc temporary data buffers.
+.El
+.Pp
+Other malloc types are defined by the corresponding subsystem; see the
+documentation for that subsystem for information about its available malloc
+types.
+.Sh NOTES
+The malloc type argument is actually unused on
+.Nx ,
+the argument is only supported for easier source compatibility
+with
+.Fx
+and
+.Ox .
+Likewise calls to
+.Fn MALLOC_DECLARE ,
+.Fn MALLOC_DEFINE ,
+.Fn malloc_type_attach ,
+and
+.Fn malloc_type_detach
+are defined out and have no effect on
+.Nx .
+.Sh RETURN VALUES
+.Fn malloc
+returns a kernel virtual address that is suitably aligned for storage of
+any type of object.
+.Sh SEE ALSO
+.Xr vmstat 1 ,
+.Xr memoryallocators 9