Bumped versions, cleaned up some TODOs and missing comments
This commit is contained in:
@@ -722,7 +722,6 @@ relocate:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO zeros?
|
|
||||||
static int lfs_dir_get(lfs_t *lfs, const lfs_dir_t *dir,
|
static int lfs_dir_get(lfs_t *lfs, const lfs_dir_t *dir,
|
||||||
lfs_off_t off, void *buffer, lfs_size_t size) {
|
lfs_off_t off, void *buffer, lfs_size_t size) {
|
||||||
return lfs_bd_read(lfs, dir->pair[0], off, buffer, size);
|
return lfs_bd_read(lfs, dir->pair[0], off, buffer, size);
|
||||||
@@ -1180,8 +1179,6 @@ int lfs_dir_read(lfs_t *lfs, lfs_dir_t *dir, struct lfs_info *info) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO common info constructor?
|
|
||||||
// TODO also used in lfs_stat
|
|
||||||
info->type = 0xf & entry.d.type;
|
info->type = 0xf & entry.d.type;
|
||||||
if (entry.d.type == (LFS_STRUCT_CTZ | LFS_TYPE_REG)) {
|
if (entry.d.type == (LFS_STRUCT_CTZ | LFS_TYPE_REG)) {
|
||||||
info->size = entry.d.u.file.size;
|
info->size = entry.d.u.file.size;
|
||||||
@@ -1707,7 +1704,6 @@ int lfs_file_sync(lfs_t *lfs, lfs_file_t *file) {
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO entry read function?
|
|
||||||
lfs_entry_t entry = {.off = file->poff};
|
lfs_entry_t entry = {.off = file->poff};
|
||||||
err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, sizeof(entry.d));
|
err = lfs_dir_get(lfs, &cwd, entry.off, &entry.d, sizeof(entry.d));
|
||||||
lfs_entry_fromle32(&entry.d);
|
lfs_entry_fromle32(&entry.d);
|
||||||
@@ -1778,7 +1774,6 @@ lfs_ssize_t lfs_file_read(lfs_t *lfs, lfs_file_t *file,
|
|||||||
nsize = size;
|
nsize = size;
|
||||||
|
|
||||||
while (nsize > 0) {
|
while (nsize > 0) {
|
||||||
// TODO can this be collapsed?
|
|
||||||
// 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) {
|
||||||
@@ -1848,12 +1843,9 @@ lfs_ssize_t lfs_file_write(lfs_t *lfs, lfs_file_t *file,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO combine with block allocation?
|
|
||||||
// TODO need to move out if no longer fits in block also
|
|
||||||
// TODO store INLINE_MAX in superblock?
|
|
||||||
// TODO what if inline files is > block size (ie 128)
|
|
||||||
if ((file->flags & LFS_F_INLINE) &&
|
if ((file->flags & LFS_F_INLINE) &&
|
||||||
file->pos + nsize >= file->inline_size) {
|
file->pos + nsize >= file->inline_size) {
|
||||||
|
// inline file doesn't fit anymore
|
||||||
file->block = 0xfffffffe;
|
file->block = 0xfffffffe;
|
||||||
file->off = file->pos;
|
file->off = file->pos;
|
||||||
|
|
||||||
@@ -1869,9 +1861,6 @@ lfs_ssize_t lfs_file_write(lfs_t *lfs, lfs_file_t *file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (nsize > 0) {
|
while (nsize > 0) {
|
||||||
// TODO can this be collapsed?
|
|
||||||
// TODO can we reduce this now that block 0 is never allocated?
|
|
||||||
// TODO actually, how does this behave if inline max == 0?
|
|
||||||
// check if we need a new block
|
// check if we need a new block
|
||||||
if (!(file->flags & LFS_F_WRITING) ||
|
if (!(file->flags & LFS_F_WRITING) ||
|
||||||
file->off == lfs->cfg->block_size) {
|
file->off == lfs->cfg->block_size) {
|
||||||
@@ -1969,7 +1958,6 @@ lfs_soff_t lfs_file_seek(lfs_t *lfs, lfs_file_t *file,
|
|||||||
return file->pos;
|
return file->pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO handle inlining?
|
|
||||||
int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
|
int lfs_file_truncate(lfs_t *lfs, lfs_file_t *file, lfs_off_t size) {
|
||||||
if ((file->flags & 3) == LFS_O_RDONLY) {
|
if ((file->flags & 3) == LFS_O_RDONLY) {
|
||||||
return LFS_ERR_BADF;
|
return LFS_ERR_BADF;
|
||||||
|
|||||||
@@ -27,14 +27,14 @@
|
|||||||
// Software library version
|
// Software library version
|
||||||
// Major (top-nibble), incremented on backwards incompatible changes
|
// Major (top-nibble), incremented on backwards incompatible changes
|
||||||
// Minor (bottom-nibble), incremented on feature additions
|
// Minor (bottom-nibble), incremented on feature additions
|
||||||
#define LFS_VERSION 0x00010003
|
#define LFS_VERSION 0x00010004
|
||||||
#define LFS_VERSION_MAJOR (0xffff & (LFS_VERSION >> 16))
|
#define LFS_VERSION_MAJOR (0xffff & (LFS_VERSION >> 16))
|
||||||
#define LFS_VERSION_MINOR (0xffff & (LFS_VERSION >> 0))
|
#define LFS_VERSION_MINOR (0xffff & (LFS_VERSION >> 0))
|
||||||
|
|
||||||
// Version of On-disk data structures
|
// Version of On-disk data structures
|
||||||
// Major (top-nibble), incremented on backwards incompatible changes
|
// Major (top-nibble), incremented on backwards incompatible changes
|
||||||
// Minor (bottom-nibble), incremented on feature additions
|
// Minor (bottom-nibble), incremented on feature additions
|
||||||
#define LFS_DISK_VERSION 0x00010001
|
#define LFS_DISK_VERSION 0x00010002
|
||||||
#define LFS_DISK_VERSION_MAJOR (0xffff & (LFS_DISK_VERSION >> 16))
|
#define LFS_DISK_VERSION_MAJOR (0xffff & (LFS_DISK_VERSION >> 16))
|
||||||
#define LFS_DISK_VERSION_MINOR (0xffff & (LFS_DISK_VERSION >> 0))
|
#define LFS_DISK_VERSION_MINOR (0xffff & (LFS_DISK_VERSION >> 0))
|
||||||
|
|
||||||
@@ -50,17 +50,25 @@ typedef int32_t lfs_soff_t;
|
|||||||
|
|
||||||
typedef uint32_t lfs_block_t;
|
typedef uint32_t lfs_block_t;
|
||||||
|
|
||||||
// Maximum inline file size in bytes
|
// Maximum inline file size in bytes. Large inline files require a larger
|
||||||
|
// read and prog cache, but if a file can be inline it does not need its own
|
||||||
|
// data block. LFS_ATTRS_MAX + LFS_INLINE_MAX must be <= 0xffff. Stored in
|
||||||
|
// superblock and must be respected by other littlefs drivers.
|
||||||
#ifndef LFS_INLINE_MAX
|
#ifndef LFS_INLINE_MAX
|
||||||
#define LFS_INLINE_MAX 0x3ff
|
#define LFS_INLINE_MAX 0x3ff
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Maximum size of all attributes per file in bytes
|
// Maximum size of all attributes per file in bytes, may be redefined but a
|
||||||
|
// a smaller LFS_ATTRS_MAX has no benefit. LFS_ATTRS_MAX + LFS_INLINE_MAX
|
||||||
|
// must be <= 0xffff. Stored in superblock and must be respected by other
|
||||||
|
// littlefs drivers.
|
||||||
#ifndef LFS_ATTRS_MAX
|
#ifndef LFS_ATTRS_MAX
|
||||||
#define LFS_ATTRS_MAX 0x3f
|
#define LFS_ATTRS_MAX 0x3f
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Max name size in bytes
|
// Max name size in bytes, may be redefined to reduce the size of the
|
||||||
|
// info struct. Stored in superblock and must be respected by other
|
||||||
|
// littlefs drivers.
|
||||||
#ifndef LFS_NAME_MAX
|
#ifndef LFS_NAME_MAX
|
||||||
#define LFS_NAME_MAX 0xff
|
#define LFS_NAME_MAX 0xff
|
||||||
#endif
|
#endif
|
||||||
@@ -191,11 +199,23 @@ struct lfs_config {
|
|||||||
// If enabled, only one file may be opened at a time.
|
// If enabled, only one file may be opened at a time.
|
||||||
void *file_buffer;
|
void *file_buffer;
|
||||||
|
|
||||||
// Optional,
|
// Optional upper limit on inlined files in bytes. Large inline files
|
||||||
|
// require a larger read and prog cache, but if a file can be inlined it
|
||||||
|
// does not need its own data block. Must be smaller than the read size
|
||||||
|
// and prog size. Defaults to min(LFS_INLINE_MAX, read_size) when zero.
|
||||||
|
// Stored in superblock and must be respected by other littlefs drivers.
|
||||||
lfs_size_t inline_size;
|
lfs_size_t inline_size;
|
||||||
// Optional,
|
|
||||||
|
// Optional upper limit on attributes per file in bytes. No downside for
|
||||||
|
// larger attributes size but must be less than LFS_ATTRS_MAX. Defaults to
|
||||||
|
// LFS_ATTRS_MAX when zero.Stored in superblock and must be respected by
|
||||||
|
// other littlefs drivers.
|
||||||
lfs_size_t attrs_size;
|
lfs_size_t attrs_size;
|
||||||
// Optional,
|
|
||||||
|
// Optional upper limit on length of file names in bytes. No downside for
|
||||||
|
// larger names except the size of the info struct which is controlled by
|
||||||
|
// the LFS_NAME_MAX define. Defaults to LFS_NAME_MAX when zero. Stored in
|
||||||
|
// superblock and must be respected by other littlefs drivers.
|
||||||
lfs_size_t name_size;
|
lfs_size_t name_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user