blob: ef2179cf8a080325df4250fae343c4d129ff8c84 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Adding a new file system &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../../genindex.html"/>
<link rel="search" title="Search" href="../../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../../index.html"/>
<link rel="up" title="File System Abstraction" href="fs.html"/>
<link rel="next" title="Flash Circular Buffer (FCB)" href="../fcb/fcb.html"/>
<link rel="prev" title="Other File Systems" href="otherfs.html"/>
<script src="../../../_static/js/modernizr.min.js"></script>
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../../_static/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li class="important">
<a href="/quick-start/">Quick Start</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../../os_user_guide.html">OS User Guide</a> /
<a href="fs.html">File System Abstraction</a> /
Adding a new file system
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-core/edit/master/docs/os/modules/fs/fs_add.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</option>
<option value="/v1_11_0" >
Version: 1.11.0
</option>
<option value="/v1_10_0" >
Version: 1.10.0
</option>
<option value="/v1_9_0" >
Version: 1.9.0
</option>
<option value="/v1_8_0" selected="selected" >
Version: 1.8.0
</option>
<option value="/v1_7_0" >
Version: 1.7.0
</option>
<option value="/v1_6_0" >
Version: 1.6.0
</option>
<option value="/v1_5_0" >
Version: 1.5.0
</option>
<option value="/v1_4_0" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../tutorials/tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../os_user_guide.html">OS User Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../core_os/mynewt_os.html">Kernel</a></li>
<li class="toctree-l2"><a class="reference internal" href="../system_modules.html">System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../hal/hal.html">Hardware Abstraction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../bootloader/bootloader.html">Secure Bootloader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../split/split.html">Split Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../core_os/porting/port_os.html">Porting Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../baselibc.html">Baselibc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../drivers/driver.html">Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devmgmt/newtmgr.html">Device Management with Newt Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mcumgr/mcumgr.html">Device Management with MCUmgr</a></li>
<li class="toctree-l2"><a class="reference internal" href="../imgmgr/imgmgr.html">Image Manager</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sysinitconfig/sysinitconfig.html">Compile-Time Configuration</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="fs.html">File System</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="nffs.html">Newtron Flash Filesystem (nffs)</a></li>
<li class="toctree-l3"><a class="reference internal" href="fatfs.html">The FAT File System</a></li>
<li class="toctree-l3"><a class="reference internal" href="otherfs.html">Other File Systems</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Adding a new file system</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../fcb/fcb.html">Flash Circular Buffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sensor_framework/sensor_framework.html">Sensor Framework</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testutil/testutil.html">Test Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../json/json.html">JSON</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mfg/mfg.html">Manufacturing support</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.8.0 is not the most recent version of the
Apache Mynewt documentation. Click <a href="/latest">here</a> to
read the latest version.
</p>
</div>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="adding-a-new-file-system">
<h1>Adding a new file system<a class="headerlink" href="#adding-a-new-file-system" title="Permalink to this headline"></a></h1>
<p>This section describes the common interface provided by any filesystem.</p>
<div class="section" id="api">
<h2>API<a class="headerlink" href="#api" title="Permalink to this headline"></a></h2>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-functions">Functions</p>
<dl class="c function">
<dt id="c.fs_register">
<span class="target" id="fs__if_8h_1aeabbac220aca0e072d63dec8aa3287bf"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">fs_register</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.fs_ops" title="fs_ops"><span class="pre">fs_ops</span></a> <span class="pre">*</span><em><span class="pre">fops</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_register" title="Permalink to this definition"></a><br /></dt>
<dd><p>Registers a new filesystem interface. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>0 on success, non-zero on failure </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">fops</span></code>: filesystem operations table</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.fs_ops_try_unique">
<span class="target" id="fs__if_8h_1a5cf252f6d22c08fb473732488bc59f9d"></span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.fs_ops" title="fs_ops"><span class="pre">fs_ops</span></a> <span class="pre">*</span><code class="sig-name descname"><span class="pre">fs_ops_try_unique</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops_try_unique" title="Permalink to this definition"></a><br /></dt>
<dd><p>Will look for the number of registered filesystems and will return the fops if there is only one. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>fops if there’s only one registered filesystem, NULL otherwise. </p>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.fs_ops_for">
<span class="target" id="fs__if_8h_1ab43d92d45d5c2bcedd84adda6f2c8e1a"></span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.fs_ops" title="fs_ops"><span class="pre">fs_ops</span></a> <span class="pre">*</span><code class="sig-name descname"><span class="pre">fs_ops_for</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><em><span class="pre">name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops_for" title="Permalink to this definition"></a><br /></dt>
<dd><p>Retrieve a filesystem’s operations table. </p>
<p><dl class="simple">
<dt><strong>Return</strong></dt><dd><p>valid pointer on success, NULL on failure </p>
</dd>
<dt><strong>Parameters</strong></dt><dd><ul class="breatheparameterlist simple">
<li><p><code class="docutils literal notranslate"><span class="pre">name</span></code>: Name of the filesystem to retrieve <a class="reference internal" href="#structfs__ops"><span class="std std-ref">fs_ops</span></a> for</p></li>
</ul>
</dd>
</dl>
</p>
</dd></dl>
<dl class="c function">
<dt id="c.fs_ops_from_container">
<span class="target" id="fs__if_8h_1a6882b9ec4154006cf9cb08df9b1fcad2"></span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.fs_ops" title="fs_ops"><span class="pre">fs_ops</span></a> <span class="pre">*</span><code class="sig-name descname"><span class="pre">fs_ops_from_container</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.fops_container" title="fops_container"><span class="pre">fops_container</span></a> <span class="pre">*</span><em><span class="pre">container</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops_from_container" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<dl class="c struct">
<dt id="c.fs_ops">
<span class="target" id="structfs__ops"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">fs_ops</span></code><a class="headerlink" href="#c.fs_ops" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;fs_if.h&gt;</em><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="c function">
<dt>
<span class="target" id="structfs__ops_1af0e30357f0242c0982f0b0a4c7d15f7c"></span><code class="sig-name descname"><span class="pre">SLIST_ENTRY</span> <span class="pre">(fs_ops)</span> <span class="pre">sc_next</span></code></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.fs_ops.f_open">
<span class="target" id="structfs__ops_1aa366d9d30351a5c5f519aacf0de5a4bd"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_open</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><span class="pre">filename</span>, <span class="pre">uint8_t</span> <span class="pre">access_flags</span>, <em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">*</span><span class="pre">out_file</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_open" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_close">
<span class="target" id="structfs__ops_1a7e3b79c4ff6b1fba9ecd952373de7b2a"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_close</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">file</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_close" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_read">
<span class="target" id="structfs__ops_1a6efe88a4b1520fc0d11f848fdba67198"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_read</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">file</span>, <span class="pre">uint32_t</span> <span class="pre">len</span>, <span class="pre">void</span> <span class="pre">*</span><span class="pre">out_data</span>, <span class="pre">uint32_t</span> <span class="pre">*</span><span class="pre">out_len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_read" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_write">
<span class="target" id="structfs__ops_1ab6dfe7d89c3e8deaff22a960723f2d5c"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_write</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">file</span>, <em class="property"><span class="pre">const</span></em> <span class="pre">void</span> <span class="pre">*</span><span class="pre">data</span>, <span class="pre">int</span> <span class="pre">len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_write" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_flush">
<span class="target" id="structfs__ops_1aa6e09b7cf1202abeff4f67b495818d47"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_flush</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">file</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_flush" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_seek">
<span class="target" id="structfs__ops_1ab3bd7f89c4e96d1a1b37cf555ba096ba"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_seek</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">file</span>, <span class="pre">uint32_t</span> <span class="pre">offset</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_seek" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_getpos">
<span class="target" id="structfs__ops_1a4e6f07e4df138b41f7a434a399655fea"></span><span class="pre">uint32_t</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_getpos</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">file</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_getpos" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_filelen">
<span class="target" id="structfs__ops_1a82821c7bd8a15920493a1708babc58a7"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_filelen</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <span class="pre">fs_file</span> <span class="pre">*</span><span class="pre">file</span>, <span class="pre">uint32_t</span> <span class="pre">*</span><span class="pre">out_len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_filelen" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_unlink">
<span class="target" id="structfs__ops_1a63e1bc64e548e2251ee0f9ed9a736f1e"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_unlink</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><span class="pre">filename</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_unlink" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_rename">
<span class="target" id="structfs__ops_1aed986aa8cf085e09a916e4a727b9edc6"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_rename</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><span class="pre">from</span>, <em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><span class="pre">to</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_rename" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_mkdir">
<span class="target" id="structfs__ops_1a9307875a0b4d3c9265b2c7e4a5c0a09e"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_mkdir</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><span class="pre">path</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_mkdir" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_opendir">
<span class="target" id="structfs__ops_1ae99b6897e3900c08d5074f24760512ac"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_opendir</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><span class="pre">path</span>, <em class="property"><span class="pre">struct</span></em> <span class="pre">fs_dir</span> <span class="pre">*</span><span class="pre">*</span><span class="pre">out_dir</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_opendir" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_readdir">
<span class="target" id="structfs__ops_1a588e877f0abe8e55bedead659955cabd"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_readdir</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <span class="pre">fs_dir</span> <span class="pre">*</span><span class="pre">dir</span>, <em class="property"><span class="pre">struct</span></em> <span class="pre">fs_dirent</span> <span class="pre">*</span><span class="pre">*</span><span class="pre">out_dirent</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_readdir" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_closedir">
<span class="target" id="structfs__ops_1a7e98863b48ac2e01b33cc946b84503b1"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_closedir</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <span class="pre">fs_dir</span> <span class="pre">*</span><span class="pre">dir</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_closedir" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_dirent_name">
<span class="target" id="structfs__ops_1a61e0d4066e47399e124aa130455f2e16"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_dirent_name</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <span class="pre">fs_dirent</span> <span class="pre">*</span><span class="pre">dirent</span>, <span class="pre">size_t</span> <span class="pre">max_len</span>, <span class="pre">char</span> <span class="pre">*</span><span class="pre">out_name</span>, <span class="pre">uint8_t</span> <span class="pre">*</span><span class="pre">out_name_len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_dirent_name" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_dirent_is_dir">
<span class="target" id="structfs__ops_1a6183a009d1a9858ac116f3d58e3dc3eb"></span><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">f_dirent_is_dir</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <span class="pre">fs_dirent</span> <span class="pre">*</span><span class="pre">dirent</span><span class="sig-paren">)</span><a class="headerlink" href="#c.fs_ops.f_dirent_is_dir" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.fs_ops.f_name">
<span class="target" id="structfs__ops_1ad0eb9ae7641563687bf0e72641901d09"></span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">f_name</span></code><a class="headerlink" href="#c.fs_ops.f_name" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
<dl class="c struct">
<dt id="c.fops_container">
<span class="target" id="structfops__container"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">fops_container</span></code><a class="headerlink" href="#c.fops_container" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;fs_if.h&gt;</em><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.fops_container.fops">
<span class="target" id="structfops__container_1adc129bff804f4a54aa160737af49ecb5"></span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.fs_ops" title="fs_ops"><span class="pre">fs_ops</span></a> <span class="pre">*</span><code class="sig-name descname"><span class="pre">fops</span></code><a class="headerlink" href="#c.fops_container.fops" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="../fcb/fcb.html" class="btn btn-neutral float-right" title="Flash Circular Buffer (FCB)" accesskey="n">Next: Flash Circular Buffer (FCB) <span class="fa fa-arrow-circle-right"></span></a>
<a href="otherfs.html" class="btn btn-neutral" title="Other File Systems" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Other File Systems</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<img src="../../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either
registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
</small>
<a href="">
<img src="../../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../../_static/js/main.js"></script>
</body>
</html>