summaryrefslogtreecommitdiffstats
path: root/man3/malloc_get_state.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/malloc_get_state.3')
-rw-r--r--man3/malloc_get_state.3116
1 files changed, 116 insertions, 0 deletions
diff --git a/man3/malloc_get_state.3 b/man3/malloc_get_state.3
new file mode 100644
index 0000000..1577735
--- /dev/null
+++ b/man3/malloc_get_state.3
@@ -0,0 +1,116 @@
+'\" t
+.\" Copyright (c) 2012 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH malloc_get_state 3 2023-07-20 "Linux man-pages 6.05.01"
+.SH NAME
+malloc_get_state, malloc_set_state \-
+record and restore state of malloc implementation
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <malloc.h>
+.PP
+.B void *malloc_get_state(void);
+.BI "int malloc_set_state(void *" state );
+.fi
+.SH DESCRIPTION
+.IR Note :
+these function are removed in glibc 2.25.
+.PP
+The
+.BR malloc_get_state ()
+function records the current state of all
+.BR malloc (3)
+internal bookkeeping variables
+(but not the actual contents of the heap
+or the state of
+.BR malloc_hook (3)
+functions pointers).
+The state is recorded in a system-dependent opaque data structure
+dynamically allocated via
+.BR malloc (3),
+and a pointer to that data structure is returned as the function result.
+(It is the caller's responsibility to
+.BR free (3)
+this memory.)
+.PP
+The
+.BR malloc_set_state ()
+function restores the state of all
+.BR malloc (3)
+internal bookkeeping variables to the values recorded in
+the opaque data structure pointed to by
+.IR state .
+.SH RETURN VALUE
+On success,
+.BR malloc_get_state ()
+returns a pointer to a newly allocated opaque data structure.
+On error (for example, memory could not be allocated for the data structure),
+.BR malloc_get_state ()
+returns NULL.
+.PP
+On success,
+.BR malloc_set_state ()
+returns 0.
+If the implementation detects that
+.I state
+does not point to a correctly formed data structure,
+.\" if(ms->magic != MALLOC_STATE_MAGIC) return -1;
+.BR malloc_set_state ()
+returns \-1.
+If the implementation detects that
+the version of the data structure referred to by
+.I state
+is a more recent version than this implementation knows about,
+.\" /* Must fail if the major version is too high. */
+.\" if((ms->version & ~0xffl) > (MALLOC_STATE_VERSION & ~0xffl)) return -2;
+.BR malloc_set_state ()
+returns \-2.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR malloc_get_state (),
+.BR malloc_set_state ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.SH STANDARDS
+GNU.
+.SH NOTES
+These functions are useful when using this
+.BR malloc (3)
+implementation as part of a shared library,
+and the heap contents are saved/restored via some other method.
+This technique is used by GNU Emacs to implement its "dumping" function.
+.PP
+Hook function pointers are never saved or restored by these
+functions, with two exceptions:
+if malloc checking (see
+.BR mallopt (3))
+was in use when
+.BR malloc_get_state ()
+was called, then
+.BR malloc_set_state ()
+resets malloc checking hooks
+.\" i.e., calls __malloc_check_init()
+if possible;
+.\" i.e., malloc checking is not already in use
+.\" and the caller requested malloc checking
+if malloc checking was not in use in the recorded state,
+but the caller has requested malloc checking,
+then the hooks are reset to 0.
+.SH SEE ALSO
+.BR malloc (3),
+.BR mallopt (3)