<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.9.1" xml:lang="en-US">
  <compounddef id="structfilesystem__t" kind="struct" language="C++" prot="public">
    <compoundname>filesystem_t</compoundname>
    <includes local="no">filesystem.h</includes>
      <sectiondef kind="public-attrib">
      <memberdef kind="variable" id="structfilesystem__t_1ad9e95445e543de2e595f4da41e1b9ff4" prot="public" static="no" mutable="no">
        <type>char</type>
        <definition>char filesystem_t::name[32]</definition>
        <argsstring>[32]</argsstring>
        <name>name</name>
        <briefdescription>
<para>Name of filesystem driver, e.g. &apos;fat32&apos;. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="92" column="6" bodyfile="include/filesystem.h" bodystart="92" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1a77609a9147050917f0fff5604dd14c36" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1ad7b51a2acb80e5467b0e6fb6f0896f04" kindref="member">mount_volume</ref></type>
        <definition>mount_volume filesystem_t::mount</definition>
        <argsstring></argsstring>
        <name>mount</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1a77609a9147050917f0fff5604dd14c36" kindref="member">mount()</ref> Mounts the filesystem to a storage device. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="98" column="14" bodyfile="include/filesystem.h" bodystart="98" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1a99ad863d03be29cf4ddbf592405f12a9" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1ab18ebf0ec55a45b557b2d6e1bdb2ef4d" kindref="member">get_directory</ref></type>
        <definition>get_directory filesystem_t::getdir</definition>
        <argsstring></argsstring>
        <name>getdir</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1a99ad863d03be29cf4ddbf592405f12a9" kindref="member">getdir()</ref> Retrieves a list of files in a directory. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="104" column="15" bodyfile="include/filesystem.h" bodystart="104" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1ab20175c68487833f4f3f351aaf724326" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1a36870a32a443e38c76e0b99c80cfca28" kindref="member">read_file</ref></type>
        <definition>read_file filesystem_t::readfile</definition>
        <argsstring></argsstring>
        <name>readfile</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1ab20175c68487833f4f3f351aaf724326" kindref="member">readfile()</ref> Retrieves file contents from an arbitrary location in a file on the filesystem. Attempts to read any content outside of the files extent should be handled by returning only what is available. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="114" column="11" bodyfile="include/filesystem.h" bodystart="114" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1aba266bd5449616e92bb1706f8c408d9f" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1ad7fbb498b70c179339cf8354d37dce02" kindref="member">write_file</ref></type>
        <definition>write_file filesystem_t::writefile</definition>
        <argsstring></argsstring>
        <name>writefile</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1aba266bd5449616e92bb1706f8c408d9f" kindref="member">writefile()</ref> Writes data to arbitrary location in a file on the filesystem. The file must exist, and <ref refid="structfilesystem__t_1aba266bd5449616e92bb1706f8c408d9f" kindref="member">writefile()</ref> should not create new files, this is the reponsibility of the <ref refid="structfilesystem__t_1ab7d2e44b34d97365125949fe2ca300e8" kindref="member">createfile()</ref> endpoint. </para>
        </briefdescription>
        <detaileddescription>
<para>The <ref refid="structfilesystem__t_1aba266bd5449616e92bb1706f8c408d9f" kindref="member">writefile()</ref> endpoint should extend the length of existing files where required however, without error and without any special requirements having to be met, hardware permitting. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="126" column="12" bodyfile="include/filesystem.h" bodystart="126" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1ab7d2e44b34d97365125949fe2ca300e8" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1ab8604c3a391dc804445cac78b86510b2" kindref="member">create_file</ref></type>
        <definition>create_file filesystem_t::createfile</definition>
        <argsstring></argsstring>
        <name>createfile</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1ab7d2e44b34d97365125949fe2ca300e8" kindref="member">createfile()</ref> Creates a new file filled with null bytes, of the requested size. The file size on the media may be larger, to account for slack, but the reported size must be that provided. </para>
        </briefdescription>
        <detaileddescription>
<para>The file must not already exist, <ref refid="structfilesystem__t_1ab7d2e44b34d97365125949fe2ca300e8" kindref="member">createfile()</ref> should not overwrite existing data. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="137" column="13" bodyfile="include/filesystem.h" bodystart="137" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1abe1dabfc1a3f49cfb4d52980c5ff5a0c" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1afad152e2e2ae6fd9c67f6297507c1f17" kindref="member">truncate_file</ref></type>
        <definition>truncate_file filesystem_t::truncatefile</definition>
        <argsstring></argsstring>
        <name>truncatefile</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1abe1dabfc1a3f49cfb4d52980c5ff5a0c" kindref="member">truncatefile()</ref> Truncates an existing file to a new length, discarding any data past the new size and freeing it for re-use. </para>
        </briefdescription>
        <detaileddescription>
<para>The file must exist. To create a new file of a given length, the <ref refid="structfilesystem__t_1ab7d2e44b34d97365125949fe2ca300e8" kindref="member">createfile()</ref> endpoint should be used instead. </para>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="147" column="15" bodyfile="include/filesystem.h" bodystart="147" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1ac33d6d5bdd65541a546fab20594ab7bf" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1a9676f2719a89837cd7ad99e3671cda52" kindref="member">create_dir</ref></type>
        <definition>create_dir filesystem_t::createdir</definition>
        <argsstring></argsstring>
        <name>createdir</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1ac33d6d5bdd65541a546fab20594ab7bf" kindref="member">createdir()</ref> Create a new empty directory. The directory should not already exist within the given parent directory. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="155" column="12" bodyfile="include/filesystem.h" bodystart="155" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1a5a53b5c090ad502a59b6f382f6a64111" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1a7beb244ba61211f68a03fdd32bb7ac43" kindref="member">delete_file</ref></type>
        <definition>delete_file filesystem_t::rm</definition>
        <argsstring></argsstring>
        <name>rm</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1a5a53b5c090ad502a59b6f382f6a64111" kindref="member">rm()</ref> Remove an existing file. The file should already exist in the parent directory, and should not itself be a directory. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="163" column="13" bodyfile="include/filesystem.h" bodystart="163" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1a85128ed0d4bda3d5431f4d44c7a4ccd5" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1a8ec1bba1ee1bc3fe7b46f30eff181e3e" kindref="member">delete_dir</ref></type>
        <definition>delete_dir filesystem_t::rmdir</definition>
        <argsstring></argsstring>
        <name>rmdir</name>
        <briefdescription>
<para>Function pointer for <ref refid="structfilesystem__t_1a85128ed0d4bda3d5431f4d44c7a4ccd5" kindref="member">rmdir()</ref> Remove an existing directory. The directory should already exist in the parent directory, and should be empty of all non-special entries (e.g. &apos;.&apos; and &apos;..&apos; are permitted to still exist) </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="172" column="12" bodyfile="include/filesystem.h" bodystart="172" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structfilesystem__t_1a3de5608a3632092ae909303a1ba96fe5" prot="public" static="no" mutable="no">
        <type>struct <ref refid="structfilesystem__t" kindref="compound">filesystem_t</ref> *</type>
        <definition>struct filesystem_t* filesystem_t::next</definition>
        <argsstring></argsstring>
        <name>next</name>
        <briefdescription>
<para>Pointer to next filesystem driver or NULL. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="177" column="20" bodyfile="include/filesystem.h" bodystart="177" bodyend="-1"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Defines a filesystem driver. </para>
    </briefdescription>
    <detaileddescription>
<para>A driver does not need to implement all functions listed here. An unimplemented function should be NULL.</para>
<para>At a bare minimum a filesystem should support: mount, getdir, readfile</para>
<para>For full read/write support, all endpoints should be defined.</para>
<para><simplesect kind="note"><para>The VFS maintains a separate cache of the directory structure which is adjusted to match any requests made to the underlying filesystem driver. The filesystem driver does not have to concern itself with keeping this cache up to date. </para>
</simplesect>
</para>
    </detaileddescription>
    <collaborationgraph>
      <node id="1">
        <label>filesystem_t</label>
        <link refid="structfilesystem__t"/>
        <childnode refid="2" relation="usage">
          <edgelabel>createdir</edgelabel>
          <edgelabel>createfile</edgelabel>
        </childnode>
        <childnode refid="3" relation="usage">
          <edgelabel>getdir</edgelabel>
        </childnode>
        <childnode refid="1" relation="usage">
          <edgelabel>next</edgelabel>
        </childnode>
        <childnode refid="4" relation="usage">
          <edgelabel>name</edgelabel>
        </childnode>
        <childnode refid="5" relation="usage">
          <edgelabel>mount</edgelabel>
        </childnode>
        <childnode refid="6" relation="usage">
          <edgelabel>readfile</edgelabel>
          <edgelabel>rm</edgelabel>
          <edgelabel>rmdir</edgelabel>
          <edgelabel>truncatefile</edgelabel>
          <edgelabel>writefile</edgelabel>
        </childnode>
      </node>
      <node id="2">
        <label>uint64_t</label>
      </node>
      <node id="5">
        <label>int</label>
      </node>
      <node id="3">
        <label>void *(*)(void *)</label>
      </node>
      <node id="6">
        <label>bool</label>
      </node>
      <node id="4">
        <label>char</label>
      </node>
    </collaborationgraph>
    <location file="include/filesystem.h" line="87" column="1" bodyfile="include/filesystem.h" bodystart="87" bodyend="178"/>
    <listofallmembers>
      <member refid="structfilesystem__t_1ac33d6d5bdd65541a546fab20594ab7bf" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>createdir</name></member>
      <member refid="structfilesystem__t_1ab7d2e44b34d97365125949fe2ca300e8" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>createfile</name></member>
      <member refid="structfilesystem__t_1a99ad863d03be29cf4ddbf592405f12a9" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>getdir</name></member>
      <member refid="structfilesystem__t_1a77609a9147050917f0fff5604dd14c36" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>mount</name></member>
      <member refid="structfilesystem__t_1ad9e95445e543de2e595f4da41e1b9ff4" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>name</name></member>
      <member refid="structfilesystem__t_1a3de5608a3632092ae909303a1ba96fe5" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>next</name></member>
      <member refid="structfilesystem__t_1ab20175c68487833f4f3f351aaf724326" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>readfile</name></member>
      <member refid="structfilesystem__t_1a5a53b5c090ad502a59b6f382f6a64111" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>rm</name></member>
      <member refid="structfilesystem__t_1a85128ed0d4bda3d5431f4d44c7a4ccd5" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>rmdir</name></member>
      <member refid="structfilesystem__t_1abe1dabfc1a3f49cfb4d52980c5ff5a0c" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>truncatefile</name></member>
      <member refid="structfilesystem__t_1aba266bd5449616e92bb1706f8c408d9f" prot="public" virt="non-virtual"><scope>filesystem_t</scope><name>writefile</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
