<?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="structstorage__device__t" kind="struct" language="C++" prot="public">
    <compoundname>storage_device_t</compoundname>
    <includes local="no">filesystem.h</includes>
      <sectiondef kind="public-attrib">
      <memberdef kind="variable" id="structstorage__device__t_1afed2809e3332d40efe7645b76dcb7501" prot="public" static="no" mutable="no">
        <type>char</type>
        <definition>char storage_device_t::name[16]</definition>
        <argsstring>[16]</argsstring>
        <name>name</name>
        <briefdescription>
<para>Storage device name, e.g. &apos;hd0&apos;. You should use <ref refid="devicename_8h_1a4525d2540fdbd10b71f393938eb14b49" kindref="member">make_unique_device_name()</ref> to fill this field. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="196" column="6" bodyfile="include/filesystem.h" bodystart="196" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structstorage__device__t_1a4b7e3635e869e1e8b2245665ee988547" prot="public" static="no" mutable="no">
        <type>uint64_t</type>
        <definition>uint64_t storage_device_t::size</definition>
        <argsstring></argsstring>
        <name>size</name>
        <briefdescription>
<para>Total extent of storage device if known, otherwise this value should be SIZE_MAX. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="202" column="10" bodyfile="include/filesystem.h" bodystart="202" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structstorage__device__t_1a918ae65b2e583bef5384dc4c596977b2" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1aedade13300b3b7656d01691660c3d275" kindref="member">block_read</ref></type>
        <definition>block_read storage_device_t::blockread</definition>
        <argsstring></argsstring>
        <name>blockread</name>
        <briefdescription>
<para>Function pointer for <ref refid="structstorage__device__t_1a918ae65b2e583bef5384dc4c596977b2" kindref="member">blockread()</ref> Block reads are always expected to be in increments of block_size. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="208" column="12" bodyfile="include/filesystem.h" bodystart="208" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structstorage__device__t_1a5ba455dae844ff9aae01e950f8271495" prot="public" static="no" mutable="no">
        <type><ref refid="filesystem_8h_1afbf0a8246b98b1f4ddca666aeb3fae3d" kindref="member">block_write</ref></type>
        <definition>block_write storage_device_t::blockwrite</definition>
        <argsstring></argsstring>
        <name>blockwrite</name>
        <briefdescription>
<para>Function pointer for <ref refid="structstorage__device__t_1a5ba455dae844ff9aae01e950f8271495" kindref="member">blockwrite()</ref> Block writes are always expected to be in increments of block_size. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="214" column="13" bodyfile="include/filesystem.h" bodystart="214" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structstorage__device__t_1a62fabd3b49e19f188297d179ffbcd090" prot="public" static="no" mutable="no">
        <type>uint32_t</type>
        <definition>uint32_t storage_device_t::block_size</definition>
        <argsstring></argsstring>
        <name>block_size</name>
        <briefdescription>
<para>The block size read and write operations. This is usually a sector size on disk drives. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="220" column="10" bodyfile="include/filesystem.h" bodystart="220" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structstorage__device__t_1add44ca2ee801c94a53fe71db46e39dbd" prot="public" static="no" mutable="no">
        <type>uint64_t</type>
        <definition>uint64_t storage_device_t::opaque1</definition>
        <argsstring></argsstring>
        <name>opaque1</name>
        <briefdescription>
<para>An opaque integer value which can be given meaning by the storage device driver. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="226" column="10" bodyfile="include/filesystem.h" bodystart="226" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structstorage__device__t_1a66eebca62325df9d8c0a0286c92ffa0c" prot="public" static="no" mutable="no">
        <type>void *</type>
        <definition>void* storage_device_t::opaque2</definition>
        <argsstring></argsstring>
        <name>opaque2</name>
        <briefdescription>
<para>An opaque pointer value which can be given meaning by the storage device driver. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="233" column="6" bodyfile="include/filesystem.h" bodystart="233" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="structstorage__device__t_1ad1b4bda1ebedc6cf141f8f157a663d14" prot="public" static="no" mutable="no">
        <type>struct <ref refid="structstorage__device__t" kindref="compound">storage_device_t</ref> *</type>
        <definition>struct storage_device_t* storage_device_t::next</definition>
        <argsstring></argsstring>
        <name>next</name>
        <briefdescription>
<para>Pointer to next storage device, or NULL. </para>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="include/filesystem.h" line="238" column="24" bodyfile="include/filesystem.h" bodystart="238" bodyend="-1"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>Represents a block storage device e.g. a hard disk, DVD-ROM drive, etc. </para>
    </briefdescription>
    <detaileddescription>
<para>A block storage device is expected to provide at least one endpoint for a readonly storage device like a ROM or CD, which is <ref refid="structstorage__device__t_1a918ae65b2e583bef5384dc4c596977b2" kindref="member">blockread()</ref>. Reads and writes are always performed in block_size chunks, and any buffers used for requests are expected to be a clean modulus of this block size.</para>
<para>Writeable filesystems should also implement <ref refid="structstorage__device__t_1a5ba455dae844ff9aae01e950f8271495" kindref="member">blockwrite()</ref>. </para>
    </detaileddescription>
    <collaborationgraph>
      <node id="6">
        <label>void *</label>
      </node>
      <node id="2">
        <label>uint64_t</label>
      </node>
      <node id="1">
        <label>storage_device_t</label>
        <link refid="structstorage__device__t"/>
        <childnode refid="2" relation="usage">
          <edgelabel>opaque1</edgelabel>
          <edgelabel>size</edgelabel>
        </childnode>
        <childnode refid="3" relation="usage">
          <edgelabel>name</edgelabel>
        </childnode>
        <childnode refid="1" relation="usage">
          <edgelabel>next</edgelabel>
        </childnode>
        <childnode refid="4" relation="usage">
          <edgelabel>block_size</edgelabel>
        </childnode>
        <childnode refid="5" relation="usage">
          <edgelabel>blockread</edgelabel>
          <edgelabel>blockwrite</edgelabel>
        </childnode>
        <childnode refid="6" relation="usage">
          <edgelabel>opaque2</edgelabel>
        </childnode>
      </node>
      <node id="5">
        <label>int</label>
      </node>
      <node id="4">
        <label>uint32_t</label>
      </node>
      <node id="3">
        <label>char</label>
      </node>
    </collaborationgraph>
    <location file="include/filesystem.h" line="190" column="1" bodyfile="include/filesystem.h" bodystart="190" bodyend="239"/>
    <listofallmembers>
      <member refid="structstorage__device__t_1a62fabd3b49e19f188297d179ffbcd090" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>block_size</name></member>
      <member refid="structstorage__device__t_1a918ae65b2e583bef5384dc4c596977b2" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>blockread</name></member>
      <member refid="structstorage__device__t_1a5ba455dae844ff9aae01e950f8271495" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>blockwrite</name></member>
      <member refid="structstorage__device__t_1afed2809e3332d40efe7645b76dcb7501" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>name</name></member>
      <member refid="structstorage__device__t_1ad1b4bda1ebedc6cf141f8f157a663d14" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>next</name></member>
      <member refid="structstorage__device__t_1add44ca2ee801c94a53fe71db46e39dbd" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>opaque1</name></member>
      <member refid="structstorage__device__t_1a66eebca62325df9d8c0a0286c92ffa0c" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>opaque2</name></member>
      <member refid="structstorage__device__t_1a4b7e3635e869e1e8b2245665ee988547" prot="public" virt="non-virtual"><scope>storage_device_t</scope><name>size</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
