mirror of
https://github.com/eledio-devices/thirdparty-littlefs.git
synced 2025-11-01 00:38:29 +01:00
Slight name change with ctz skip-list functions
changed: lfs_index -> lfs_ctz_index lfs_index_find -> lfs_ctz_find lfs_index_append -> lfs_ctz_append lfs_index_traverse -> lfs_ctz_traverse
This commit is contained in:
28
lfs.c
28
lfs.c
@@ -1003,7 +1003,7 @@ int lfs_dir_rewind(lfs_t *lfs, lfs_dir_t *dir) {
|
|||||||
|
|
||||||
|
|
||||||
/// File index list operations ///
|
/// File index list operations ///
|
||||||
static int lfs_index(lfs_t *lfs, lfs_off_t *off) {
|
static int lfs_ctz_index(lfs_t *lfs, lfs_off_t *off) {
|
||||||
lfs_off_t i = 0;
|
lfs_off_t i = 0;
|
||||||
|
|
||||||
while (*off >= lfs->cfg->block_size) {
|
while (*off >= lfs->cfg->block_size) {
|
||||||
@@ -1015,7 +1015,7 @@ static int lfs_index(lfs_t *lfs, lfs_off_t *off) {
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lfs_index_find(lfs_t *lfs,
|
static int lfs_ctz_find(lfs_t *lfs,
|
||||||
lfs_cache_t *rcache, const lfs_cache_t *pcache,
|
lfs_cache_t *rcache, const lfs_cache_t *pcache,
|
||||||
lfs_block_t head, lfs_size_t size,
|
lfs_block_t head, lfs_size_t size,
|
||||||
lfs_size_t pos, lfs_block_t *block, lfs_off_t *off) {
|
lfs_size_t pos, lfs_block_t *block, lfs_off_t *off) {
|
||||||
@@ -1025,8 +1025,8 @@ static int lfs_index_find(lfs_t *lfs,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
lfs_off_t current = lfs_index(lfs, &(lfs_off_t){size-1});
|
lfs_off_t current = lfs_ctz_index(lfs, &(lfs_off_t){size-1});
|
||||||
lfs_off_t target = lfs_index(lfs, &pos);
|
lfs_off_t target = lfs_ctz_index(lfs, &pos);
|
||||||
|
|
||||||
while (current > target) {
|
while (current > target) {
|
||||||
lfs_size_t skip = lfs_min(
|
lfs_size_t skip = lfs_min(
|
||||||
@@ -1047,7 +1047,7 @@ static int lfs_index_find(lfs_t *lfs,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lfs_index_extend(lfs_t *lfs,
|
static int lfs_ctz_extend(lfs_t *lfs,
|
||||||
lfs_cache_t *rcache, lfs_cache_t *pcache,
|
lfs_cache_t *rcache, lfs_cache_t *pcache,
|
||||||
lfs_block_t head, lfs_size_t size,
|
lfs_block_t head, lfs_size_t size,
|
||||||
lfs_off_t *block, lfs_block_t *off) {
|
lfs_off_t *block, lfs_block_t *off) {
|
||||||
@@ -1073,7 +1073,7 @@ static int lfs_index_extend(lfs_t *lfs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
size -= 1;
|
size -= 1;
|
||||||
lfs_off_t index = lfs_index(lfs, &size);
|
lfs_off_t index = lfs_ctz_index(lfs, &size);
|
||||||
size += 1;
|
size += 1;
|
||||||
|
|
||||||
// just copy out the last block if it is incomplete
|
// just copy out the last block if it is incomplete
|
||||||
@@ -1133,7 +1133,7 @@ relocate:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int lfs_index_traverse(lfs_t *lfs,
|
static int lfs_ctz_traverse(lfs_t *lfs,
|
||||||
lfs_cache_t *rcache, const lfs_cache_t *pcache,
|
lfs_cache_t *rcache, const lfs_cache_t *pcache,
|
||||||
lfs_block_t head, lfs_size_t size,
|
lfs_block_t head, lfs_size_t size,
|
||||||
int (*cb)(void*, lfs_block_t), void *data) {
|
int (*cb)(void*, lfs_block_t), void *data) {
|
||||||
@@ -1141,7 +1141,7 @@ static int lfs_index_traverse(lfs_t *lfs,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
lfs_off_t index = lfs_index(lfs, &(lfs_off_t){size-1});
|
lfs_off_t index = lfs_ctz_index(lfs, &(lfs_off_t){size-1});
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
int err = cb(data, head);
|
int err = cb(data, head);
|
||||||
@@ -1455,7 +1455,7 @@ lfs_ssize_t lfs_file_read(lfs_t *lfs, lfs_file_t *file,
|
|||||||
// check if we need a new block
|
// check if we need a new block
|
||||||
if (!(file->flags & LFS_F_READING) ||
|
if (!(file->flags & LFS_F_READING) ||
|
||||||
file->off == lfs->cfg->block_size) {
|
file->off == lfs->cfg->block_size) {
|
||||||
int err = lfs_index_find(lfs, &file->cache, NULL,
|
int err = lfs_ctz_find(lfs, &file->cache, NULL,
|
||||||
file->head, file->size,
|
file->head, file->size,
|
||||||
file->pos, &file->block, &file->off);
|
file->pos, &file->block, &file->off);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -1522,7 +1522,7 @@ lfs_ssize_t lfs_file_write(lfs_t *lfs, lfs_file_t *file,
|
|||||||
file->off == lfs->cfg->block_size) {
|
file->off == lfs->cfg->block_size) {
|
||||||
if (!(file->flags & LFS_F_WRITING) && file->pos > 0) {
|
if (!(file->flags & LFS_F_WRITING) && file->pos > 0) {
|
||||||
// find out which block we're extending from
|
// find out which block we're extending from
|
||||||
int err = lfs_index_find(lfs, &file->cache, NULL,
|
int err = lfs_ctz_find(lfs, &file->cache, NULL,
|
||||||
file->head, file->size,
|
file->head, file->size,
|
||||||
file->pos-1, &file->block, &file->off);
|
file->pos-1, &file->block, &file->off);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -1535,7 +1535,7 @@ lfs_ssize_t lfs_file_write(lfs_t *lfs, lfs_file_t *file,
|
|||||||
|
|
||||||
// extend file with new blocks
|
// extend file with new blocks
|
||||||
lfs_alloc_ack(lfs);
|
lfs_alloc_ack(lfs);
|
||||||
int err = lfs_index_extend(lfs, &lfs->rcache, &file->cache,
|
int err = lfs_ctz_extend(lfs, &lfs->rcache, &file->cache,
|
||||||
file->block, file->pos,
|
file->block, file->pos,
|
||||||
&file->block, &file->off);
|
&file->block, &file->off);
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -2070,7 +2070,7 @@ int lfs_traverse(lfs_t *lfs, int (*cb)(void*, lfs_block_t), void *data) {
|
|||||||
|
|
||||||
dir.off += lfs_entry_size(&entry);
|
dir.off += lfs_entry_size(&entry);
|
||||||
if ((0x70 & entry.d.type) == (0x70 & LFS_TYPE_REG)) {
|
if ((0x70 & entry.d.type) == (0x70 & LFS_TYPE_REG)) {
|
||||||
int err = lfs_index_traverse(lfs, &lfs->rcache, NULL,
|
int err = lfs_ctz_traverse(lfs, &lfs->rcache, NULL,
|
||||||
entry.d.u.file.head, entry.d.u.file.size, cb, data);
|
entry.d.u.file.head, entry.d.u.file.size, cb, data);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -2089,7 +2089,7 @@ int lfs_traverse(lfs_t *lfs, int (*cb)(void*, lfs_block_t), void *data) {
|
|||||||
// iterate over any open files
|
// iterate over any open files
|
||||||
for (lfs_file_t *f = lfs->files; f; f = f->next) {
|
for (lfs_file_t *f = lfs->files; f; f = f->next) {
|
||||||
if (f->flags & LFS_F_DIRTY) {
|
if (f->flags & LFS_F_DIRTY) {
|
||||||
int err = lfs_index_traverse(lfs, &lfs->rcache, &f->cache,
|
int err = lfs_ctz_traverse(lfs, &lfs->rcache, &f->cache,
|
||||||
f->head, f->size, cb, data);
|
f->head, f->size, cb, data);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
@@ -2097,7 +2097,7 @@ int lfs_traverse(lfs_t *lfs, int (*cb)(void*, lfs_block_t), void *data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (f->flags & LFS_F_WRITING) {
|
if (f->flags & LFS_F_WRITING) {
|
||||||
int err = lfs_index_traverse(lfs, &lfs->rcache, &f->cache,
|
int err = lfs_ctz_traverse(lfs, &lfs->rcache, &f->cache,
|
||||||
f->block, f->pos, cb, data);
|
f->block, f->pos, cb, data);
|
||||||
if (err) {
|
if (err) {
|
||||||
return err;
|
return err;
|
||||||
|
|||||||
Reference in New Issue
Block a user