Skip to content

Commit 4b6bbbd

Browse files
committed
extmod/vfs_littlefs: Support opening multiple files at once.
1 parent a6eb00b commit 4b6bbbd

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

extmod/vfs_littlefs.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ STATIC int dev_sync(const struct lfs_config *c) {
106106
}
107107

108108
STATIC void init_config(struct lfs_config *config, mp_obj_t bdev) {
109+
memset(config, 0, sizeof(*config));
110+
109111
config->context = MP_OBJ_TO_PTR(bdev);
110112

111113
config->read = dev_read;

extmod/vfs_littlefs_file.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ typedef struct _vfs_littlefs_file_t {
3939
mp_obj_base_t base;
4040
mp_obj_vfs_littlefs_t *vfs;
4141
lfs_file_t file;
42+
struct lfs_file_config cfg;
43+
uint8_t file_buffer[0];
4244
} vfs_littlefs_file_t;
4345

4446
STATIC void vfs_littlefs_file_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {
@@ -91,13 +93,17 @@ mp_obj_t mp_vfs_littlefs_file_open(mp_obj_t self_in, mp_obj_t path_in, mp_obj_t
9193
flags = LFS_O_RDONLY;
9294
}
9395

94-
vfs_littlefs_file_t *o = m_new_obj_with_finaliser(vfs_littlefs_file_t);
96+
vfs_littlefs_file_t *o = m_new_obj_var_with_finaliser(vfs_littlefs_file_t, uint8_t, self->lfs.cfg->prog_size);
9597
o->base.type = type;
9698
o->vfs = self;
99+
#if !MICROPY_GC_CONSERVATIVE_CLEAR
97100
memset(&o->file, 0, sizeof(o->file));
101+
memset(&o->cfg, 0, sizeof(o->cfg));
102+
#endif
103+
o->cfg.buffer = &o->file_buffer[0];
98104

99105
const char *path = mp_obj_vfs_littlefs_make_path(self, path_in);
100-
int ret = lfs_file_open(&self->lfs, &o->file, path, flags);
106+
int ret = lfs_file_opencfg(&self->lfs, &o->file, path, flags, &o->cfg);
101107
if (ret < 0) {
102108
mp_raise_OSError(-ret);
103109
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy