summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/cnmagic.9 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man9/cnmagic.9 3.html')
-rw-r--r--static/netbsd/man9/cnmagic.9 3.html164
1 files changed, 0 insertions, 164 deletions
diff --git a/static/netbsd/man9/cnmagic.9 3.html b/static/netbsd/man9/cnmagic.9 3.html
deleted file mode 100644
index ea61d72b..00000000
--- a/static/netbsd/man9/cnmagic.9 3.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<table class="head">
- <tr>
- <td class="head-ltitle">CNMAGIC(9)</td>
- <td class="head-vol">Kernel Developer's Manual</td>
- <td class="head-rtitle">CNMAGIC(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">cn_init_magic</code>,
- <code class="Nm">cn_trap</code>, <code class="Nm">cn_isconsole</code>,
- <code class="Nm">cn_check_magic</code>,
- <code class="Nm">cn_destroy_magic</code>,
- <code class="Nm">cn_set_magic</code>, <code class="Nm">cn_get_magic</code>
- &#x2014; <span class="Nd">console magic key sequence management</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/systm.h</a>&gt;</code></p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">cn_init_magic</code>(<var class="Fa" style="white-space: nowrap;">cnm_state_t
- *cnms</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">cn_trap</code>();</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">cn_isconsole</code>(<var class="Fa" style="white-space: nowrap;">dev_t
- dev</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">cn_check_magic</code>(<var class="Fa" style="white-space: nowrap;">dev_t
- dev</var>, <var class="Fa" style="white-space: nowrap;">int k</var>,
- <var class="Fa" style="white-space: nowrap;">cnm_state_t *cnms</var>);</p>
-<p class="Pp"><var class="Ft">void</var>
- <br/>
- <code class="Fn">cn_destroy_magic</code>(<var class="Fa" style="white-space: nowrap;">cnm_state_t
- *cnms</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">cn_set_magic</code>(<var class="Fa" style="white-space: nowrap;">char
- *magic</var>);</p>
-<p class="Pp"><var class="Ft">int</var>
- <br/>
- <code class="Fn">cn_get_magic</code>(<var class="Fa" style="white-space: nowrap;">char
- *magic</var>, <var class="Fa" style="white-space: nowrap;">int
- len</var>);</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
-<p class="Pp">The <span class="Ux">NetBSD</span> console magic key sequence
- management framework is designed to provide flexible methods to set, change,
- and detect magic key sequences on console devices and break into the
- debugger or ROM monitor with a minimum of interrupt latency.</p>
-<p class="Pp" id="cn_init_magic">Drivers that generate console input should make
- use of these routines. A different <var class="Va">cnm_state_t</var> should
- be used for each separate input stream. Multiple devices that share the same
- input stream, such as USB keyboards, can share the same
- <var class="Va">cnm_state_t</var>. Once a <var class="Va">cnm_state_t</var>
- is allocated, it should be initialized with
- <a class="permalink" href="#cn_init_magic"><code class="Fn">cn_init_magic</code></a>()
- so it can be used by
- <a class="permalink" href="#cn_check_magic"><code class="Fn" id="cn_check_magic">cn_check_magic</code></a>().
- If a driver thinks it might be the console input device it can set the magic
- sequence with <code class="Fn">cn_set_magic</code>() to any arbitrary
- string. Whenever the driver receives input, it should call
- <code class="Fn">cn_check_magic</code>() to process the data and determine
- whether the magic sequence has been hit.</p>
-<p class="Pp">The magic key sequence can be accessed through the
- <var class="Va">hw.cnmagic</var> <code class="Ic">sysctl</code> variable.
- This is the raw data and may be keycodes rather than processed characters,
- depending on the console device.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="FUNCTIONS"><a class="permalink" href="#FUNCTIONS">FUNCTIONS</a></h1>
-<p class="Pp">The following functions describe the console magic interface.</p>
-<dl class="Bl-tag">
- <dt id="cn_init_magic~2"><a class="permalink" href="#cn_init_magic~2"><code class="Fn">cn_init_magic</code></a>(<var class="Fa">cnm</var>)</dt>
- <dd>Initialize the console magic state pointed to by <var class="Fa">cnm</var>
- to a usable state.</dd>
- <dt id="cn_trap"><a class="permalink" href="#cn_trap"><code class="Fn">cn_trap</code></a>()</dt>
- <dd>Trap into the kernel debugger or ROM monitor. By default this routine is
- defined to be
- <a class="permalink" href="#console_debugger"><code class="Fn" id="console_debugger">console_debugger</code></a>()
- but can be overridden in MI header files.</dd>
- <dt id="cn_isconsole"><a class="permalink" href="#cn_isconsole"><code class="Fn">cn_isconsole</code></a>(<var class="Fa">dev</var>)</dt>
- <dd>Determine whether a given <var class="Fa">dev</var> is the system console.
- This macro tests to see if <var class="Fa">dev</var> is the same as
- <var class="Va">cn_tab-&gt;cn_dev</var> but can be overridden in MI header
- files.</dd>
- <dt><code class="Fn">cn_check_magic</code>(<var class="Fa">dev</var>,
- <var class="Fa">k</var>, <var class="Fa">cnms</var>)</dt>
- <dd>All input should be passed through
- <code class="Fn">cn_check_magic</code>() so the state machine remains in a
- consistent state. <code class="Fn">cn_check_magic</code>() calls
- <code class="Fn">cn_isconsole</code>() with <var class="Fa">dev</var> to
- determine if this is the console. If that returns true then it runs the
- input value <var class="Fa">k</var> through the state machine. If the
- state machine completes a match of the current console magic sequence
- <code class="Fn">cn_trap</code>() is called. Some input may need to be
- translated to state machine values such as the serial line
- <code class="Li">BREAK</code> sequence.</dd>
- <dt id="cn_destroy_magic"><a class="permalink" href="#cn_destroy_magic"><code class="Fn">cn_destroy_magic</code></a>(<var class="Fa">cnms</var>)</dt>
- <dd>This should be called once what <var class="Fa">cnms</var> points to is no
- longer needed.</dd>
- <dt><code class="Fn">cn_set_magic</code>(<var class="Fa">magic</var>)</dt>
- <dd><code class="Fn">cn_set_magic</code>() encodes a
- <code class="Li">nul</code> terminated arbitrary string into values that
- can be used by the state machine and installs it as the global magic
- sequence. The escape sequence is character value
- <code class="Li">0x27</code> and can be used to encode special values:
- <p class="Pp"></p>
- <div class="Bd-indent">
- <dl class="Bl-tag Bl-compact">
- <dt>0x27</dt>
- <dd>The literal value <code class="Li">0x27</code>.</dd>
- <dt>0x01</dt>
- <dd>Serial <code class="Li">BREAK</code> sequence.</dd>
- <dt id="Nul">0x02</dt>
- <dd><a class="permalink" href="#Nul"><code class="Li">Nul</code></a>
- character.</dd>
- </dl>
- </div>
- <p class="Pp">Returns <code class="Li">0</code> on success or a non-zero
- error value.</p>
- </dd>
- <dt id="cn_get_magic"><a class="permalink" href="#cn_get_magic"><code class="Fn">cn_get_magic</code></a>(<var class="Fa">magic</var>,
- <var class="Fa">len</var>)</dt>
- <dd>Extract the current magic sequence from the state machine and return up to
- <var class="Fa">len</var> bytes of it in the buffer pointed to by
- <var class="Fa">magic</var>. It uses the same encoding accepted by
- <a class="permalink" href="#cn_set_magic"><code class="Fn" id="cn_set_magic">cn_set_magic</code></a>().
- Returns <code class="Li">0</code> on success or a non-zero error
- value.</dd>
-</dl>
-</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">ddb(4)</a>, <a class="Xr">sysctl(8)</a>,
- <a class="Xr">cons(9)</a></p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
-<p class="Pp">The <span class="Ux">NetBSD</span> console magic key sequence
- management framework first appeared in <span class="Ux">NetBSD
- 1.6</span>.</p>
-</section>
-<section class="Sh">
-<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
-<p class="Pp">The <span class="Ux">NetBSD</span> console magic key sequence
- management framework was designed and implemented by
- <span class="An">Eduardo Horvath</span> &#x27E8;eeh@NetBSD.org&#x27E9;.</p>
-</section>
-</div>
-<table class="foot">
- <tr>
- <td class="foot-date">July 7, 2019</td>
- <td class="foot-os">NetBSD 10.1</td>
- </tr>
-</table>