Lines Matching refs:cfg

14 int lfs_testbd_createcfg(const struct lfs_config *cfg, const char *path,
24 (void*)cfg, cfg->context,
25 (void*)(uintptr_t)cfg->read, (void*)(uintptr_t)cfg->prog,
26 (void*)(uintptr_t)cfg->erase, (void*)(uintptr_t)cfg->sync,
27 cfg->read_size, cfg->prog_size, cfg->block_size, cfg->block_count,
31 lfs_testbd_t *bd = cfg->context;
32 bd->cfg = bdcfg;
36 bd->power_cycles = bd->cfg->power_cycles;
38 if (bd->cfg->erase_cycles) {
39 if (bd->cfg->wear_buffer) {
40 bd->wear = bd->cfg->wear_buffer;
42 bd->wear = lfs_malloc(sizeof(lfs_testbd_wear_t)*cfg->block_count);
49 memset(bd->wear, 0, sizeof(lfs_testbd_wear_t) * cfg->block_count);
54 bd->u.file.cfg = (struct lfs_filebd_config){
55 .erase_value = bd->cfg->erase_value,
57 int err = lfs_filebd_createcfg(cfg, path, &bd->u.file.cfg);
61 bd->u.ram.cfg = (struct lfs_rambd_config){
62 .erase_value = bd->cfg->erase_value,
63 .buffer = bd->cfg->buffer,
65 int err = lfs_rambd_createcfg(cfg, &bd->u.ram.cfg);
71 int lfs_testbd_create(const struct lfs_config *cfg, const char *path) {
77 (void*)cfg, cfg->context,
78 (void*)(uintptr_t)cfg->read, (void*)(uintptr_t)cfg->prog,
79 (void*)(uintptr_t)cfg->erase, (void*)(uintptr_t)cfg->sync,
80 cfg->read_size, cfg->prog_size, cfg->block_size, cfg->block_count,
83 int err = lfs_testbd_createcfg(cfg, path, &defaults);
88 int lfs_testbd_destroy(const struct lfs_config *cfg) {
89 LFS_TESTBD_TRACE("lfs_testbd_destroy(%p)", (void*)cfg);
90 lfs_testbd_t *bd = cfg->context;
91 if (bd->cfg->erase_cycles && !bd->cfg->wear_buffer) {
96 int err = lfs_filebd_destroy(cfg);
100 int err = lfs_rambd_destroy(cfg);
107 static int lfs_testbd_rawread(const struct lfs_config *cfg, lfs_block_t block,
109 lfs_testbd_t *bd = cfg->context;
111 return lfs_filebd_read(cfg, block, off, buffer, size);
113 return lfs_rambd_read(cfg, block, off, buffer, size);
117 static int lfs_testbd_rawprog(const struct lfs_config *cfg, lfs_block_t block,
119 lfs_testbd_t *bd = cfg->context;
121 return lfs_filebd_prog(cfg, block, off, buffer, size);
123 return lfs_rambd_prog(cfg, block, off, buffer, size);
127 static int lfs_testbd_rawerase(const struct lfs_config *cfg,
129 lfs_testbd_t *bd = cfg->context;
131 return lfs_filebd_erase(cfg, block);
133 return lfs_rambd_erase(cfg, block);
137 static int lfs_testbd_rawsync(const struct lfs_config *cfg) {
138 lfs_testbd_t *bd = cfg->context;
140 return lfs_filebd_sync(cfg);
142 return lfs_rambd_sync(cfg);
147 int lfs_testbd_read(const struct lfs_config *cfg, lfs_block_t block,
151 (void*)cfg, block, off, buffer, size);
152 lfs_testbd_t *bd = cfg->context;
155 LFS_ASSERT(off % cfg->read_size == 0);
156 LFS_ASSERT(size % cfg->read_size == 0);
157 LFS_ASSERT(block < cfg->block_count);
160 if (bd->cfg->erase_cycles && bd->wear[block] >= bd->cfg->erase_cycles &&
161 bd->cfg->badblock_behavior == LFS_TESTBD_BADBLOCK_READERROR) {
167 int err = lfs_testbd_rawread(cfg, block, off, buffer, size);
172 int lfs_testbd_prog(const struct lfs_config *cfg, lfs_block_t block,
176 (void*)cfg, block, off, buffer, size);
177 lfs_testbd_t *bd = cfg->context;
180 LFS_ASSERT(off % cfg->prog_size == 0);
181 LFS_ASSERT(size % cfg->prog_size == 0);
182 LFS_ASSERT(block < cfg->block_count);
185 if (bd->cfg->erase_cycles && bd->wear[block] >= bd->cfg->erase_cycles) {
186 if (bd->cfg->badblock_behavior ==
190 } else if (bd->cfg->badblock_behavior ==
192 bd->cfg->badblock_behavior ==
200 int err = lfs_testbd_rawprog(cfg, block, off, buffer, size);
211 LFS_ASSERT(lfs_testbd_rawsync(cfg) == 0);
221 int lfs_testbd_erase(const struct lfs_config *cfg, lfs_block_t block) {
222 LFS_TESTBD_TRACE("lfs_testbd_erase(%p, 0x%"PRIx32")", (void*)cfg, block);
223 lfs_testbd_t *bd = cfg->context;
226 LFS_ASSERT(block < cfg->block_count);
229 if (bd->cfg->erase_cycles) {
230 if (bd->wear[block] >= bd->cfg->erase_cycles) {
231 if (bd->cfg->badblock_behavior ==
235 } else if (bd->cfg->badblock_behavior ==
247 int err = lfs_testbd_rawerase(cfg, block);
258 LFS_ASSERT(lfs_testbd_rawsync(cfg) == 0);
268 int lfs_testbd_sync(const struct lfs_config *cfg) {
269 LFS_TESTBD_TRACE("lfs_testbd_sync(%p)", (void*)cfg);
270 int err = lfs_testbd_rawsync(cfg);
277 lfs_testbd_swear_t lfs_testbd_getwear(const struct lfs_config *cfg,
279 LFS_TESTBD_TRACE("lfs_testbd_getwear(%p, %"PRIu32")", (void*)cfg, block);
280 lfs_testbd_t *bd = cfg->context;
283 LFS_ASSERT(bd->cfg->erase_cycles);
284 LFS_ASSERT(block < cfg->block_count);
290 int lfs_testbd_setwear(const struct lfs_config *cfg,
292 LFS_TESTBD_TRACE("lfs_testbd_setwear(%p, %"PRIu32")", (void*)cfg, block);
293 lfs_testbd_t *bd = cfg->context;
296 LFS_ASSERT(bd->cfg->erase_cycles);
297 LFS_ASSERT(block < cfg->block_count);