Files
thirdparty-littlefs/emubd/lfs1_emubd.h
Christopher Haster daa6577060 Renamed all prefixes to include the major version
This is needed to allow compilation of multiple versions in the same
binary. Also note that the FUSE testing was removed because of related
name issues.

./scripts/prefix.py lfs1
2019-01-30 14:03:16 -06:00

88 lines
1.8 KiB
C

/*
* Block device emulated on standard files
*
* Copyright (c) 2017, Arm Limited. All rights reserved.
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef LFS1_EMUBD_H
#define LFS1_EMUBD_H
#include "lfs1.h"
#include "lfs1_util.h"
#ifdef __cplusplus
extern "C"
{
#endif
// Config options
#ifndef LFS1_EMUBD_READ_SIZE
#define LFS1_EMUBD_READ_SIZE 1
#endif
#ifndef LFS1_EMUBD_PROG_SIZE
#define LFS1_EMUBD_PROG_SIZE 1
#endif
#ifndef LFS1_EMUBD_ERASE_SIZE
#define LFS1_EMUBD_ERASE_SIZE 512
#endif
#ifndef LFS1_EMUBD_TOTAL_SIZE
#define LFS1_EMUBD_TOTAL_SIZE 524288
#endif
// The emu bd state
typedef struct lfs1_emubd {
char *path;
char *child;
struct {
uint64_t read_count;
uint64_t prog_count;
uint64_t erase_count;
} stats;
struct {
uint32_t read_size;
uint32_t prog_size;
uint32_t block_size;
uint32_t block_count;
} cfg;
} lfs1_emubd_t;
// Create a block device using path for the directory to store blocks
int lfs1_emubd_create(const struct lfs1_config *cfg, const char *path);
// Clean up memory associated with emu block device
void lfs1_emubd_destroy(const struct lfs1_config *cfg);
// Read a block
int lfs1_emubd_read(const struct lfs1_config *cfg, lfs1_block_t block,
lfs1_off_t off, void *buffer, lfs1_size_t size);
// Program a block
//
// The block must have previously been erased.
int lfs1_emubd_prog(const struct lfs1_config *cfg, lfs1_block_t block,
lfs1_off_t off, const void *buffer, lfs1_size_t size);
// Erase a block
//
// A block must be erased before being programmed. The
// state of an erased block is undefined.
int lfs1_emubd_erase(const struct lfs1_config *cfg, lfs1_block_t block);
// Sync the block device
int lfs1_emubd_sync(const struct lfs1_config *cfg);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif