| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*
- * Block device emulated on standard files
- *
- * Copyright (c) 2017 Christopher Haster
- * Distributed under the MIT license
- */
- #ifndef LFS_EMUBD_H
- #define LFS_EMUBD_H
- #include "lfs_config.h"
- #include "lfs_bd.h"
- // The emu bd state
- typedef struct lfs_emubd {
- char *path;
- char *child;
- struct lfs_bd_info info;
- } lfs_emubd_t;
- // Create a block device using path for the directory to store blocks
- lfs_error_t lfs_emubd_create(lfs_emubd_t *emu, const char *path);
- // Clean up memory associated with emu block device
- void lfs_emubd_destroy(lfs_emubd_t *emu);
- // Read a block
- lfs_error_t lfs_emubd_read(lfs_emubd_t *bd, uint8_t *buffer,
- lfs_ino_t ino, lfs_off_t off, lfs_size_t size);
- // Program a block
- //
- // The block must have previously been erased.
- lfs_error_t lfs_emubd_write(lfs_emubd_t *bd, const uint8_t *buffer,
- lfs_ino_t ino, lfs_off_t off, lfs_size_t size);
- // Erase a block
- //
- // A block must be erased before being programmed. The
- // state of an erased block is undefined.
- lfs_error_t lfs_emubd_erase(lfs_emubd_t *bd,
- lfs_ino_t ino, lfs_off_t off, lfs_size_t size);
- // Sync the block device
- lfs_error_t lfs_emubd_sync(lfs_emubd_t *bd);
- // Get a description of the block device
- //
- // Any unknown information may be left unmodified
- lfs_error_t lfs_emubd_info(lfs_emubd_t *bd, struct lfs_bd_info *info);
- // Block device operations
- extern const struct lfs_bd_ops lfs_emubd_ops;
- #endif
|