Skip to content

Commit e702046

Browse files
committed
extmod/modvfs: Add new "vfs" module with mount/umount and Vfs classes.
They have been moved from the "os" module. Signed-off-by: Damien George <damien@micropython.org>
1 parent aaba1d8 commit e702046

7 files changed

Lines changed: 80 additions & 1 deletion

File tree

extmod/extmod.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ set(MICROPY_SOURCE_EXTMOD
4242
${MICROPY_EXTMOD_DIR}/modtls_axtls.c
4343
${MICROPY_EXTMOD_DIR}/modtls_mbedtls.c
4444
${MICROPY_EXTMOD_DIR}/modtime.c
45+
${MICROPY_EXTMOD_DIR}/modvfs.c
4546
${MICROPY_EXTMOD_DIR}/modwebsocket.c
4647
${MICROPY_EXTMOD_DIR}/modwebrepl.c
4748
${MICROPY_EXTMOD_DIR}/network_cyw43.c

extmod/extmod.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ SRC_EXTMOD_C += \
4040
extmod/modtls_mbedtls.c \
4141
extmod/modtime.c \
4242
extmod/moductypes.c \
43+
extmod/modvfs.c \
4344
extmod/modwebrepl.c \
4445
extmod/modwebsocket.c \
4546
extmod/network_cyw43.c \

extmod/modos.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ STATIC const mp_rom_map_elem_t os_module_globals_table[] = {
195195

196196
#if MICROPY_VFS
197197
{ MP_ROM_QSTR(MP_QSTR_ilistdir), MP_ROM_PTR(&mp_vfs_ilistdir_obj) },
198+
#endif
199+
200+
// The following MicroPython extensions are deprecated. Use the `vfs` module instead.
201+
#if !MICROPY_PREVIEW_VERSION_2 && MICROPY_VFS
198202
{ MP_ROM_QSTR(MP_QSTR_mount), MP_ROM_PTR(&mp_vfs_mount_obj) },
199203
{ MP_ROM_QSTR(MP_QSTR_umount), MP_ROM_PTR(&mp_vfs_umount_obj) },
200204
#if MICROPY_VFS_FAT

extmod/modvfs.c

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* This file is part of the MicroPython project, http://micropython.org/
3+
*
4+
* The MIT License (MIT)
5+
*
6+
* Copyright (c) 2023 Damien P. George
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in
16+
* all copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24+
* THE SOFTWARE.
25+
*/
26+
27+
#include "py/runtime.h"
28+
29+
#if MICROPY_PY_VFS
30+
31+
#include "extmod/vfs.h"
32+
#include "extmod/vfs_fat.h"
33+
#include "extmod/vfs_lfs.h"
34+
#include "extmod/vfs_posix.h"
35+
36+
#if !MICROPY_VFS
37+
#error "MICROPY_PY_VFS requires MICROPY_VFS"
38+
#endif
39+
40+
STATIC const mp_rom_map_elem_t vfs_module_globals_table[] = {
41+
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_vfs) },
42+
43+
{ MP_ROM_QSTR(MP_QSTR_mount), MP_ROM_PTR(&mp_vfs_mount_obj) },
44+
{ MP_ROM_QSTR(MP_QSTR_umount), MP_ROM_PTR(&mp_vfs_umount_obj) },
45+
#if MICROPY_VFS_FAT
46+
{ MP_ROM_QSTR(MP_QSTR_VfsFat), MP_ROM_PTR(&mp_fat_vfs_type) },
47+
#endif
48+
#if MICROPY_VFS_LFS1
49+
{ MP_ROM_QSTR(MP_QSTR_VfsLfs1), MP_ROM_PTR(&mp_type_vfs_lfs1) },
50+
#endif
51+
#if MICROPY_VFS_LFS2
52+
{ MP_ROM_QSTR(MP_QSTR_VfsLfs2), MP_ROM_PTR(&mp_type_vfs_lfs2) },
53+
#endif
54+
#if MICROPY_VFS_POSIX
55+
{ MP_ROM_QSTR(MP_QSTR_VfsPosix), MP_ROM_PTR(&mp_type_vfs_posix) },
56+
#endif
57+
};
58+
STATIC MP_DEFINE_CONST_DICT(vfs_module_globals, vfs_module_globals_table);
59+
60+
const mp_obj_module_t mp_module_vfs = {
61+
.base = { &mp_type_module },
62+
.globals = (mp_obj_dict_t *)&vfs_module_globals,
63+
};
64+
65+
MP_REGISTER_MODULE(MP_QSTR_vfs, mp_module_vfs);
66+
67+
#endif // MICROPY_PY_VFS

ports/cc3200/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
#define MICROPY_PY_TIME_GMTIME_LOCALTIME_MKTIME (1)
125125
#define MICROPY_PY_TIME_TIME_TIME_NS (1)
126126
#define MICROPY_PY_TIME_INCLUDEFILE "ports/cc3200/mods/modtime.c"
127+
#define MICROPY_PY_VFS (1)
127128
#define MICROPY_PY_MACHINE (1)
128129
#define MICROPY_PY_MACHINE_INCLUDEFILE "ports/cc3200/mods/modmachine.c"
129130
#define MICROPY_PY_MACHINE_BARE_METAL_FUNCS (1)

py/mpconfig.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,6 +1744,11 @@ typedef double mp_float_t;
17441744
#define MICROPY_PY_SSL_FINALISER (MICROPY_ENABLE_FINALISER)
17451745
#endif
17461746

1747+
// Whether to provide the "vfs" module
1748+
#ifndef MICROPY_PY_VFS
1749+
#define MICROPY_PY_VFS (MICROPY_CONFIG_ROM_LEVEL_AT_LEAST_EXTRA_FEATURES && MICROPY_VFS)
1750+
#endif
1751+
17471752
#ifndef MICROPY_PY_WEBSOCKET
17481753
#define MICROPY_PY_WEBSOCKET (0)
17491754
#endif

tests/ports/unix/extra_coverage.py.exp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ heapq io json machine
5959
math os platform random
6060
re select socket struct
6161
sys termios time tls
62-
uctypes websocket
62+
uctypes vfs websocket
6363
me
6464

6565
micropython machine math

0 commit comments

Comments
 (0)