summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/sysctl.9 3.html
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:43 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:43 -0400
commitac5e55f5f2af5b92794c2aded46c6bae85b5f5ed (patch)
tree9367490586c84cba28652e443e3166d66c33b0d9 /static/freebsd/man9/sysctl.9 3.html
parent253e67c8b3a72b3a4757fdbc5845297628db0a4a (diff)
docs: Added All FreeBSD Manuals
Diffstat (limited to 'static/freebsd/man9/sysctl.9 3.html')
-rw-r--r--static/freebsd/man9/sysctl.9 3.html1148
1 files changed, 1148 insertions, 0 deletions
diff --git a/static/freebsd/man9/sysctl.9 3.html b/static/freebsd/man9/sysctl.9 3.html
new file mode 100644
index 00000000..93380af8
--- /dev/null
+++ b/static/freebsd/man9/sysctl.9 3.html
@@ -0,0 +1,1148 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">SYSCTL(9)</td>
+ <td class="head-vol">Kernel Developer's Manual</td>
+ <td class="head-rtitle">SYSCTL(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">SYSCTL_DECL</code>,
+ <code class="Nm">SYSCTL_ADD_BOOL</code>,
+ <code class="Nm">SYSCTL_ADD_COUNTER_U64</code>,
+ <code class="Nm">SYSCTL_ADD_COUNTER_U64_ARRAY</code>,
+ <code class="Nm">SYSCTL_ADD_INT</code>,
+ <code class="Nm">SYSCTL_ADD_LONG</code>,
+ <code class="Nm">SYSCTL_ADD_NODE</code>,
+ <code class="Nm">SYSCTL_ADD_NODE_WITH_LABEL</code>,
+ <code class="Nm">SYSCTL_ADD_OPAQUE</code>,
+ <code class="Nm">SYSCTL_ADD_PROC</code>,
+ <code class="Nm">SYSCTL_ADD_QUAD</code>,
+ <code class="Nm">SYSCTL_ADD_ROOT_NODE</code>,
+ <code class="Nm">SYSCTL_ADD_S8</code>,
+ <code class="Nm">SYSCTL_ADD_S16</code>,
+ <code class="Nm">SYSCTL_ADD_S32</code>,
+ <code class="Nm">SYSCTL_ADD_S64</code>,
+ <code class="Nm">SYSCTL_ADD_SBINTIME_MSEC</code>,
+ <code class="Nm">SYSCTL_ADD_SBINTIME_USEC</code>,
+ <code class="Nm">SYSCTL_ADD_STRING</code>,
+ <code class="Nm">SYSCTL_ADD_CONST_STRING</code>,
+ <code class="Nm">SYSCTL_ADD_STRUCT</code>,
+ <code class="Nm">SYSCTL_ADD_TIMEVAL_SEC</code>,
+ <code class="Nm">SYSCTL_ADD_U8</code>,
+ <code class="Nm">SYSCTL_ADD_U16</code>,
+ <code class="Nm">SYSCTL_ADD_U32</code>,
+ <code class="Nm">SYSCTL_ADD_U64</code>,
+ <code class="Nm">SYSCTL_ADD_UAUTO</code>,
+ <code class="Nm">SYSCTL_ADD_UINT</code>,
+ <code class="Nm">SYSCTL_ADD_ULONG</code>,
+ <code class="Nm">SYSCTL_ADD_UMA_CUR</code>,
+ <code class="Nm">SYSCTL_ADD_UMA_MAX</code>,
+ <code class="Nm">SYSCTL_ADD_UQUAD</code>,
+ <code class="Nm">SYSCTL_CHILDREN</code>,
+ <code class="Nm">SYSCTL_STATIC_CHILDREN</code>,
+ <code class="Nm">SYSCTL_NODE_CHILDREN</code>,
+ <code class="Nm">SYSCTL_PARENT</code>, <code class="Nm">SYSCTL_BOOL</code>,
+ <code class="Nm">SYSCTL_COUNTER_U64</code>,
+ <code class="Nm">SYSCTL_COUNTER_U64_ARRAY</code>,
+ <code class="Nm">SYSCTL_INT</code>,
+ <code class="Nm">SYSCTL_INT_WITH_LABEL</code>,
+ <code class="Nm">SYSCTL_LONG</code>,
+ <code class="Nm">sysctl_msec_to_ticks</code>,
+ <code class="Nm">SYSCTL_NODE</code>,
+ <code class="Nm">SYSCTL_NODE_WITH_LABEL</code>,
+ <code class="Nm">SYSCTL_OPAQUE</code>, <code class="Nm">SYSCTL_PROC</code>,
+ <code class="Nm">SYSCTL_QUAD</code>,
+ <code class="Nm">SYSCTL_ROOT_NODE</code>, <code class="Nm">SYSCTL_S8</code>,
+ <code class="Nm">SYSCTL_S16</code>, <code class="Nm">SYSCTL_S32</code>,
+ <code class="Nm">SYSCTL_S64</code>,
+ <code class="Nm">SYSCTL_SBINTIME_MSEC</code>,
+ <code class="Nm">SYSCTL_SBINTIME_USEC</code>,
+ <code class="Nm">SYSCTL_STRING</code>,
+ <code class="Nm">SYSCTL_CONST_STRING</code>,
+ <code class="Nm">SYSCTL_STRUCT</code>,
+ <code class="Nm">SYSCTL_TIMEVAL_SEC</code>,
+ <code class="Nm">SYSCTL_U8</code>, <code class="Nm">SYSCTL_U16</code>,
+ <code class="Nm">SYSCTL_U32</code>, <code class="Nm">SYSCTL_U64</code>,
+ <code class="Nm">SYSCTL_UINT</code>, <code class="Nm">SYSCTL_ULONG</code>,
+ <code class="Nm">SYSCTL_UMA_CUR</code>,
+ <code class="Nm">SYSCTL_UMA_MAX</code>, <code class="Nm">SYSCTL_UQUAD</code>
+ &#x2014; <span class="Nd">Dynamic and static sysctl MIB creation
+ functions</span></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<p class="Pp"><code class="In">#include
+ &lt;<a class="In">sys/param.h</a>&gt;</code>
+ <br/>
+ <code class="In">#include &lt;<a class="In">sys/sysctl.h</a>&gt;</code></p>
+<p class="Pp"><code class="Fn">SYSCTL_DECL</code>(<var class="Fa" style="white-space: nowrap;">name</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_BOOL</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">bool *ptr</var>,
+ <var class="Fa">uint8_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_COUNTER_U64</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>,
+ <var class="Fa">counter_u64_t *ptr</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_COUNTER_U64_ARRAY</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>,
+ <var class="Fa">counter_u64_t *ptr</var>, <var class="Fa">intmax_t
+ len</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_INT</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">int *ptr</var>,
+ <var class="Fa">int val</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_LONG</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">long *ptr</var>,
+ <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_NODE</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">int
+ (*handler)(SYSCTL_HANDLER_ARGS)</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_NODE_WITH_LABEL</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">int
+ (*handler)(SYSCTL_HANDLER_ARGS)</var>, <var class="Fa">const char
+ *descr</var>, <var class="Fa">const char *label</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_OPAQUE</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">void
+ *ptr</var>, <var class="Fa">intptr_t len</var>, <var class="Fa">const char
+ *format</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_PROC</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">void *arg1</var>,
+ <var class="Fa">intptr_t arg2</var>, <var class="Fa">int (*handler)
+ (SYSCTL_HANDLER_ARGS)</var>, <var class="Fa">const char *format</var>,
+ <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_QUAD</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">int64_t *ptr</var>,
+ <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_ROOT_NODE</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">int number</var>,
+ <var class="Fa">const char *name</var>, <var class="Fa">int ctlflags</var>,
+ <var class="Fa">int (*handler)(SYSCTL_HANDLER_ARGS)</var>,
+ <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_S8</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">int8_t *ptr</var>,
+ <var class="Fa">int8_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_S16</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">int16_t *ptr</var>,
+ <var class="Fa">int16_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_S32</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">int32_t *ptr</var>,
+ <var class="Fa">int32_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_S64</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">int64_t *ptr</var>,
+ <var class="Fa">int64_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_SBINTIME_MSEC</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">sbintime_t
+ *ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_SBINTIME_USEC</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">sbintime_t
+ *ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_STRING</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">char
+ *ptr</var>, <var class="Fa">intptr_t len</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_CONST_STRING</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">const char
+ *ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_STRUCT</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">void
+ *ptr</var>, <var class="Fa">struct_type</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_TIMEVAL_SEC</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">struct
+ timeval *ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_U8</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">uint8_t *ptr</var>,
+ <var class="Fa">uint8_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_U16</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">uint16_t *ptr</var>,
+ <var class="Fa">uint16_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_U32</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">uint32_t *ptr</var>,
+ <var class="Fa">uint32_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_U64</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">uint64_t *ptr</var>,
+ <var class="Fa">uint64_t val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_UINT</code>(<var class="Fa">struct sysctl_ctx_list
+ *ctx</var>, <var class="Fa">struct sysctl_oid_list *parent</var>,
+ <var class="Fa">int number</var>, <var class="Fa">const char *name</var>,
+ <var class="Fa">int ctlflags</var>, <var class="Fa">unsigned int *ptr</var>,
+ <var class="Fa">unsigned int val</var>, <var class="Fa">const char
+ *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_ULONG</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">unsigned
+ long *ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_UQUAD</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">uint64_t
+ *ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_UMA_CUR</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">uma_zone_t
+ ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_UMA_MAX</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">uma_zone_t
+ ptr</var>, <var class="Fa">const char *descr</var>); <var class="Fa">const
+ char *descr</var>
+ <br/>
+ <var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_ADD_UAUTO</code>(<var class="Fa">struct
+ sysctl_ctx_list *ctx</var>, <var class="Fa">struct sysctl_oid_list
+ *parent</var>, <var class="Fa">int number</var>, <var class="Fa">const char
+ *name</var>, <var class="Fa">int ctlflags</var>, <var class="Fa">void
+ *ptr</var>, <var class="Fa">const char *descr</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid_list *</var>
+ <br/>
+ <code class="Fn">SYSCTL_CHILDREN</code>(<var class="Fa">struct sysctl_oid
+ *oidp</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid_list *</var>
+ <br/>
+ <code class="Fn">SYSCTL_STATIC_CHILDREN</code>(<var class="Fa">struct
+ sysctl_oid_list OID_NAME</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid_list *</var>
+ <br/>
+ <code class="Fn">SYSCTL_NODE_CHILDREN</code>(<var class="Fa">parent</var>,
+ <var class="Fa">name</var>);</p>
+<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
+ <br/>
+ <code class="Fn">SYSCTL_PARENT</code>(<var class="Fa">struct sysctl_oid
+ *oid</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_BOOL</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_COUNTER_U64</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_COUNTER_U64_ARRAY</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">len</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_INT</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_INT_WITH_LABEL</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>,
+ <var class="Fa" style="white-space: nowrap;">label</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_LONG</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><var class="Ft">int</var>
+ <br/>
+ <code class="Fn">sysctl_msec_to_ticks</code>(<var class="Fa" style="white-space: nowrap;">SYSCTL_HANDLER_ARGS</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_NODE</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">handler</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_NODE_WITH_LABEL</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">handler</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>,
+ <var class="Fa" style="white-space: nowrap;">label</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_OPAQUE</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">len</var>,
+ <var class="Fa" style="white-space: nowrap;">format</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_PROC</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">arg1</var>,
+ <var class="Fa" style="white-space: nowrap;">arg2</var>,
+ <var class="Fa" style="white-space: nowrap;">handler</var>,
+ <var class="Fa" style="white-space: nowrap;">format</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_QUAD</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_ROOT_NODE</code>(<var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">handler</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_S8</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_S16</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_S32</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_S64</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_SBINTIME_MSEC</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_SBINTIME_USEC</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_STRING</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">arg</var>,
+ <var class="Fa" style="white-space: nowrap;">len</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_CONST_STRING</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">arg</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_STRUCT</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">struct_type</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_TIMEVAL_SEC</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_U8</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_U16</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_U32</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_U64</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_UINT</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_ULONG</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_UQUAD</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">val</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_UMA_MAX</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+<p class="Pp"><code class="Fn">SYSCTL_UMA_CUR</code>(<var class="Fa" style="white-space: nowrap;">parent</var>,
+ <var class="Fa" style="white-space: nowrap;">number</var>,
+ <var class="Fa" style="white-space: nowrap;">name</var>,
+ <var class="Fa" style="white-space: nowrap;">ctlflags</var>,
+ <var class="Fa" style="white-space: nowrap;">ptr</var>,
+ <var class="Fa" style="white-space: nowrap;">descr</var>);</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The <code class="Nm">SYSCTL</code> kernel interface allows dynamic
+ or static creation of <a class="Xr">sysctl(8)</a> MIB entries. All static
+ sysctls are automatically destroyed when the module which they are part of
+ is unloaded. Most top level categories are created statically and are
+ available to all kernel code and its modules.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION_OF_ARGUMENTS"><a class="permalink" href="#DESCRIPTION_OF_ARGUMENTS">DESCRIPTION
+ OF ARGUMENTS</a></h1>
+<dl class="Bl-tag">
+ <dt><var class="Fa">ctx</var></dt>
+ <dd>Pointer to sysctl context or NULL, if no context. See
+ <a class="Xr">sysctl_ctx_init(9)</a> for how to create a new sysctl
+ context. Programmers are strongly advised to use contexts to organize the
+ dynamic OIDs which they create because when a context is destroyed all
+ belonging sysctls are destroyed as well. This makes the sysctl cleanup
+ code much simpler. Else deletion of all created OIDs is required at module
+ unload.</dd>
+ <dt id="SYSCTL_STATIC_CHILDREN"><var class="Fa">parent</var></dt>
+ <dd>A pointer to a <code class="Li">struct sysctl_oid_list</code>, which is
+ the head of the parent's list of children. This pointer is retrieved using
+ the
+ <a class="permalink" href="#SYSCTL_STATIC_CHILDREN"><code class="Fn">SYSCTL_STATIC_CHILDREN</code></a>()
+ macro for static sysctls and the
+ <a class="permalink" href="#SYSCTL_CHILDREN"><code class="Fn" id="SYSCTL_CHILDREN">SYSCTL_CHILDREN</code></a>()
+ macro for dynamic sysctls. The
+ <a class="permalink" href="#SYSCTL_PARENT"><code class="Fn" id="SYSCTL_PARENT">SYSCTL_PARENT</code></a>()
+ macro can be used to get the parent of an OID. The macro returns NULL if
+ there is no parent.</dd>
+ <dt><var class="Fa">number</var></dt>
+ <dd>The OID number that will be assigned to this OID. In almost all cases this
+ should be set to <code class="Dv">OID_AUTO</code>, which will result in
+ the assignment of the next available OID number.</dd>
+ <dt><var class="Fa">name</var></dt>
+ <dd>The name of the OID. The newly created OID will contain a copy of the
+ name.</dd>
+ <dt><var class="Fa">ctlflags</var></dt>
+ <dd>A bit mask of sysctl control flags. See the section below describing all
+ the control flags.</dd>
+ <dt><var class="Fa">arg1</var></dt>
+ <dd>First callback argument for procedure sysctls.</dd>
+ <dt><var class="Fa">arg2</var></dt>
+ <dd>Second callback argument for procedure sysctls.</dd>
+ <dt><var class="Fa">len</var></dt>
+ <dd>The length of the data pointed to by the <var class="Fa">ptr</var>
+ argument. For string type OIDs a length of zero means that
+ <a class="Xr">strlen(3)</a> will be used to get the length of the string
+ at each access to the OID. For array type OIDs the length must be greater
+ than zero.</dd>
+ <dt><var class="Fa">ptr</var></dt>
+ <dd>Pointer to sysctl variable or string data. For sysctl values the pointer
+ can be SYSCTL_NULL_XXX_PTR which means the OID is read-only and the
+ returned value should be taken from the <var class="Fa">val</var>
+ argument.</dd>
+ <dt><var class="Fa">val</var></dt>
+ <dd>If the <var class="Fa">ptr</var> argument is SYSCTL_NULL_XXX_PTR, gives
+ the constant value returned by this OID. Else this argument is not
+ used.</dd>
+ <dt><var class="Fa">struct_type</var></dt>
+ <dd>Name of structure type.</dd>
+ <dt><var class="Fa">handler</var></dt>
+ <dd>A pointer to the function that is responsible for handling read and write
+ requests to this OID. There are several standard handlers that support
+ operations on nodes, integers, strings and opaque objects. It is possible
+ to define custom handlers using the <code class="Fn">SYSCTL_PROC</code>()
+ macro or the <code class="Fn">SYSCTL_ADD_PROC</code>() function.</dd>
+ <dt><var class="Fa">format</var></dt>
+ <dd>A pointer to a string which specifies the format of the OID in a symbolic
+ way. This format is used as a hint by <a class="Xr">sysctl(8)</a> to apply
+ proper data formatting for display purposes.
+ <p class="Pp">Current formats:</p>
+ <div class="Bd-indent">
+ <dl class="Bl-tag Bl-compact">
+ <dt id="N"><a class="permalink" href="#N"><code class="Cm">N</code></a></dt>
+ <dd>node</dd>
+ <dt id="A"><a class="permalink" href="#A"><code class="Cm">A</code></a></dt>
+ <dd><a class="permalink" href="#char"><code class="Li" id="char">char
+ *</code></a></dd>
+ <dt id="C"><a class="permalink" href="#C"><code class="Cm">C</code></a></dt>
+ <dd><a class="permalink" href="#int8_t"><code class="Li" id="int8_t">int8_t</code></a></dd>
+ <dt id="CU"><a class="permalink" href="#CU"><code class="Cm">CU</code></a></dt>
+ <dd><a class="permalink" href="#uint8_t"><code class="Li" id="uint8_t">uint8_t</code></a></dd>
+ <dt id="I"><a class="permalink" href="#I"><code class="Cm">I</code></a></dt>
+ <dd><a class="permalink" href="#int"><code class="Li" id="int">int</code></a></dd>
+ <dt id="IK"><a class="permalink" href="#IK"><code class="Cm">IK</code></a>[<var class="Ar">n</var>]</dt>
+ <dd>temperature in Kelvin, multiplied by an optional single digit power of
+ ten scaling factor: 1 (default) gives deciKelvin, 0 gives Kelvin, 3
+ gives milliKelvin</dd>
+ <dt id="IU"><a class="permalink" href="#IU"><code class="Cm">IU</code></a></dt>
+ <dd><a class="permalink" href="#unsigned"><code class="Li" id="unsigned">unsigned
+ int</code></a></dd>
+ <dt id="L"><a class="permalink" href="#L"><code class="Cm">L</code></a></dt>
+ <dd><a class="permalink" href="#long"><code class="Li" id="long">long</code></a></dd>
+ <dt id="LU"><a class="permalink" href="#LU"><code class="Cm">LU</code></a></dt>
+ <dd><a class="permalink" href="#unsigned~2"><code class="Li" id="unsigned~2">unsigned
+ long</code></a></dd>
+ <dt id="Q"><a class="permalink" href="#Q"><code class="Cm">Q</code></a></dt>
+ <dd><a class="permalink" href="#quad_t"><code class="Li" id="quad_t">quad_t</code></a></dd>
+ <dt id="QU"><a class="permalink" href="#QU"><code class="Cm">QU</code></a></dt>
+ <dd><a class="permalink" href="#u_quad_t"><code class="Li" id="u_quad_t">u_quad_t</code></a></dd>
+ <dt id="S"><a class="permalink" href="#S"><code class="Cm">S</code></a></dt>
+ <dd><a class="permalink" href="#int16_t"><code class="Li" id="int16_t">int16_t</code></a></dd>
+ <dt id="SU"><a class="permalink" href="#SU"><code class="Cm">SU</code></a></dt>
+ <dd><a class="permalink" href="#uint16_t"><code class="Li" id="uint16_t">uint16_t</code></a></dd>
+ <dt id="S,TYPE"><a class="permalink" href="#S,TYPE"><code class="Cm">S,TYPE</code></a></dt>
+ <dd><a class="permalink" href="#struct"><code class="Li" id="struct">struct
+ TYPE</code></a> structures</dd>
+ </dl>
+ </div>
+ </dd>
+ <dt><var class="Fa">descr</var></dt>
+ <dd>A pointer to a textual description of the OID.</dd>
+ <dt><var class="Fa">label</var></dt>
+ <dd>A pointer to an aggregation label for this component of the OID. To make
+ it easier to export sysctl data to monitoring systems that support
+ aggregations through labels (e.g., Prometheus), this argument can be used
+ to attach a label name to an OID. The label acts as a hint that this
+ component's name should not be part of the metric's name, but attached to
+ the metric as a label instead.
+ <p class="Pp">Labels should only be applied to siblings that are
+ structurally similar and encode the same type of value, as aggregation
+ is of no use otherwise.</p>
+ </dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="NODE_VALUE_TYPES"><a class="permalink" href="#NODE_VALUE_TYPES">NODE
+ VALUE TYPES</a></h1>
+<p class="Pp">Most of the macros and functions used to create sysctl nodes
+ export a read-only constant or in-kernel variable whose type matches the
+ type of the node's value. For example,
+ <a class="permalink" href="#SYSCTL_INT"><code class="Fn" id="SYSCTL_INT">SYSCTL_INT</code></a>()
+ reports the raw value of an associated variable of type
+ <var class="Vt">int</var>. However, nodes may also export a value that is a
+ translation of an internal representation.</p>
+<p class="Pp" id="sysctl_msec_to_ticks">The
+ <a class="permalink" href="#sysctl_msec_to_ticks"><code class="Fn">sysctl_msec_to_ticks</code></a>()
+ handler can be used with <code class="Fn">SYSCTL_PROC</code>() or
+ <a class="permalink" href="#SYSCTL_ADD_PROC"><code class="Fn" id="SYSCTL_ADD_PROC">SYSCTL_ADD_PROC</code></a>()
+ to export a millisecond time interval. When using this handler, the
+ <var class="Fa">arg2</var> parameter points to an in-kernel variable of type
+ <var class="Vt">int</var> which stores a tick count suitable for use with
+ functions like <a class="Xr">tsleep(9)</a>. The
+ <code class="Fn">sysctl_msec_to_ticks</code>() function converts this value
+ to milliseconds when reporting the node's value. Similarly,
+ <code class="Fn">sysctl_msec_to_ticks</code>() accepts new values in
+ milliseconds and stores an equivalent value in ticks to
+ <var class="Fa">*arg2</var>. Note that new code should use kernel variables
+ of type <var class="Vt">sbintime_t</var> instead of tick counts.</p>
+<p class="Pp" id="SYSCTL_ADD_SBINTIME_MSEC">The
+ <a class="permalink" href="#SYSCTL_ADD_SBINTIME_MSEC"><code class="Fn">SYSCTL_ADD_SBINTIME_MSEC</code></a>()
+ and
+ <a class="permalink" href="#SYSCTL_ADD_SBINTIME_USEC"><code class="Fn" id="SYSCTL_ADD_SBINTIME_USEC">SYSCTL_ADD_SBINTIME_USEC</code></a>()
+ functions and
+ <a class="permalink" href="#SYSCTL_SBINTIME_MSEC"><code class="Fn" id="SYSCTL_SBINTIME_MSEC">SYSCTL_SBINTIME_MSEC</code></a>()
+ and
+ <a class="permalink" href="#SYSCTL_SBINTIME_USEC"><code class="Fn" id="SYSCTL_SBINTIME_USEC">SYSCTL_SBINTIME_USEC</code></a>()
+ macros all create nodes which export an in-kernel variable of type
+ <var class="Vt">sbintime_t</var>. These nodes do not export the raw value of
+ the associated variable. Instead, they export a 64-bit integer containing a
+ count of either milliseconds (the MSEC variants) or microseconds (the USEC
+ variants).</p>
+<p class="Pp" id="SYSCTL_ADD_TIMEVAL_SEC">The
+ <a class="permalink" href="#SYSCTL_ADD_TIMEVAL_SEC"><code class="Fn">SYSCTL_ADD_TIMEVAL_SEC</code></a>()
+ function and
+ <a class="permalink" href="#SYSCTL_TIMEVAL_SEC"><code class="Fn" id="SYSCTL_TIMEVAL_SEC">SYSCTL_TIMEVAL_SEC</code></a>()
+ macro create nodes which export an in-kernel variable of type
+ <var class="Vt">struct timeval</var>. These nodes do not export full value
+ of the associated structure. Instead, they export a count in seconds as a
+ simple integer which is stored in the <var class="Fa">tv_sec</var> field of
+ the associated variable. This function and macro are intended to be used
+ with variables which store a non-negative interval rather than an absolute
+ time. As a result, they reject attempts to store negative values.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CREATING_ROOT_NODES"><a class="permalink" href="#CREATING_ROOT_NODES">CREATING
+ ROOT NODES</a></h1>
+<p class="Pp">Sysctl MIBs or OIDs are created in a hierarchical tree. The nodes
+ at the bottom of the tree are called root nodes, and have no parent OID. To
+ create bottom tree nodes the
+ <a class="permalink" href="#SYSCTL_ROOT_NODE"><code class="Fn" id="SYSCTL_ROOT_NODE">SYSCTL_ROOT_NODE</code></a>()
+ macro or the
+ <a class="permalink" href="#SYSCTL_ADD_ROOT_NODE"><code class="Fn" id="SYSCTL_ADD_ROOT_NODE">SYSCTL_ADD_ROOT_NODE</code></a>()
+ function needs to be used. By default all static sysctl node OIDs are global
+ and need a
+ <a class="permalink" href="#SYSCTL_DECL"><code class="Fn" id="SYSCTL_DECL">SYSCTL_DECL</code></a>()
+ statement prior to their
+ <a class="permalink" href="#SYSCTL_NODE"><code class="Fn" id="SYSCTL_NODE">SYSCTL_NODE</code></a>()
+ definition statement, typically in a so-called header file.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CREATING_SYSCTL_STRINGS"><a class="permalink" href="#CREATING_SYSCTL_STRINGS">CREATING
+ SYSCTL STRINGS</a></h1>
+<p class="Pp">Zero terminated character strings sysctls are created either using
+ the
+ <a class="permalink" href="#SYSCTL_STRING"><code class="Fn" id="SYSCTL_STRING">SYSCTL_STRING</code></a>()
+ macro or the
+ <a class="permalink" href="#SYSCTL_ADD_STRING"><code class="Fn" id="SYSCTL_ADD_STRING">SYSCTL_ADD_STRING</code></a>()
+ function. If the <var class="Fa">len</var> argument is zero, the string
+ length is computed at every access to the OID using
+ <a class="Xr">strlen(3)</a>. Use the
+ <a class="permalink" href="#SYSCTL_CONST_STRING"><code class="Fn" id="SYSCTL_CONST_STRING">SYSCTL_CONST_STRING</code></a>()
+ macro or the
+ <a class="permalink" href="#SYSCTL_ADD_CONST_STRING"><code class="Fn" id="SYSCTL_ADD_CONST_STRING">SYSCTL_ADD_CONST_STRING</code></a>()
+ function to add a sysctl for a constant string.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CREATING_OPAQUE_SYSCTLS"><a class="permalink" href="#CREATING_OPAQUE_SYSCTLS">CREATING
+ OPAQUE SYSCTLS</a></h1>
+<p class="Pp">The
+ <a class="permalink" href="#SYSCTL_OPAQUE"><code class="Fn" id="SYSCTL_OPAQUE">SYSCTL_OPAQUE</code></a>()
+ or
+ <a class="permalink" href="#SYSCTL_STRUCT"><code class="Fn" id="SYSCTL_STRUCT">SYSCTL_STRUCT</code></a>()
+ macros or the
+ <a class="permalink" href="#SYSCTL_ADD_OPAQUE"><code class="Fn" id="SYSCTL_ADD_OPAQUE">SYSCTL_ADD_OPAQUE</code></a>()
+ or
+ <a class="permalink" href="#SYSCTL_ADD_STRUCT"><code class="Fn" id="SYSCTL_ADD_STRUCT">SYSCTL_ADD_STRUCT</code></a>()
+ functions create an OID that handle any chunk of data of the size specified
+ by the <var class="Fa">len</var> argument and data pointed to by the
+ <var class="Fa">ptr</var> argument. When using the structure version the
+ type is encoded as part of the created sysctl.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CREATING_CUSTOM_SYSCTLS"><a class="permalink" href="#CREATING_CUSTOM_SYSCTLS">CREATING
+ CUSTOM SYSCTLS</a></h1>
+<p class="Pp">The <code class="Fn">SYSCTL_PROC</code>() macro and the
+ <code class="Fn">SYSCTL_ADD_PROC</code>() function create OIDs with the
+ specified <span class="Pa">handler</span> function. The handler is
+ responsible for handling all read and write requests to the OID. This OID
+ type is especially useful if the kernel data is not easily accessible, or
+ needs to be processed before exporting.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CREATING_A_STATIC_SYSCTL"><a class="permalink" href="#CREATING_A_STATIC_SYSCTL">CREATING
+ A STATIC SYSCTL</a></h1>
+<p class="Pp">Static sysctls are declared using one of the
+ <a class="permalink" href="#SYSCTL_BOOL"><code class="Fn" id="SYSCTL_BOOL">SYSCTL_BOOL</code></a>(),
+ <a class="permalink" href="#SYSCTL_COUNTER_U64"><code class="Fn" id="SYSCTL_COUNTER_U64">SYSCTL_COUNTER_U64</code></a>(),
+ <a class="permalink" href="#SYSCTL_COUNTER_U64_ARRAY"><code class="Fn" id="SYSCTL_COUNTER_U64_ARRAY">SYSCTL_COUNTER_U64_ARRAY</code></a>(),
+ <code class="Fn">SYSCTL_INT</code>(),
+ <a class="permalink" href="#SYSCTL_INT_WITH_LABEL"><code class="Fn" id="SYSCTL_INT_WITH_LABEL">SYSCTL_INT_WITH_LABEL</code></a>(),
+ <a class="permalink" href="#SYSCTL_LONG"><code class="Fn" id="SYSCTL_LONG">SYSCTL_LONG</code></a>(),
+ <code class="Fn">SYSCTL_NODE</code>(),
+ <a class="permalink" href="#SYSCTL_NODE_WITH_LABEL"><code class="Fn" id="SYSCTL_NODE_WITH_LABEL">SYSCTL_NODE_WITH_LABEL</code></a>(),
+ <code class="Fn">SYSCTL_OPAQUE</code>(),
+ <code class="Fn">SYSCTL_PROC</code>(),
+ <a class="permalink" href="#SYSCTL_QUAD"><code class="Fn" id="SYSCTL_QUAD">SYSCTL_QUAD</code></a>(),
+ <code class="Fn">SYSCTL_ROOT_NODE</code>(),
+ <a class="permalink" href="#SYSCTL_S8"><code class="Fn" id="SYSCTL_S8">SYSCTL_S8</code></a>(),
+ <a class="permalink" href="#SYSCTL_S16"><code class="Fn" id="SYSCTL_S16">SYSCTL_S16</code></a>(),
+ <a class="permalink" href="#SYSCTL_S32"><code class="Fn" id="SYSCTL_S32">SYSCTL_S32</code></a>(),
+ <a class="permalink" href="#SYSCTL_S64"><code class="Fn" id="SYSCTL_S64">SYSCTL_S64</code></a>(),
+ <code class="Fn">SYSCTL_SBINTIME_MSEC</code>(),
+ <code class="Fn">SYSCTL_SBINTIME_USEC</code>(),
+ <code class="Fn">SYSCTL_STRING</code>(),
+ <code class="Fn">SYSCTL_CONST_STRING</code>(),
+ <code class="Fn">SYSCTL_STRUCT</code>(),
+ <code class="Fn">SYSCTL_TIMEVAL_SEC</code>(),
+ <a class="permalink" href="#SYSCTL_U8"><code class="Fn" id="SYSCTL_U8">SYSCTL_U8</code></a>(),
+ <a class="permalink" href="#SYSCTL_U16"><code class="Fn" id="SYSCTL_U16">SYSCTL_U16</code></a>(),
+ <a class="permalink" href="#SYSCTL_U32"><code class="Fn" id="SYSCTL_U32">SYSCTL_U32</code></a>(),
+ <a class="permalink" href="#SYSCTL_U64"><code class="Fn" id="SYSCTL_U64">SYSCTL_U64</code></a>(),
+ <a class="permalink" href="#SYSCTL_UINT"><code class="Fn" id="SYSCTL_UINT">SYSCTL_UINT</code></a>(),
+ <a class="permalink" href="#SYSCTL_ULONG"><code class="Fn" id="SYSCTL_ULONG">SYSCTL_ULONG</code></a>(),
+ <a class="permalink" href="#SYSCTL_UQUAD"><code class="Fn" id="SYSCTL_UQUAD">SYSCTL_UQUAD</code></a>(),
+ <a class="permalink" href="#SYSCTL_UMA_CUR"><code class="Fn" id="SYSCTL_UMA_CUR">SYSCTL_UMA_CUR</code></a>()
+ or
+ <a class="permalink" href="#SYSCTL_UMA_MAX"><code class="Fn" id="SYSCTL_UMA_MAX">SYSCTL_UMA_MAX</code></a>()
+ macros.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CREATING_A_DYNAMIC_SYSCTL"><a class="permalink" href="#CREATING_A_DYNAMIC_SYSCTL">CREATING
+ A DYNAMIC SYSCTL</a></h1>
+<p class="Pp">Dynamic nodes are created using one of the
+ <a class="permalink" href="#SYSCTL_ADD_BOOL"><code class="Fn" id="SYSCTL_ADD_BOOL">SYSCTL_ADD_BOOL</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_COUNTER_U64"><code class="Fn" id="SYSCTL_ADD_COUNTER_U64">SYSCTL_ADD_COUNTER_U64</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_COUNTER_U64_ARRAY"><code class="Fn" id="SYSCTL_ADD_COUNTER_U64_ARRAY">SYSCTL_ADD_COUNTER_U64_ARRAY</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_INT"><code class="Fn" id="SYSCTL_ADD_INT">SYSCTL_ADD_INT</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_LONG"><code class="Fn" id="SYSCTL_ADD_LONG">SYSCTL_ADD_LONG</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_NODE"><code class="Fn" id="SYSCTL_ADD_NODE">SYSCTL_ADD_NODE</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_NODE_WITH_LABEL"><code class="Fn" id="SYSCTL_ADD_NODE_WITH_LABEL">SYSCTL_ADD_NODE_WITH_LABEL</code></a>(),
+ <code class="Fn">SYSCTL_ADD_OPAQUE</code>(),
+ <code class="Fn">SYSCTL_ADD_PROC</code>(),
+ <a class="permalink" href="#SYSCTL_ADD_QUAD"><code class="Fn" id="SYSCTL_ADD_QUAD">SYSCTL_ADD_QUAD</code></a>(),
+ <code class="Fn">SYSCTL_ADD_ROOT_NODE</code>(),
+ <a class="permalink" href="#SYSCTL_ADD_S8"><code class="Fn" id="SYSCTL_ADD_S8">SYSCTL_ADD_S8</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_S16"><code class="Fn" id="SYSCTL_ADD_S16">SYSCTL_ADD_S16</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_S32"><code class="Fn" id="SYSCTL_ADD_S32">SYSCTL_ADD_S32</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_S64"><code class="Fn" id="SYSCTL_ADD_S64">SYSCTL_ADD_S64</code></a>(),
+ <code class="Fn">SYSCTL_ADD_SBINTIME_MSEC</code>(),
+ <code class="Fn">SYSCTL_ADD_SBINTIME_USEC</code>(),
+ <code class="Fn">SYSCTL_ADD_STRING</code>(),
+ <code class="Fn">SYSCTL_ADD_CONST_STRING</code>(),
+ <code class="Fn">SYSCTL_ADD_STRUCT</code>(),
+ <code class="Fn">SYSCTL_ADD_TIMEVAL_SEC</code>(),
+ <a class="permalink" href="#SYSCTL_ADD_U8"><code class="Fn" id="SYSCTL_ADD_U8">SYSCTL_ADD_U8</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_U16"><code class="Fn" id="SYSCTL_ADD_U16">SYSCTL_ADD_U16</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_U32"><code class="Fn" id="SYSCTL_ADD_U32">SYSCTL_ADD_U32</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_U64"><code class="Fn" id="SYSCTL_ADD_U64">SYSCTL_ADD_U64</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_UAUTO"><code class="Fn" id="SYSCTL_ADD_UAUTO">SYSCTL_ADD_UAUTO</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_UINT"><code class="Fn" id="SYSCTL_ADD_UINT">SYSCTL_ADD_UINT</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_ULONG"><code class="Fn" id="SYSCTL_ADD_ULONG">SYSCTL_ADD_ULONG</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_UQUAD"><code class="Fn" id="SYSCTL_ADD_UQUAD">SYSCTL_ADD_UQUAD</code></a>(),
+ <a class="permalink" href="#SYSCTL_ADD_UMA_CUR"><code class="Fn" id="SYSCTL_ADD_UMA_CUR">SYSCTL_ADD_UMA_CUR</code></a>()
+ or
+ <a class="permalink" href="#SYSCTL_ADD_UMA_MAX"><code class="Fn" id="SYSCTL_ADD_UMA_MAX">SYSCTL_ADD_UMA_MAX</code></a>()
+ functions. See <a class="Xr">sysctl_remove_oid(9)</a> or
+ <a class="Xr">sysctl_ctx_free(9)</a> for more information on how to destroy
+ a dynamically created OID.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="CONTROL_FLAGS"><a class="permalink" href="#CONTROL_FLAGS">CONTROL
+ FLAGS</a></h1>
+<p class="Pp">For most of the above functions and macros, declaring a type as
+ part of the access flags is not necessary &#x2014; however, when declaring a
+ sysctl implemented by a function, including a type in the access mask is
+ required:</p>
+<dl class="Bl-tag">
+ <dt id="CTLTYPE_NODE"><a class="permalink" href="#CTLTYPE_NODE"><code class="Dv">CTLTYPE_NODE</code></a></dt>
+ <dd>This is a node intended to be a parent for other nodes.</dd>
+ <dt id="CTLTYPE_INT"><a class="permalink" href="#CTLTYPE_INT"><code class="Dv">CTLTYPE_INT</code></a></dt>
+ <dd>This is a signed integer.</dd>
+ <dt id="CTLTYPE_STRING"><a class="permalink" href="#CTLTYPE_STRING"><code class="Dv">CTLTYPE_STRING</code></a></dt>
+ <dd>This is a nul-terminated string stored in a character array.</dd>
+ <dt id="CTLTYPE_S8"><a class="permalink" href="#CTLTYPE_S8"><code class="Dv">CTLTYPE_S8</code></a></dt>
+ <dd>This is an 8-bit signed integer.</dd>
+ <dt id="CTLTYPE_S16"><a class="permalink" href="#CTLTYPE_S16"><code class="Dv">CTLTYPE_S16</code></a></dt>
+ <dd>This is a 16-bit signed integer.</dd>
+ <dt id="CTLTYPE_S32"><a class="permalink" href="#CTLTYPE_S32"><code class="Dv">CTLTYPE_S32</code></a></dt>
+ <dd>This is a 32-bit signed integer.</dd>
+ <dt id="CTLTYPE_S64"><a class="permalink" href="#CTLTYPE_S64"><code class="Dv">CTLTYPE_S64</code></a></dt>
+ <dd>This is a 64-bit signed integer.</dd>
+ <dt id="CTLTYPE_OPAQUE"><a class="permalink" href="#CTLTYPE_OPAQUE"><code class="Dv">CTLTYPE_OPAQUE</code></a></dt>
+ <dd>This is an opaque data structure.</dd>
+ <dt id="CTLTYPE_STRUCT"><a class="permalink" href="#CTLTYPE_STRUCT"><code class="Dv">CTLTYPE_STRUCT</code></a></dt>
+ <dd>Alias for <code class="Dv">CTLTYPE_OPAQUE</code>.</dd>
+ <dt id="CTLTYPE_U8"><a class="permalink" href="#CTLTYPE_U8"><code class="Dv">CTLTYPE_U8</code></a></dt>
+ <dd>This is an 8-bit unsigned integer.</dd>
+ <dt id="CTLTYPE_U16"><a class="permalink" href="#CTLTYPE_U16"><code class="Dv">CTLTYPE_U16</code></a></dt>
+ <dd>This is a 16-bit unsigned integer.</dd>
+ <dt id="CTLTYPE_U32"><a class="permalink" href="#CTLTYPE_U32"><code class="Dv">CTLTYPE_U32</code></a></dt>
+ <dd>This is a 32-bit unsigned integer.</dd>
+ <dt id="CTLTYPE_U64"><a class="permalink" href="#CTLTYPE_U64"><code class="Dv">CTLTYPE_U64</code></a></dt>
+ <dd>This is a 64-bit unsigned integer.</dd>
+ <dt id="CTLTYPE_UINT"><a class="permalink" href="#CTLTYPE_UINT"><code class="Dv">CTLTYPE_UINT</code></a></dt>
+ <dd>This is an unsigned integer.</dd>
+ <dt id="CTLTYPE_LONG"><a class="permalink" href="#CTLTYPE_LONG"><code class="Dv">CTLTYPE_LONG</code></a></dt>
+ <dd>This is a signed long.</dd>
+ <dt id="CTLTYPE_ULONG"><a class="permalink" href="#CTLTYPE_ULONG"><code class="Dv">CTLTYPE_ULONG</code></a></dt>
+ <dd>This is an unsigned long.</dd>
+</dl>
+<p class="Pp">All sysctl types except for new node declarations require one of
+ the following flags to be set indicating the read and write disposition of
+ the sysctl:</p>
+<dl class="Bl-tag">
+ <dt id="CTLFLAG_RD"><a class="permalink" href="#CTLFLAG_RD"><code class="Dv">CTLFLAG_RD</code></a></dt>
+ <dd>This is a read-only sysctl.</dd>
+ <dt id="CTLFLAG_RDTUN"><a class="permalink" href="#CTLFLAG_RDTUN"><code class="Dv">CTLFLAG_RDTUN</code></a></dt>
+ <dd>This is a read-only sysctl and tunable which is fetched once from the
+ system environment early during module load or system boot.</dd>
+ <dt id="CTLFLAG_WR"><a class="permalink" href="#CTLFLAG_WR"><code class="Dv">CTLFLAG_WR</code></a></dt>
+ <dd>This is a writable sysctl.</dd>
+ <dt id="CTLFLAG_RW"><a class="permalink" href="#CTLFLAG_RW"><code class="Dv">CTLFLAG_RW</code></a></dt>
+ <dd>This sysctl is readable and writable.</dd>
+ <dt id="CTLFLAG_RWTUN"><a class="permalink" href="#CTLFLAG_RWTUN"><code class="Dv">CTLFLAG_RWTUN</code></a></dt>
+ <dd>This is a readable and writeable sysctl and tunable which is fetched once
+ from the system environment early during module load or system boot.</dd>
+ <dt id="CTLFLAG_NOFETCH"><a class="permalink" href="#CTLFLAG_NOFETCH"><code class="Dv">CTLFLAG_NOFETCH</code></a></dt>
+ <dd>In case the node is marked as a tunable using the CTLFLAG_[XX]TUN, this
+ flag will prevent fetching the initial value from the system environment.
+ Typically this flag should only be used for very early low level system
+ setup code, and not by common drivers and modules.</dd>
+ <dt id="CTLFLAG_MPSAFE"><a class="permalink" href="#CTLFLAG_MPSAFE"><code class="Dv">CTLFLAG_MPSAFE</code></a></dt>
+ <dd>This <a class="Xr">sysctl(9)</a> handler is MP safe. Do not grab Giant
+ around calls to this handler. This should only be used for
+ <a class="permalink" href="#SYSCTL_PROC"><code class="Fn" id="SYSCTL_PROC">SYSCTL_PROC</code></a>()
+ entries.</dd>
+</dl>
+<p class="Pp">Additionally, any of the following optional flags may also be
+ specified:</p>
+<dl class="Bl-tag">
+ <dt id="CTLFLAG_ANYBODY"><a class="permalink" href="#CTLFLAG_ANYBODY"><code class="Dv">CTLFLAG_ANYBODY</code></a></dt>
+ <dd>Any user or process can write to this sysctl.</dd>
+ <dt id="CTLFLAG_CAPRD"><a class="permalink" href="#CTLFLAG_CAPRD"><code class="Dv">CTLFLAG_CAPRD</code></a></dt>
+ <dd>A process in capability mode can read from this sysctl.</dd>
+ <dt id="CTLFLAG_CAPWR"><a class="permalink" href="#CTLFLAG_CAPWR"><code class="Dv">CTLFLAG_CAPWR</code></a></dt>
+ <dd>A process in capability mode can write to this sysctl.</dd>
+ <dt id="CTLFLAG_SECURE"><a class="permalink" href="#CTLFLAG_SECURE"><code class="Dv">CTLFLAG_SECURE</code></a></dt>
+ <dd>This sysctl can be written to only if the effective securelevel of the
+ process is &#x2264; 0.</dd>
+ <dt id="CTLFLAG_PRISON"><a class="permalink" href="#CTLFLAG_PRISON"><code class="Dv">CTLFLAG_PRISON</code></a></dt>
+ <dd>This sysctl can be written to by processes in
+ <a class="Xr">jail(2)</a>.</dd>
+ <dt id="CTLFLAG_SKIP"><a class="permalink" href="#CTLFLAG_SKIP"><code class="Dv">CTLFLAG_SKIP</code></a></dt>
+ <dd>When iterating the sysctl name space, do not list this sysctl.</dd>
+ <dt id="CTLFLAG_TUN"><a class="permalink" href="#CTLFLAG_TUN"><code class="Dv">CTLFLAG_TUN</code></a></dt>
+ <dd>Advisory flag that a system tunable also exists for this variable. The
+ initial sysctl value is fetched once from the system environment early
+ during module load or system boot.</dd>
+ <dt id="CTLFLAG_DYN"><a class="permalink" href="#CTLFLAG_DYN"><code class="Dv">CTLFLAG_DYN</code></a></dt>
+ <dd>Dynamically created OIDs automatically get this flag set.</dd>
+ <dt id="CTLFLAG_VNET"><a class="permalink" href="#CTLFLAG_VNET"><code class="Dv">CTLFLAG_VNET</code></a></dt>
+ <dd>OID references a VIMAGE-enabled variable.</dd>
+</dl>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
+<p class="Pp">Sample use of <code class="Fn">SYSCTL_DECL</code>() to declare the
+ <var class="Va">security</var> sysctl tree for use by new nodes:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>SYSCTL_DECL(_security);</pre>
+</div>
+<p class="Pp">Examples of integer, opaque, string, and procedure sysctls
+ follow:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>/*
+ * Example of a constant integer value. Notice that the control
+ * flags are CTLFLAG_RD, the variable pointer is SYSCTL_NULL_INT_PTR,
+ * and the value is declared.
+ */
+SYSCTL_INT(_kern, OID_AUTO, hz_max, CTLFLAG_RD, SYSCTL_NULL_INT_PTR, HZ_MAXIMUM,
+ &quot;Maximum hz value supported&quot;);
+
+/*
+ * Example of a variable integer value. Notice that the control
+ * flags are CTLFLAG_RW, the variable pointer is set, and the
+ * value is 0.
+ */
+static int doingcache = 1; /* 1 =&gt; enable the cache */
+SYSCTL_INT(_debug, OID_AUTO, vfscache, CTLFLAG_RW, &amp;doingcache, 0,
+ &quot;Enable name cache&quot;);
+
+/*
+ * Example of a variable string value. Notice that the control
+ * flags are CTLFLAG_RW, that the variable pointer and string
+ * size are set. Unlike newer sysctls, this older sysctl uses a
+ * static oid number.
+ */
+char kernelname[MAXPATHLEN] = &quot;/kernel&quot;; /* XXX bloat */
+SYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, CTLFLAG_RW,
+ kernelname, sizeof(kernelname), &quot;Name of kernel file booted&quot;);
+
+/*
+ * Example of an opaque data type exported by sysctl. Notice that
+ * the variable pointer and size are provided, as well as a format
+ * string for sysctl(8).
+ */
+static l_fp pps_freq; /* scaled frequency offset (ns/s) */
+SYSCTL_OPAQUE(_kern_ntp_pll, OID_AUTO, pps_freq, CTLFLAG_RD,
+ &amp;pps_freq, sizeof(pps_freq), &quot;I&quot;, &quot;&quot;);
+
+/*
+ * Example of a procedure based sysctl exporting string
+ * information. Notice that the data type is declared, the NULL
+ * variable pointer and 0 size, the function pointer, and the
+ * format string for sysctl(8).
+ */
+SYSCTL_PROC(_kern_timecounter, OID_AUTO, hardware, CTLTYPE_STRING |
+ CTLFLAG_RW, NULL, 0, sysctl_kern_timecounter_hardware, &quot;A&quot;,
+ &quot;&quot;);</pre>
+</div>
+<p class="Pp">The following is an example of how to create a new top-level
+ category and how to hook up another subtree to an existing static node. This
+ example does not use contexts, which results in tedious management of all
+ intermediate oids, as they need to be freed later on:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>#include &lt;sys/sysctl.h&gt;
+ ...
+/*
+ * Need to preserve pointers to newly created subtrees,
+ * to be able to free them later:
+ */
+static struct sysctl_oid *root1;
+static struct sysctl_oid *root2;
+static struct sysctl_oid *oidp;
+static int a_int;
+static char *string = &quot;dynamic sysctl&quot;;
+ ...
+
+root1 = SYSCTL_ADD_ROOT_NODE(NULL,
+ OID_AUTO, &quot;newtree&quot;, CTLFLAG_RW, 0, &quot;new top level tree&quot;);
+oidp = SYSCTL_ADD_INT(NULL, SYSCTL_CHILDREN(root1),
+ OID_AUTO, &quot;newint&quot;, CTLFLAG_RW, &amp;a_int, 0, &quot;new int leaf&quot;);
+ ...
+root2 = SYSCTL_ADD_NODE(NULL, SYSCTL_STATIC_CHILDREN(_debug),
+ OID_AUTO, &quot;newtree&quot;, CTLFLAG_RW, 0, &quot;new tree under debug&quot;);
+oidp = SYSCTL_ADD_STRING(NULL, SYSCTL_CHILDREN(root2),
+ OID_AUTO, &quot;newstring&quot;, CTLFLAG_RD, string, 0, &quot;new string leaf&quot;);</pre>
+</div>
+<p class="Pp">This example creates the following subtrees:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>debug.newtree.newstring
+newtree.newint</pre>
+</div>
+<p class="Pp" id="Care"><a class="permalink" href="#Care"><i class="Em">Care
+ should be taken to free all OIDs once they are no longer needed!</i></a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYSCTL_NAMING"><a class="permalink" href="#SYSCTL_NAMING">SYSCTL
+ NAMING</a></h1>
+<p class="Pp">When adding, modifying, or removing sysctl names, it is important
+ to be aware that these interfaces may be used by users, libraries,
+ applications, or documentation (such as published books), and are implicitly
+ published application interfaces. As with other application interfaces,
+ caution must be taken not to break existing applications, and to think about
+ future use of new name spaces so as to avoid the need to rename or remove
+ interfaces that might be depended on in the future.</p>
+<p class="Pp">The semantics chosen for a new sysctl should be as clear as
+ possible, and the name of the sysctl must closely reflect its semantics.
+ Therefore the sysctl name deserves a fair amount of consideration. It should
+ be short but yet representative of the sysctl meaning. If the name consists
+ of several words, they should be separated by underscore characters, as in
+ <var class="Va">compute_summary_at_mount</var>. Underscore characters may be
+ omitted only if the name consists of not more than two words, each being not
+ longer than four characters, as in <var class="Va">bootfile</var>.</p>
+<p class="Pp">For boolean sysctls, negative logic should be totally avoided.
+ That is, do not use names like <var class="Va">no_foobar</var> or
+ <var class="Va">foobar_disable</var>. They are confusing and lead to
+ configuration errors. Use positive logic instead:
+ <var class="Va">foobar</var>, <var class="Va">foobar_enable</var>.</p>
+<p class="Pp">A temporary sysctl node OID that should not be relied upon must be
+ designated as such by a leading underscore character in its name. For
+ example: <var class="Va">_dirty_hack</var>.</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(3)</a>, <a class="Xr">sysctl(8)</a>,
+ <a class="Xr">device_get_sysctl(9)</a>, <a class="Xr">sysctl_add_oid(9)</a>,
+ <a class="Xr">sysctl_ctx_free(9)</a>, <a class="Xr">sysctl_ctx_init(9)</a>,
+ <a class="Xr">sysctl_remove_oid(9)</a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp">The <a class="Xr">sysctl(8)</a> utility first appeared in
+ <span class="Ux">4.4BSD</span>.
+ <code class="Nm">SYSCTL_ADD_CONST_STRING</code> first appeared in
+ <span class="Ux">FreeBSD 12.1</span>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<p class="Pp">The <code class="Nm">sysctl</code> implementation originally found
+ in <span class="Ux">BSD</span> has been extensively rewritten by
+ <span class="An">Poul-Henning Kamp</span> in order to add support for name
+ lookups, name space iteration, and dynamic addition of MIB nodes.</p>
+<p class="Pp">This man page was written by <span class="An">Robert N. M.
+ Watson</span>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SECURITY_CONSIDERATIONS"><a class="permalink" href="#SECURITY_CONSIDERATIONS">SECURITY
+ CONSIDERATIONS</a></h1>
+<p class="Pp">When creating new sysctls, careful attention should be paid to the
+ security implications of the monitoring or management interface being
+ created. Most sysctls present in the kernel are read-only or writable only
+ by the superuser. Sysctls exporting extensive information on system data
+ structures and operation, especially those implemented using procedures,
+ will wish to implement access control to limit the undesired exposure of
+ information about other processes, network connections, etc.</p>
+<p class="Pp">The following top level sysctl name spaces are commonly used:</p>
+<dl class="Bl-tag">
+ <dt id="compat"><var class="Va">compat</var></dt>
+ <dd>Compatibility layer information.</dd>
+ <dt id="debug"><var class="Va">debug</var></dt>
+ <dd>Debugging information. Various name spaces exist under
+ <var class="Va">debug</var>.</dd>
+ <dt id="hw"><var class="Va">hw</var></dt>
+ <dd>Hardware and device driver information.</dd>
+ <dt id="kern"><var class="Va">kern</var></dt>
+ <dd>Kernel behavior tuning; generally deprecated in favor of more specific
+ name spaces.</dd>
+ <dt id="machdep"><var class="Va">machdep</var></dt>
+ <dd>Machine-dependent configuration parameters.</dd>
+ <dt id="net"><var class="Va">net</var></dt>
+ <dd>Network subsystem. Various protocols have name spaces under
+ <var class="Va">net</var>.</dd>
+ <dt id="regression"><var class="Va">regression</var></dt>
+ <dd>Regression test configuration and information.</dd>
+ <dt id="security"><var class="Va">security</var></dt>
+ <dd>Security and security-policy configuration and information.</dd>
+ <dt id="sysctl"><var class="Va">sysctl</var></dt>
+ <dd>Reserved name space for the implementation of sysctl.</dd>
+ <dt id="user"><var class="Va">user</var></dt>
+ <dd>Configuration settings relating to user application behavior. Generally,
+ configuring applications using kernel sysctls is discouraged.</dd>
+ <dt id="vfs"><var class="Va">vfs</var></dt>
+ <dd>Virtual file system configuration and information.</dd>
+ <dt id="vm"><var class="Va">vm</var></dt>
+ <dd>Virtual memory subsystem configuration and information.</dd>
+</dl>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">September 28, 2025</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>