summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/memguard.9 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man9/memguard.9 3.html')
-rw-r--r--static/freebsd/man9/memguard.9 3.html135
1 files changed, 0 insertions, 135 deletions
diff --git a/static/freebsd/man9/memguard.9 3.html b/static/freebsd/man9/memguard.9 3.html
deleted file mode 100644
index 8ba31e90..00000000
--- a/static/freebsd/man9/memguard.9 3.html
+++ /dev/null
@@ -1,135 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">MEMGUARD(9)</td>
- <td class="head-vol">Kernel Developer's Manual</td>
- <td class="head-rtitle">MEMGUARD(9)</td>
- </tr>
-</table>
-<div class="manual-text">
-<section class="Sh">
-<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
-<p class="Pp"><code class="Nm">MemGuard</code> &#x2014; <span class="Nd">memory
- allocator for debugging purposes</span></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
-<p class="Pp"><code class="Cd">options DEBUG_MEMGUARD</code></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp"><code class="Nm">MemGuard</code> is a simple and small replacement
- memory allocator designed to help detect tamper-after-free scenarios. These
- problems are more and more common and likely with multithreaded kernels
- where race conditions are more prevalent.</p>
-<p class="Pp" id="malloc"><code class="Nm">MemGuard</code> can take over
- <a class="permalink" href="#malloc"><code class="Fn">malloc</code></a>(),
- <a class="permalink" href="#realloc"><code class="Fn" id="realloc">realloc</code></a>()
- and
- <a class="permalink" href="#free"><code class="Fn" id="free">free</code></a>()
- for a single malloc type. Alternatively <code class="Nm">MemGuard</code> can
- take over
- <a class="permalink" href="#uma_zalloc"><code class="Fn" id="uma_zalloc">uma_zalloc</code></a>(),
- <a class="permalink" href="#uma_zalloc_arg"><code class="Fn" id="uma_zalloc_arg">uma_zalloc_arg</code></a>()
- and
- <a class="permalink" href="#uma_free"><code class="Fn" id="uma_free">uma_free</code></a>()
- for a single <a class="Xr">uma(9)</a> zone. Also
- <code class="Nm">MemGuard</code> can guard all allocations larger than
- <code class="Dv">PAGE_SIZE</code>, and can guard a random fraction of all
- allocations. There is also a knob to prevent allocations smaller than a
- specified size from being guarded, to limit memory waste.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
-<p class="Pp">To use <code class="Nm">MemGuard</code> for a memory type, either
- add an entry to <span class="Pa">/boot/loader.conf</span>:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>vm.memguard.desc=&lt;memory_type&gt;</pre>
-</div>
-<p class="Pp">Or set the <var class="Va">vm.memguard.desc</var>
- <a class="Xr">sysctl(8)</a> variable at run-time:</p>
-<div class="Bd Pp Bd-indent Li">
-<pre>sysctl vm.memguard.desc=&lt;memory_type&gt;</pre>
-</div>
-<p class="Pp">Where <var class="Ar">memory_type</var> can be either a short
- description of the memory type to monitor, either name of
- <a class="Xr">uma(9)</a> zone. Only allocations from that
- <var class="Ar">memory_type</var> made after
- <var class="Va">vm.memguard.desc</var> is set will potentially be guarded.
- If <var class="Va">vm.memguard.desc</var> is modified at run-time then only
- allocations of the new <var class="Ar">memory_type</var> will potentially be
- guarded once the <a class="Xr">sysctl(8)</a> is set. Existing guarded
- allocations will still be properly released by either
- <a class="Xr">free(9)</a> or <a class="Xr">uma_zfree(9)</a>, depending on
- what kind of allocation was taken over.</p>
-<p class="Pp">To determine short description of a <a class="Xr">malloc(9)</a>
- type one can either take it from the first column of
- <a class="Xr">vmstat(8)</a> <code class="Fl">-m</code> output, or to find it
- in the kernel source. It is the second argument to
- <a class="Xr">MALLOC_DEFINE(9)</a> macro. To determine name of
- <a class="Xr">uma(9)</a> zone one can either take it from the first column
- of <a class="Xr">vmstat(8)</a> <code class="Fl">-z</code> output, or to find
- it in the kernel source. It is the first argument to the
- <a class="Xr">uma_zcreate(9)</a> function.</p>
-<p class="Pp">The <var class="Va">vm.memguard.divisor</var> boot-time tunable is
- used to scale how much of the system's physical memory
- <code class="Nm">MemGuard</code> is allowed to consume. The default is 10,
- so up to <var class="Va">vm_cnt.v_page_count</var>/10 pages can be used.
- <code class="Nm">MemGuard</code> will reserve
- <var class="Va">vm_kmem_max</var> /
- <var class="Va">vm.memguard.divisor</var> bytes of virtual address space,
- limited by twice the physical memory size. The physical limit is reported as
- <var class="Va">vm.memguard.phys_limit</var> and the virtual space reserved
- for <code class="Nm">MemGuard</code> is reported as
- <var class="Va">vm.memguard.mapsize</var>.</p>
-<p class="Pp"><code class="Nm">MemGuard</code> will not do page promotions for
- any allocation smaller than <var class="Va">vm.memguard.minsize</var> bytes.
- The default is 0, meaning all allocations can potentially be guarded.
- <code class="Nm">MemGuard</code> can guard sufficiently large allocations
- randomly, with average frequency of every one in 100000 /
- <var class="Va">vm.memguard.frequency</var> allocations. The default is 0,
- meaning no allocations are randomly guarded.</p>
-<p class="Pp"><code class="Nm">MemGuard</code> can optionally add unmapped guard
- pages around each allocation to detect overflow and underflow, if
- <var class="Va">vm.memguard.options</var> has the 1 bit set. This option is
- enabled by default. <code class="Nm">MemGuard</code> will optionally guard
- all allocations of <code class="Dv">PAGE_SIZE</code> or larger if
- <var class="Va">vm.memguard.options</var> has the 2 bit set. This option is
- off by default. By default <code class="Nm">MemGuard</code> does not guard
- <a class="Xr">uma(9)</a> zones that have been initialized with the
- <code class="Dv">UMA_ZONE_NOFREE</code> flag set, since it can produce false
- positives on them. However, this safety measure can be turned off by setting
- bit 3 of the <var class="Va">vm.memguard.options</var> tunable.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
- ALSO</a></h1>
-<p class="Pp"><a class="Xr">sysctl(8)</a>, <a class="Xr">vmstat(8)</a>,
- <a class="Xr">contigmalloc(9)</a>, <a class="Xr">malloc(9)</a>,
- <a class="Xr">redzone(9)</a>, <a class="Xr">uma(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp"><code class="Nm">MemGuard</code> first appeared in
- <span class="Ux">FreeBSD 6.0</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp"><code class="Nm">MemGuard</code> was originally written by
- <span class="An">Bosko Milekic</span>
- &lt;<a class="Mt" href="mailto:bmilekic@FreeBSD.org">bmilekic@FreeBSD.org</a>&gt;.
- This manual page was originally written by <span class="An">Christian
- Brueffer</span>
- &lt;<a class="Mt" href="mailto:brueffer@FreeBSD.org">brueffer@FreeBSD.org</a>&gt;.
- Additions have been made by <span class="An">Matthew Fleming</span>
- &lt;<a class="Mt" href="mailto:mdf@FreeBSD.org">mdf@FreeBSD.org</a>&gt; and
- <span class="An">Gleb Smirnoff</span>
- &lt;<a class="Mt" href="mailto:glebius@FreeBSD.org">glebius@FreeBSD.org</a>&gt;
- to both the implementation and the documentation.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">March 22, 2017</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>