⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 development.dbk

📁 bochs : one pc simulator.
💻 DBK
📖 第 1 页 / 共 5 页
字号:
</section><section><title>        Extent</title><para>	 &FIXME;</para></section></section><section><title>Parameters</title><para>The following tables shows what parameters are used when creating redologs or creating "growing" images :<table>   <title>        How number of entries in the catalog and number of blocks by extents are computed</title><tgroup cols="5"><thead><row><entry>Catalog entries</entry> <entry>Catalog size(KiB)</entry> <entry>Bitmap size (B)</entry> <entry>Extent size (KiB)</entry> <entry>Disk Max Size</entry></row></thead><tbody><row><entry>512</entry> <entry>2</entry> <entry>1</entry> <entry>4</entry> <entry>2MiB</entry></row><row><entry>512</entry> <entry>2</entry> <entry>2</entry> <entry>8</entry> <entry>4MiB</entry></row><row><entry>1k</entry> <entry>4</entry> <entry>2</entry> <entry>8</entry> <entry>8MiB</entry></row><row><entry>1k</entry> <entry>4</entry> <entry>4</entry> <entry>16</entry> <entry>16MiB</entry></row><row><entry>2k</entry> <entry>8</entry> <entry>4</entry> <entry>16</entry> <entry>32MiB</entry></row><row><entry>2k</entry> <entry>8</entry> <entry>8</entry> <entry>32</entry> <entry>64MiB</entry></row><row><entry>4k</entry> <entry>16</entry> <entry>8</entry> <entry>32</entry> <entry>128MiB</entry></row><row><entry>4k</entry> <entry>16</entry> <entry>16</entry> <entry>64</entry> <entry>256MiB</entry></row><row><entry>8k</entry> <entry>32</entry> <entry>16</entry> <entry>64</entry> <entry>512MiB</entry></row><row><entry>8k</entry> <entry>32</entry> <entry>32</entry> <entry>128</entry> <entry>1GiB</entry></row><row><entry>16k</entry> <entry>64</entry> <entry>32</entry> <entry>128</entry> <entry>2GiB</entry></row><row><entry>16k</entry> <entry>64</entry> <entry>64</entry> <entry>256</entry> <entry>4GiB</entry></row><row><entry>32k</entry> <entry>128</entry> <entry>64</entry> <entry>256</entry> <entry>8GiB</entry></row><row><entry>32k</entry> <entry>128</entry> <entry>128</entry> <entry>512</entry> <entry>16GiB</entry></row><row><entry>64k</entry> <entry>256</entry> <entry>128</entry> <entry>512</entry> <entry>32GiB</entry></row><row><entry>64k</entry> <entry>256</entry> <entry>256</entry> <entry>1024</entry> <entry>64GiB</entry></row><row><entry>128k</entry> <entry>512</entry> <entry>256</entry> <entry>1024</entry> <entry>128GiB</entry></row><row><entry>128k</entry> <entry>512</entry> <entry>512</entry> <entry>2048</entry> <entry>256GiB</entry></row><row><entry>256k</entry> <entry>1024</entry> <entry>512</entry> <entry>2048</entry> <entry>512GiB</entry></row><row><entry>256k</entry> <entry>1024</entry> <entry>1024</entry> <entry>4096</entry> <entry>1TiB</entry></row><row><entry>512k</entry> <entry>2048</entry> <entry>1024</entry> <entry>4096</entry> <entry>2TiB</entry></row><row><entry>512k</entry> <entry>2048</entry> <entry>2048</entry> <entry>8192</entry> <entry>4TiB</entry></row><row><entry>1024k</entry> <entry>4096</entry> <entry>2048</entry> <entry>8192</entry> <entry>8TiB</entry></row><row><entry>1024k</entry> <entry>4096</entry> <entry>4096</entry> <entry>16384</entry> <entry>16TiB</entry></row><row><entry>2048k</entry> <entry>8192</entry> <entry>4096</entry> <entry>16384</entry> <entry>32TiB</entry></row></tbody></tgroup></table></para></section><section><title>        Redolog class description</title><para>The class <emphasis>redolog_t();</emphasis> implements the necessarymethods to create, open, close, read and write data to a redolog.Managment of header catalog and sector bitmaps is done internallyby the class.</para><section><title>        Constants</title><para><screen>#define STANDARD_HEADER_MAGIC     "Bochs Virtual HD Image"#define STANDARD_HEADER_VERSION   (0x00010000)#define STANDARD_HEADER_SIZE      (512)</screen>These constants are used in the generic part of the header.</para><para><screen>#define REDOLOG_TYPE "Redolog"#define REDOLOG_SUBTYPE_UNDOABLE "Undoable"#define REDOLOG_SUBTYPE_VOLATILE "Volatile"#define REDOLOG_SUBTYPE_GROWING  "Growing"</screen>These constants are used in the specific part of the header.</para><para><screen>#define REDOLOG_PAGE_NOT_ALLOCATED (0xffffffff)</screen>This constant is used in the catalog for an unwritten extent.</para></section> <!-- Constants --><section> <title>Methods</title><para><emphasis>redolog_t();</emphasis> instanciates a new redolog.</para><para><emphasis>int make_header (const char* type, Bit64u size);</emphasis> creates a header structure in memory, and sets its <emphasis>type</emphasis> and parameters based on thedisk image <emphasis>size</emphasis>. Returns 0.</para><para><emphasis>int create (const char* filename, const char* type, Bit64u size);</emphasis> creates a new empty redolog file, with header and catalog, named <emphasis>filename</emphasis>of type <emphasis>type</emphasis> for a <emphasis>size</emphasis> bytes image.Returns 0 for OK or -1 if a problem occured.</para><para><emphasis>int create (int filedes, const char* type, Bit64u size);</emphasis>creates a new empty redolog file, with header and catalog, in a previously opened file described by <emphasis>filedes</emphasis>, of type <emphasis>type</emphasis> for a <emphasis>size</emphasis> bytes image.Returns 0 for OK or -1 if a problem occured.</para><para><emphasis>int open (const char* filename, const char* type, Bit64u size);</emphasis>opens a redolog file named <emphasis>filename</emphasis>, and checksfor consistency of header values against a <emphasis>type</emphasis> and<emphasis>size</emphasis>.Returns 0 for OK or -1 if a problem occured.</para><para><emphasis>void close ();</emphasis>closes a redolog file.</para><para><emphasis>off_t lseek (off_t offset, int whence);</emphasis>seeks at logical data offset <emphasis>offset</emphasis> in a redolog.<emphasis>offset</emphasis> must be a multiple of 512.Only SEEK_SET is supported for <emphasis>whence</emphasis>.Returns -1 if a problem occured, or the current logical offset inthe redolog.</para><para><emphasis>ssize_t read (void* buf, size_t count);</emphasis>reads <emphasis>count</emphasis> bytes of data of the redolog, from current logical offset,and copies it into <emphasis>buf</emphasis>.<emphasis>count</emphasis> must be 512.Returns the number of bytes read, that can be 0 if the datahas not previously be written to the redolog.</para><para><emphasis>ssize_t write (const void* buf, size_t count);</emphasis>writes <emphasis>count</emphasis> bytes of data from <emphasis>buf</emphasis> to the redolog, at current logical offset.<emphasis>count</emphasis> must be 512.Returns the number of bytes written.</para></section> </section> <!-- Redolog class description --><section><title>        Disk image classes description</title><para>"volatile" and "undoable" disk images are easily implementedby instanciating a <emphasis>default_image_t</emphasis> object (flat image) and a <emphasis>redolog_t</emphasis> object (redolog).</para><para>"growing" disk images only instanciates a <emphasis>redolog_t</emphasis> object.</para><para>Classe names are <emphasis>undoable_image_t</emphasis>, <emphasis>volatile_image_t</emphasis>and <emphasis>growing_image_t</emphasis>.</para><para>When using these disk images, the underlying data structure and layoutis completelyhidden to the caller. Then, all offset and size values are "logical" values,as if the disk was a flat file.</para><section><title>        Constants</title><para><screen>#define UNDOABLE_REDOLOG_EXTENSION ".redolog"#define UNDOABLE_REDOLOG_EXTENSION_LENGTH (strlen(UNDOABLE_REDOLOG_EXTENSION))#define VOLATILE_REDOLOG_EXTENSION ".XXXXXX"#define VOLATILE_REDOLOG_EXTENSION_LENGTH (strlen(VOLATILE_REDOLOG_EXTENSION))</screen>These constants are used when building redolog file names</para></section><section><title>        undoable_image_t methods</title><para><emphasis>undoable_image_t(Bit64u size, const char* redolog_name);</emphasis>instanciates a new <emphasis>undoable_image_t</emphasis>object. This disk image logical length is <emphasis>size</emphasis> bytes andthe redolog filename is <emphasis>redolog_name</emphasis>. </para><para><emphasis>int open (const char* pathname);</emphasis>opens the flat disk image <emphasis>pathname</emphasis>,as an undoable disk image. The associated redolog willbe named <emphasis>pathname</emphasis> with a <emphasis>UNDOABLE_REDOLOG_EXTENSION</emphasis>suffix, unless set in the constructor.Returns 0 for OK or -1 if a problem occured.</para><para><emphasis>void close ();</emphasis>closes the flat image and its redolog.</para><para><emphasis>off_t lseek (off_t offset, int whence);</emphasis>seeks at logical data position <emphasis>offset</emphasis> inthe undoable disk image. Only SEEK_SET is supported for <emphasis>whence</emphasis>.Returns -1 if a problem occured, or the current logicaloffset in the undoable disk image.</para><para><emphasis>ssize_t read (void* buf, size_t count);</emphasis>reads <emphasis>count</emphasis> bytes of data from the undoable disk image, from current logical offset,and copies it into <emphasis>buf</emphasis>.<emphasis>count</emphasis> must be 512.Returns the number of bytes read.Data will be read from the redolog if it hasbeen previously written or from the flat imageotherwise.</para><para><emphasis>ssize_t write (const void* buf, size_t count);</emphasis>writes <emphasis>count</emphasis> bytes of data from <emphasis>buf</emphasis> to the undoable disk image, at current logical offset.<emphasis>count</emphasis> must be 512.Returns the number of bytes written.Data will always be written to the redolog.</para></section><section><title>        volatile_image_t methods</title><para><emphasis>volatile_image_t(Bit64u size, const char* redolog_name);</emphasis>instanciates a new <emphasis>volatile_image_t</emphasis>object. This disk image logical length is <emphasis>size</emphasis> bytes andthe redolog filename is <emphasis>redolog_name</emphasis> plus a random suffix. </para><para><emphasis>int open (const char* pathname);</emphasis>opens the flat disk image <emphasis>pathname</emphasis>,as a volatile disk image. The associated redolog willbe named <emphasis>pathname</emphasis> with a random suffix, unless set in the constructor.Returns 0 for OK or -1 if a problem occured.</para><para><emphasis>void close ();</emphasis>closes the flat image and its redolog.The redolog is deleted/lost after close is called.</para><para><emphasis>off_t lseek (off_t offset, int whence);</emphasis>seeks at logical data position <emphasis>offset</emphasis> inthe volatile disk image. Only SEEK_SET is supported for <emphasis>whence</emphasis>.Returns -1 if a problem occured, or the current logical offset inthe volatile disk image.</para><para><emphasis>ssize_t read (void* buf, size_t count);</emphasis>reads <emphasis>count</emphasis> bytes of data from the volatile disk image, from current logical offset,and copies it into <emphasis>buf</emphasis>.<emphasis>count</emphasis> must be 512.Returns the number of bytes read.Data will be read from the redolog if it hasbeen previously written or from the flat imageotherwise.</para><para><emphasis>ssize_t write (const void* buf, size_t count);</emphasis>writes <emphasis>count</emphasis> bytes of data from <emphasis>buf</emphasis> to the volatile disk image, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -