blob: 7075c144fc55e35ef2bd618b5936e70fac4a3ea3 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Board IOCTL &mdash; NuttX latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
<link rel="stylesheet" href="../../_static/tabs.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Logging" href="13_logging.html" />
<link rel="prev" title="Shared Memory Interfaces" href="12_shared_memory.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../../latest" selected="selected">latest</option>
<option value="../../../10.0.0" >10.0.0</option>
<option value="../../../10.0.1" >10.0.1</option>
<option value="../../../10.1.0" >10.1.0</option>
<option value="../../../10.2.0" >10.2.0</option>
<option value="../../../10.3.0" >10.3.0</option>
<option value="../../../11.0.0" >11.0.0</option>
<option value="../../../12.0.0" >12.0.0</option>
<option value="../../../12.1.0" >12.1.0</option>
<option value="../../../12.2.0" >12.2.0</option>
<option value="../../../12.2.1" >12.2.1</option>
<option value="../../../12.3.0" >12.3.0</option>
<option value="../../../12.4.0" >12.4.0</option>
<option value="../../../12.5.0" >12.5.0</option>
<option value="../../../12.5.1" >12.5.1</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../applications/index.html">Applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API Reference</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Userspace API</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="01_task_control.html">Task Control Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="02_task_scheduling.html">Task Scheduling Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="03_task_control.html">Task Control Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="04_message_queue.html">Named Message Queue Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="05_counting_semaphore.html">Counting Semaphore Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="06_clocks_timers.html">Clocks and Timers</a></li>
<li class="toctree-l3"><a class="reference internal" href="07_signals.html">Signal Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="08_pthread.html">Pthread Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="09_env_vars.html">Environment Variables</a></li>
<li class="toctree-l3"><a class="reference internal" href="10_filesystem.html">File System Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="11_network.html">Network Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="12_shared_memory.html">Shared Memory Interfaces</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Board IOCTL</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#supported-commands">Supported commands</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#system-state-control">System state control</a></li>
<li class="toctree-l5"><a class="reference internal" href="#power-management">Power Management</a></li>
<li class="toctree-l5"><a class="reference internal" href="#board-information">Board information</a></li>
<li class="toctree-l5"><a class="reference internal" href="#filesystems">Filesystems</a></li>
<li class="toctree-l5"><a class="reference internal" href="#symbol-handling">Symbol Handling</a></li>
<li class="toctree-l5"><a class="reference internal" href="#usb">USB</a></li>
<li class="toctree-l5"><a class="reference internal" href="#graphics">Graphics</a></li>
<li class="toctree-l5"><a class="reference internal" href="#testing">Testing</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="13_logging.html">Logging</a></li>
<li class="toctree-l3"><a class="reference internal" href="structures.html">OS Data Structures</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../os/index.html">Architecture APIs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">API Reference</a></li>
<li class="breadcrumb-item"><a href="index.html">Userspace API</a></li>
<li class="breadcrumb-item active">Board IOCTL</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/reference/user/13_boardctl.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="board-ioctl">
<h1>Board IOCTL<a class="headerlink" href="#board-ioctl" title="Permalink to this heading"></a></h1>
<p>In a small embedded system, there will typically be a much
greater interaction between application and low-level board features.
The canonically correct to implement such interactions is by
implementing a character driver and performing the interactions
via low level <code class="docutils literal notranslate"><span class="pre">ioctl()</span></code> calls. This, however, may not be practical
in many cases and will lead to “correct” but awkward implementations.</p>
<p><a class="reference internal" href="#c.boardctl" title="boardctl"><code class="xref c c-func docutils literal notranslate"><span class="pre">boardctl()</span></code></a> is non-standard OS interface to alleviate the problem.
It basically circumvents the normal device driver <code class="docutils literal notranslate"><span class="pre">ioctl()</span></code>
interface and allows the application to perform direct
IOCTL-like calls to the board-specific logic. It is especially
useful for setting up board operational and test configurations.</p>
<p><a class="reference internal" href="#c.boardctl" title="boardctl"><code class="xref c c-func docutils literal notranslate"><span class="pre">boardctl()</span></code></a> is an application interface to the OS.
There is no point, in fact, of using <a class="reference internal" href="#c.boardctl" title="boardctl"><code class="xref c c-func docutils literal notranslate"><span class="pre">boardctl()</span></code></a> within the OS;
the board interfaces prototyped in <code class="file docutils literal notranslate"><span class="pre">include/nuttx/board.h</span></code> may
be called directly from within the OS.</p>
<dl class="c function">
<dt class="sig sig-object c" id="c.boardctl">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">boardctl</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">unsigned</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">cmd</span></span>, <span class="n"><span class="pre">uintptr_t</span></span><span class="w"> </span><span class="n"><span class="pre">arg</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.boardctl" title="Permalink to this definition"></a><br /></dt>
<dd><dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>cmd</strong> – Identifies the board command to be executed. See
<code class="file docutils literal notranslate"><span class="pre">include/sys/boardctl.h</span></code> for the complete list of common
board commands. Provisions are made to support non-common,
board-specific commands as well.</p></li>
<li><p><strong>arg</strong> – The argument that accompanies the command. The nature
of the argument is determined by the specific command.</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>On success zero (OK) is returned; -1 (ERROR) is
returned on failure with the errno variable set to indicate the nature of the failure.</p>
</dd>
</dl>
</dd></dl>
<section id="supported-commands">
<h2>Supported commands<a class="headerlink" href="#supported-commands" title="Permalink to this heading"></a></h2>
<p>The following is the list of supported <a class="reference internal" href="#c.boardctl" title="boardctl"><code class="xref c c-func docutils literal notranslate"><span class="pre">boardctl()</span></code></a> commands.
Besides this list, board logic can implement handling of custom commands by
implementing the <code class="xref c c-func docutils literal notranslate"><span class="pre">board_ioctl()</span></code> interface.</p>
<section id="system-state-control">
<h3>System state control<a class="headerlink" href="#system-state-control" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_INIT">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_INIT</span></span></span><a class="headerlink" href="#c.BOARDIOC_INIT" title="Permalink to this definition"></a><br /></dt>
<dd><p>Perform one-time application initialization.</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>The argument is passed to the
<code class="xref c c-func docutils literal notranslate"><span class="pre">board_app_initialize()</span></code> implementation without modification.
The argument has no meaning to NuttX; the meaning of the
argument is a contract between the board-specific
initialization logic and the matching application logic.
The value could be such things as a mode enumeration value,
a set of DIP switch switch settings, a pointer to
configuration data read from a file or serial FLASH, or
whatever you would like to do with it. Every
implementation should accept zero/NULL as a default
configuration.</p>
</dd>
<dt class="field-even">Dependencies<span class="colon">:</span></dt>
<dd class="field-even"><p>Board logic must provide <code class="xref c c-func docutils literal notranslate"><span class="pre">board_app_initialize()</span></code>.</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_POWEROFF">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_POWEROFF</span></span></span><a class="headerlink" href="#c.BOARDIOC_POWEROFF" title="Permalink to this definition"></a><br /></dt>
<dd><p>Power off the board</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>Integer value providing power off status information</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL_POWEROFF</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>Board logic must provide the <code class="xref c c-func docutils literal notranslate"><span class="pre">board_power_off()</span></code> interface.</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_RESET">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_RESET</span></span></span><a class="headerlink" href="#c.BOARDIOC_RESET" title="Permalink to this definition"></a><br /></dt>
<dd><p>Reset the board</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>Integer value providing power off status information</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL_RESET</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>Board logic must provide the <code class="xref c c-func docutils literal notranslate"><span class="pre">board_reset()</span></code> interface.</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="power-management">
<h3>Power Management<a class="headerlink" href="#power-management" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_PM_CONTROL">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_PM_CONTROL</span></span></span><a class="headerlink" href="#c.BOARDIOC_PM_CONTROL" title="Permalink to this definition"></a><br /></dt>
<dd><p>Manage power state transition and query. The supplied argument
indicates the specific PM operation to perform, which map to
corresponding internal <code class="docutils literal notranslate"><span class="pre">pm_&lt;operation&gt;</span></code> functions
(see <a class="reference internal" href="../../components/power.html"><span class="doc">Power Management</span></a>).</p>
<p>With this interface you can interact with PM handling arch/board logic
(typically done in IDLE loop) or you can directly manage state transitions
from userspace.</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A pointer to an instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_pm_ctrl_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_PM</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="board-information">
<h3>Board information<a class="headerlink" href="#board-information" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_UNIQUEID">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_UNIQUEID</span></span></span><a class="headerlink" href="#c.BOARDIOC_UNIQUEID" title="Permalink to this definition"></a><br /></dt>
<dd><p>Return a unique ID associated with the board (such as a
serial number or a MAC address).</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A writable array of size <code class="xref c c-macro docutils literal notranslate"><span class="pre">CONFIG_BOARDCTL_UNIQUEID_SIZE</span></code> in
which to receive the board unique ID.</p>
</dd>
<dt class="field-even">Dependencies<span class="colon">:</span></dt>
<dd class="field-even"><p>Board logic must provide the <code class="xref c c-func docutils literal notranslate"><span class="pre">board_uniqueid()</span></code> interface.</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="filesystems">
<h3>Filesystems<a class="headerlink" href="#filesystems" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_MKRD">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_MKRD</span></span></span><a class="headerlink" href="#c.BOARDIOC_MKRD" title="Permalink to this definition"></a><br /></dt>
<dd><p>Create a RAM disk</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>Pointer to read-only instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_mkrd_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL_MKRD</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_ROMDISK">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_ROMDISK</span></span></span><a class="headerlink" href="#c.BOARDIOC_ROMDISK" title="Permalink to this definition"></a><br /></dt>
<dd><p>Register a ROM disk</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>Pointer to read-only instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_romdisk_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL_ROMDISK</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="symbol-handling">
<h3>Symbol Handling<a class="headerlink" href="#symbol-handling" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_APP_SYMTAB">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_APP_SYMTAB</span></span></span><a class="headerlink" href="#c.BOARDIOC_APP_SYMTAB" title="Permalink to this definition"></a><br /></dt>
<dd><p>Select the application symbol table. This symbol table
provides the symbol definitions exported to application
code from application space.</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A pointer to an instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_symtab_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL_APP_SYMTAB</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_OS_SYMTAB">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_OS_SYMTAB</span></span></span><a class="headerlink" href="#c.BOARDIOC_OS_SYMTAB" title="Permalink to this definition"></a><br /></dt>
<dd><p>Select the OS symbol table. This symbol table provides
the symbol definitions exported by the OS to kernel
modules.</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A pointer to an instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_symtab_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL_OS_SYMTAB</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_BUILTINS">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_BUILTINS</span></span></span><a class="headerlink" href="#c.BOARDIOC_BUILTINS" title="Permalink to this definition"></a><br /></dt>
<dd><p>Provide the user-space list of built-in applications for
use by BINFS in protected mode. Normally this is small
set of globals provided by user-space logic. It provides
name-value pairs for associating built-in application
names with user-space entry point addresses. These
globals are only needed for use by BINFS which executes
built-in applications from kernel-space in PROTECTED mode.
In the FLAT build, the user space globals are readily
available. (BINFS is not supportable in KERNEL mode since
user-space address have no general meaning that
configuration).</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A pointer to an instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_builtin_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>This command is always available when
CONFIG_BUILTIN is enabled, but does nothing unless
CONFIG_BUILD_PROTECTED is also selected.</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="usb">
<h3>USB<a class="headerlink" href="#usb" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_USBDEV_CONTROL">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_USBDEV_CONTROL</span></span></span><a class="headerlink" href="#c.BOARDIOC_USBDEV_CONTROL" title="Permalink to this definition"></a><br /></dt>
<dd><p>Manage USB device classes</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A pointer to an instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_usbdev_ctrl_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL &amp;&amp; CONFIG_BOARDCTL_USBDEVCTRL</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>Board logic must provide <cite>board_&lt;usbdev&gt;_initialize()</cite>.</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="graphics">
<h3>Graphics<a class="headerlink" href="#graphics" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_NX_START">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_NX_START</span></span></span><a class="headerlink" href="#c.BOARDIOC_NX_START" title="Permalink to this definition"></a><br /></dt>
<dd><p>Start the NX server</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>Integer display number to be served by this NXMU instance.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_NX</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>Base graphics logic provides <a class="reference internal" href="../../components/nxgraphics/nx.html#c.nxmu_start" title="nxmu_start"><code class="xref c c-func docutils literal notranslate"><span class="pre">nxmu_start()</span></code></a>.</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_VNC_START">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_VNC_START</span></span></span><a class="headerlink" href="#c.BOARDIOC_VNC_START" title="Permalink to this definition"></a><br /></dt>
<dd><p>Start the NX server and framebuffer driver.</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A reference readable instance of <code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_vncstart_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_VNCSERVER</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>VNC server provides <code class="xref c c-func docutils literal notranslate"><span class="pre">nx_vnc_fbinitialize()</span></code>.</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_NXTERM">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_NXTERM</span></span></span><a class="headerlink" href="#c.BOARDIOC_NXTERM" title="Permalink to this definition"></a><br /></dt>
<dd><p>Create an NX terminal device</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A reference readable/writable instance of
<code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_nxterm_create_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_NXTERM</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>Base NX terminal logic provides <code class="xref c c-func docutils literal notranslate"><span class="pre">nx_register()</span></code> and
<code class="xref c c-func docutils literal notranslate"><span class="pre">nxtk_register()</span></code>.</p>
</dd>
</dl>
</dd></dl>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_NXTERM_IOCTL">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_NXTERM_IOCTL</span></span></span><a class="headerlink" href="#c.BOARDIOC_NXTERM_IOCTL" title="Permalink to this definition"></a><br /></dt>
<dd><p>Create an NX terminal IOCTL command. Normal IOCTLs
cannot be be performed in most graphics contexts since
the depend on the task holding an open file descriptor</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A reference readable/writable instance of
<code class="xref c c-struct docutils literal notranslate"><span class="pre">boardioc_nxterm_ioctl_s</span></code>.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_NXTERM</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>Base NX terminal logic provides <code class="xref c c-func docutils literal notranslate"><span class="pre">nxterm_ioctl_tap()</span></code>.</p>
</dd>
</dl>
</dd></dl>
</section>
<section id="testing">
<h3>Testing<a class="headerlink" href="#testing" title="Permalink to this heading"></a></h3>
<dl class="c macro">
<dt class="sig sig-object c" id="c.BOARDIOC_TESTSET">
<span class="sig-name descname"><span class="n"><span class="pre">BOARDIOC_TESTSET</span></span></span><a class="headerlink" href="#c.BOARDIOC_TESTSET" title="Permalink to this definition"></a><br /></dt>
<dd><p>Access architecture-specific up_testset() operation</p>
<dl class="field-list simple">
<dt class="field-odd">Argument<span class="colon">:</span></dt>
<dd class="field-odd"><p>A pointer to a write-able spinlock object. On success
the preceding spinlock state is returned: 0=unlocked,
1=locked.</p>
</dd>
<dt class="field-even">Configuration<span class="colon">:</span></dt>
<dd class="field-even"><p>CONFIG_BOARDCTL_TESTSET</p>
</dd>
<dt class="field-odd">Dependencies<span class="colon">:</span></dt>
<dd class="field-odd"><p>Architecture-specific logic provides <a class="reference internal" href="../os/smp.html#c.up_testset" title="up_testset"><code class="xref c c-func docutils literal notranslate"><span class="pre">up_testset()</span></code></a>.</p>
</dd>
</dl>
</dd></dl>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="12_shared_memory.html" class="btn btn-neutral float-left" title="Shared Memory Interfaces" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="13_logging.html" class="btn btn-neutral float-right" title="Logging" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2020, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>