summaryrefslogtreecommitdiff
path: root/static/freebsd/man9/sysctl_add_oid.9 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man9/sysctl_add_oid.9 3.html')
-rw-r--r--static/freebsd/man9/sysctl_add_oid.9 3.html151
1 files changed, 0 insertions, 151 deletions
diff --git a/static/freebsd/man9/sysctl_add_oid.9 3.html b/static/freebsd/man9/sysctl_add_oid.9 3.html
deleted file mode 100644
index a47cb3ce..00000000
--- a/static/freebsd/man9/sysctl_add_oid.9 3.html
+++ /dev/null
@@ -1,151 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">SYSCTL_ADD_OID(9)</td>
- <td class="head-vol">Kernel Developer's Manual</td>
- <td class="head-rtitle">SYSCTL_ADD_OID(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_add_oid</code>,
- <code class="Nm">sysctl_move_oid</code>,
- <code class="Nm">sysctl_remove_oid</code>,
- <code class="Nm">sysctl_remove_name</code> &#x2014; <span class="Nd">runtime
- sysctl tree manipulation</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/types.h</a>&gt;</code>
- <br/>
- <code class="In">#include &lt;<a class="In">sys/sysctl.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">struct sysctl_oid *</var>
- <br/>
- <code class="Fn">sysctl_add_oid</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 kind</var>, <var class="Fa">void *arg1</var>,
- <var class="Fa">intmax_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>, <var class="Fa">const char
- *label</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">sysctl_move_oid</code>(<var class="Fa">struct sysctl_oid
- *oidp</var>, <var class="Fa">struct sysctl_oid_list *parent</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">sysctl_remove_oid</code>(<var class="Fa">struct sysctl_oid
- *oidp</var>, <var class="Fa">int del</var>, <var class="Fa">int
- recurse</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">sysctl_remove_name</code>(<var class="Fa">struct sysctl_oid
- *oidp</var>, <var class="Fa">const char *name</var>, <var class="Fa">int
- del</var>, <var class="Fa">int recurse</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">These functions provide the interface for creating and deleting
- sysctl OIDs at runtime for example during the lifetime of a module. The
- wrapper macros defined by <a class="Xr">sysctl(9)</a> are recommended when
- creating new OIDs.
- <a class="permalink" href="#sysctl_add_oid"><code class="Fn" id="sysctl_add_oid">sysctl_add_oid</code></a>()
- should not be called directly from the code.</p>
-<p class="Pp">Dynamic OIDs of type <code class="Dv">CTLTYPE_NODE</code> are
- reusable so that several code sections can create and delete them, but in
- reality they are allocated and freed based on their reference count. As a
- consequence, it is possible for two or more code sections to create
- partially overlapping trees that they both can use. It is not possible to
- create overlapping leaves, nor to create different child types with the same
- name and parent.</p>
-<p class="Pp" id="sysctl_add_oid~2">The
- <a class="permalink" href="#sysctl_add_oid~2"><code class="Fn">sysctl_add_oid</code></a>()
- function creates a raw OID of any type and connects it to its parent node,
- if any. If the OID is successfully created, the function returns a pointer
- to it else it returns <code class="Dv">NULL</code>. Many of the arguments
- for <code class="Fn">sysctl_add_oid</code>() are common to the wrapper
- macros defined by <a class="Xr">sysctl(9)</a>.</p>
-<p class="Pp" id="sysctl_move_oid">The
- <a class="permalink" href="#sysctl_move_oid"><code class="Fn">sysctl_move_oid</code></a>()
- function reparents an existing OID. The OID is assigned a new number as if
- it had been created with <var class="Fa">number</var> set to
- <code class="Dv">OID_AUTO</code>.</p>
-<p class="Pp" id="sysctl_remove_oid">The
- <a class="permalink" href="#sysctl_remove_oid"><code class="Fn">sysctl_remove_oid</code></a>()
- function removes a dynamically created OID from the tree and optionally
- freeing its resources. It takes the following arguments:</p>
-<dl class="Bl-tag">
- <dt><var class="Fa">oidp</var></dt>
- <dd>A pointer to the dynamic OID to be removed. If the OID is not dynamic, or
- the pointer is <code class="Dv">NULL</code>, the function returns
- <code class="Er">EINVAL</code>.</dd>
- <dt><var class="Fa">del</var></dt>
- <dd>If non-zero, <code class="Fn">sysctl_remove_oid</code>() will try to free
- the OID's resources when the reference count of the OID becomes zero.
- However, if <var class="Fa">del</var> is set to 0, the routine will only
- deregister the OID from the tree, without freeing its resources. This
- behaviour is useful when the caller expects to rollback (possibly
- partially failed) deletion of many OIDs later.</dd>
- <dt id="WARNING"><var class="Fa">recurse</var></dt>
- <dd>If non-zero, attempt to remove the node and all its children. If
- <span class="Pa">recurse</span> is set to 0, any attempt to remove a node
- that contains any children will result in a
- <code class="Er">ENOTEMPTY</code> error.
- <a class="permalink" href="#WARNING"><i class="Em">WARNING</i></a>:
- <a class="permalink" href="#use"><i class="Em" id="use">use recursive
- deletion with extreme caution</i></a>! Normally it should not be needed if
- contexts are used. Contexts take care of tracking inter-dependencies
- between users of the tree. However, in some extreme cases it might be
- necessary to remove part of the subtree no matter how it was created, in
- order to free some other resources. Be aware, though, that this may result
- in a system <a class="Xr">panic(9)</a> if other code sections continue to
- use removed subtrees.</dd>
-</dl>
-<p class="Pp" id="sysctl_remove_name">The
- <a class="permalink" href="#sysctl_remove_name"><code class="Fn">sysctl_remove_name</code></a>()
- function looks up the child node matching the <var class="Fa">name</var>
- argument and then invokes the <code class="Fn">sysctl_remove_oid</code>()
- function on that node, passing along the <var class="Fa">del</var> and
- <var class="Fa">recurse</var> arguments. If a node having the specified name
- does not exist an error code of <code class="Er">ENOENT</code> is returned.
- Else the error code from <code class="Fn">sysctl_remove_oid</code>() is
- returned.</p>
-<p class="Pp">In most cases the programmer should use contexts, as described in
- <a class="Xr">sysctl_ctx_init(9)</a>, to keep track of created OIDs, and to
- delete them later in orderly fashion.</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">sysctl(9)</a>,
- <a class="Xr">sysctl_ctx_free(9)</a>,
- <a class="Xr">sysctl_ctx_init(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">These functions first appeared in <span class="Ux">FreeBSD
- 4.2</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp"><span class="An">Andrzej Bialecki</span>
- &lt;<a class="Mt" href="mailto:abial@FreeBSD.org">abial@FreeBSD.org</a>&gt;</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
-<p class="Pp">Sharing nodes between many code sections causes interdependencies
- that sometimes may lock the resources. For example, if module A hooks up a
- subtree to an OID created by module B, module B will be unable to delete
- that OID. These issues are handled properly by sysctl contexts.</p>
-<p class="Pp">Many operations on the tree involve traversing linked lists. For
- this reason, OID creation and removal is relatively costly.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">December 13, 2016</td>
- <td class="foot-os">FreeBSD 15.0</td>
- </tr>
-</table>