Added LFS_T_RDONLY, LFS_T_RDWR, etc
These mimic the relevant LFS_O_* flags, and allow users to assert
whether or not a traversal will mutate the filesystem:
LFS_T_MODE 0x00000001 The traversal's access mode
LFS_T_RDWR 0x00000000 Open traversal as read and write
LFS_T_RDONLY 0x00000001 Open traversal as read only
In theory, these could also change internal allocations, but littlefs
doesn't really work that way.
Note we _don't_ add related LFS_GC_RDONLY, LFS_GC_RDWR, etc flags. These
are sort of implied by the relevant LFS_M_* flags.
Adds a bit more code, probably because of the slightly more complicated
internal constants for the internal traversals. But I think the
self-documentingness is worth it:
code stack ctx
before: 37200 2288 636
after: 37220 (+0.1%) 2288 (+0.0%) 636 (+0.0%)
This commit is contained in:
@@ -182,7 +182,8 @@ code = '''
|
||||
|
||||
lfsr_traversal_t t;
|
||||
lfsr_traversal_init(&t,
|
||||
(CKMETA) ? LFS_T_CKMETA : 0);
|
||||
LFS_T_RDONLY
|
||||
| ((CKMETA) ? LFS_T_CKMETA : 0));
|
||||
for (lfs_block_t i = 0;; i++) {
|
||||
// a bit hacky, but this catches infinite loops
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
@@ -352,7 +353,8 @@ code = '''
|
||||
|
||||
lfsr_traversal_t t;
|
||||
lfsr_traversal_init(&t,
|
||||
((CKMETA) ? LFS_T_CKMETA : 0));
|
||||
LFS_T_RDONLY
|
||||
| ((CKMETA) ? LFS_T_CKMETA : 0));
|
||||
for (lfs_block_t i = 0;; i++) {
|
||||
// a bit hacky, but this catches infinite loops
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
@@ -508,7 +510,8 @@ code = '''
|
||||
|
||||
lfsr_traversal_t t;
|
||||
lfsr_traversal_init(&t,
|
||||
((CKMETA) ? LFS_T_CKMETA : 0));
|
||||
LFS_T_RDONLY
|
||||
| ((CKMETA) ? LFS_T_CKMETA : 0));
|
||||
for (lfs_block_t i = 0;; i++) {
|
||||
// a bit hacky, but this catches infinite loops
|
||||
assert(i < 2*BLOCK_COUNT);
|
||||
|
||||
Reference in New Issue
Block a user