libsquashfs 1.3.0
A new set of tools and libraries for working with SquashFS images
|
Abstracts writing and deduplicating of data and fragment blocks. More...
#include <block_writer.h>
Public Member Functions | |
SQFS_API sqfs_block_writer_t * | sqfs_block_writer_create (sqfs_file_t *file, size_t devblksz, sqfs_u32 flags) |
Create an instance of a default block writer implementation. | |
Data Fields | |
sqfs_object_t | base |
int(* | write_data_block )(sqfs_block_writer_t *wr, void *user, sqfs_u32 size, sqfs_u32 checksum, sqfs_u32 flags, const sqfs_u8 *data, sqfs_u64 *location) |
Submit a data block to a block writer. | |
sqfs_u64(* | get_block_count )(const sqfs_block_writer_t *wr) |
Get the number of blocks actually written to disk. | |
Data Fields inherited from sqfs_object_t | |
void(* | destroy )(struct sqfs_object_t *instance) |
struct sqfs_object_t *(* | copy )(const struct sqfs_object_t *orig) |
Additional Inherited Members | |
Static Public Member Functions inherited from sqfs_object_t | |
static SQFS_INLINE void | sqfs_destroy (void *obj) |
Destroy an object and free all its memory. | |
static SQFS_INLINE void * | sqfs_copy (const void *obj) |
Create a deep copy of an object if possible. | |
Abstracts writing and deduplicating of data and fragment blocks.
A default reference implementation can be obtaiend through sqfs_block_writer_create. The default implementation is not copyable, i.e. sqfs_copy will always return NULL.
Definition at line 42 of file block_writer.h.
SQFS_API sqfs_block_writer_t * sqfs_block_writer_create | ( | sqfs_file_t * | file, |
size_t | devblksz, | ||
sqfs_u32 | flags | ||
) |
Create an instance of a default block writer implementation.
file | A pointer to a file object that data should be appended to. |
devblksz | The underlying device block size if output data should be aligned. |
flags | A combination of SQFS_BLOCK_WRITER_FLAGS values. If an unknown flag is set, creation will fail. |
sqfs_object_t base |
Definition at line 43 of file block_writer.h.
sqfs_u64(* get_block_count) (const sqfs_block_writer_t *wr) |
Get the number of blocks actually written to disk.
wr | A pointer to a block writer. |
Definition at line 90 of file block_writer.h.
int(* write_data_block) (sqfs_block_writer_t *wr, void *user, sqfs_u32 size, sqfs_u32 checksum, sqfs_u32 flags, const sqfs_u8 *data, sqfs_u64 *location) |
Submit a data block to a block writer.
If the SQFS_BLK_FIRST_BLOCK flag is set, the data block writer memorizes the starting location and block index of the block. If the SQFS_BLK_LAST_BLOCK flag is set, it uses those stored locations to do block deduplication.
If the flag SQFS_BLK_ALIGN is set in combination with the SQFS_BLK_FIRST_BLOCK, the file size is padded to a multiple of the device block size before writing. If it is set together with the SQFS_BLK_LAST_BLOCK flag, the padding is added afterwards.
wr | A pointer to a block writer. |
user | An optional user data pointer. The sqfs_block_processor_t can be told to pass this on to the block writer for each block. |
size | The size of the block to write. |
checksum | A 32 bit checksum of the block data. |
flags | A combination of SQFS_BLK_FLAGS flag bits describing the block. @arapm data A pointer to the data to write. |
location | Returns the location where the block has been written. If the SQFS_BLK_LAST_BLOCK flag was set, deduplication is performed and this returns the (new) location of the first block instead. |
Definition at line 76 of file block_writer.h.