From 57974beea0eb0a18ca442e6792c1f703fc3462a1 Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Fri, 28 Oct 2022 10:31:09 +0800 Subject: [PATCH 1/4] add dev_bus --- components/dfs/filesystems/devfs/devfs.c | 58 +++++++++++--- components/drivers/Kconfig | 4 + .../drivers/include/drivers/rt_dev_bus.h | 18 +++++ components/drivers/include/rtdevice.h | 4 + components/drivers/misc/SConscript | 3 + components/drivers/misc/rt_dev_bus.c | 80 +++++++++++++++++++ components/finsh/cmd.c | 1 + include/rtdef.h | 1 + 8 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 components/drivers/include/drivers/rt_dev_bus.h create mode 100644 components/drivers/misc/rt_dev_bus.c diff --git a/components/dfs/filesystems/devfs/devfs.c b/components/dfs/filesystems/devfs/devfs.c index bf3a27fe87..d6a5d3c737 100644 --- a/components/dfs/filesystems/devfs/devfs.c +++ b/components/dfs/filesystems/devfs/devfs.c @@ -181,6 +181,20 @@ int dfs_device_fs_open(struct dfs_fd *file) return RT_EOK; } +#ifdef RT_USING_DEV_BUS + else if (file->flags & O_CREAT) + { + if (!(file->flags & O_DIRECTORY)) + { + return -ENOSYS; + } + /* regester bus device */ + if (rt_device_bus_create(&file->fnode->path[1], 0) == RT_NULL) + { + return -EEXIST; + } + } +#endif device = rt_device_find(&file->fnode->path[1]); if (device == RT_NULL) @@ -223,6 +237,25 @@ int dfs_device_fs_open(struct dfs_fd *file) return -EIO; } +int dfs_device_fs_unlink(struct dfs_filesystem *fs, const char *path) +{ +#ifdef RT_USING_DEV_BUS + rt_device_t dev_id; + + dev_id = rt_device_find(&path[1]); + if (dev_id == RT_NULL) + { + return -1; + } + if (dev_id->type != RT_Device_Class_Bus) + { + return -1; + } + rt_device_bus_destroy(dev_id); +#endif + return RT_EOK; +} + int dfs_device_fs_stat(struct dfs_filesystem *fs, const char *path, struct stat *st) { /* stat root directory */ @@ -258,6 +291,8 @@ int dfs_device_fs_stat(struct dfs_filesystem *fs, const char *path, struct stat st->st_mode |= S_IFBLK; else if (dev_id->type == RT_Device_Class_Pipe) st->st_mode |= S_IFIFO; + else if (dev_id->type == RT_Device_Class_Bus) + st->st_mode |= S_IFDIR; else st->st_mode |= S_IFREG; @@ -292,7 +327,14 @@ int dfs_device_fs_getdents(struct dfs_fd *file, struct dirent *dirp, uint32_t co object = (rt_object_t)root_dirent->devices[root_dirent->read_index + index]; d = dirp + index; - d->d_type = DT_REG; + if ((((rt_device_t)object)->type) == RT_Device_Class_Bus) + { + d->d_type = DT_DIR; + } + else + { + d->d_type = DT_REG; + } d->d_namlen = RT_NAME_MAX; d->d_reclen = (rt_uint16_t)sizeof(struct dirent); rt_strncpy(d->d_name, object->name, RT_NAME_MAX); @@ -328,20 +370,18 @@ static const struct dfs_filesystem_ops _device_fs = "devfs", DFS_FS_FLAG_DEFAULT, &_device_fops, - dfs_device_fs_mount, - RT_NULL, - RT_NULL, - RT_NULL, - - RT_NULL, + RT_NULL, /*unmount*/ + RT_NULL, /*mkfs*/ + RT_NULL, /*statfs*/ + dfs_device_fs_unlink, dfs_device_fs_stat, - RT_NULL, + RT_NULL, /*rename*/ }; int devfs_init(void) { - /* register rom file system */ + /* register device file system */ dfs_register(&_device_fs); return 0; diff --git a/components/drivers/Kconfig b/components/drivers/Kconfig index d8af429134..db77fd0a45 100644 --- a/components/drivers/Kconfig +++ b/components/drivers/Kconfig @@ -515,6 +515,10 @@ if RT_USING_INPUT_CAPTURE default 100 endif +config RT_USING_DEV_BUS + bool "Using Device Bus device drivers" + default n + menuconfig RT_USING_WIFI bool "Using Wi-Fi framework" default n diff --git a/components/drivers/include/drivers/rt_dev_bus.h b/components/drivers/include/drivers/rt_dev_bus.h new file mode 100644 index 0000000000..9fe8af893c --- /dev/null +++ b/components/drivers/include/drivers/rt_dev_bus.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-10-13 flybreak the first version + */ + +#ifndef __RT_DEV_BUS_H__ +#define __RT_DEV_BUS_H__ +#include + +rt_device_t rt_device_bus_create(char *name, int attach_size); +rt_err_t rt_device_bus_destroy(rt_device_t dev); + +#endif /* __RT_BUS_H__ */ diff --git a/components/drivers/include/rtdevice.h b/components/drivers/include/rtdevice.h index 57c55fa038..375cba0566 100644 --- a/components/drivers/include/rtdevice.h +++ b/components/drivers/include/rtdevice.h @@ -147,6 +147,10 @@ extern "C" { #include "drivers/lcd.h" #endif +#ifdef RT_USING_DEV_BUS +#include "drivers/rt_dev_bus.h" +#endif + #ifdef __cplusplus } #endif diff --git a/components/drivers/misc/SConscript b/components/drivers/misc/SConscript index 927e662b19..f9fd17689e 100644 --- a/components/drivers/misc/SConscript +++ b/components/drivers/misc/SConscript @@ -23,6 +23,9 @@ if GetDepend(['RT_USING_PULSE_ENCODER']): if GetDepend(['RT_USING_INPUT_CAPTURE']): src = src + ['rt_inputcapture.c'] +if GetDepend(['RT_USING_DEV_BUS']): + src = src + ['rt_dev_bus.c'] + if GetDepend(['RT_USING_NULL']): src = src + ['rt_null.c'] diff --git a/components/drivers/misc/rt_dev_bus.c b/components/drivers/misc/rt_dev_bus.c new file mode 100644 index 0000000000..3e1d365b00 --- /dev/null +++ b/components/drivers/misc/rt_dev_bus.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2022-10-13 flybreak the first version + */ + +#include +#include + +#include +#include + +#define DBG_TAG "dev_bus" +#define DBG_LVL DBG_INFO +#include + +#if defined(RT_USING_POSIX) +#include +#include +#include +#include +#include + +static int bus_fops_open(struct dfs_fd *fd) +{ + LOG_D("bus fops open"); + return 0; +} + +static int bus_fops_close(struct dfs_fd *fd) +{ + LOG_D("bus fops close"); + return 0; +} + +static const struct dfs_file_ops bus_fops = +{ + bus_fops_open, + bus_fops_close, + RT_NULL, + RT_NULL, + RT_NULL, + RT_NULL, + RT_NULL, + RT_NULL, + RT_NULL, +}; +#endif + +rt_device_t rt_device_bus_create(char *name, int attach_size) +{ + rt_err_t result = RT_EOK; + rt_device_t dev = rt_device_create(RT_Device_Class_Bus, 0); + + result = rt_device_register(dev, name, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_REMOVABLE); + if (result < 0) + { + rt_kprintf("dev bus [%s] register failed!, ret=%d\n", name, result); + return RT_NULL; + } +#if defined(RT_USING_POSIX) + dev->fops = &bus_fops; +#endif + + LOG_D("bus create"); + return dev; +} + +rt_err_t rt_device_bus_destroy(rt_device_t dev) +{ + rt_device_unregister(dev); + dev->parent.type = RT_Object_Class_Device; + rt_device_destroy(dev); + LOG_D("bus destroy"); + return RT_EOK; +} diff --git a/components/finsh/cmd.c b/components/finsh/cmd.c index 2d136814e8..58a8562856 100644 --- a/components/finsh/cmd.c +++ b/components/finsh/cmd.c @@ -811,6 +811,7 @@ static char *const device_type_str[] = "Sensor Device", "Touch Device", "Phy Device", + "Bus Device", "Unknown" }; diff --git a/include/rtdef.h b/include/rtdef.h index df739e7aad..19c5f4039f 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -997,6 +997,7 @@ enum rt_device_class_type RT_Device_Class_Sensor, /**< Sensor device */ RT_Device_Class_Touch, /**< Touch device */ RT_Device_Class_PHY, /**< PHY device */ + RT_Device_Class_Bus, /**< Bus device */ RT_Device_Class_Unknown /**< unknown device */ }; -- Gitee From c8c6371e968ec136c59b9d42a9c49f9f0b65974c Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Fri, 28 Oct 2022 11:33:18 +0800 Subject: [PATCH 2/4] [bsp] qemu-vexpress-a9 mount /dev/shm --- bsp/qemu-vexpress-a9/.config | 271 ++++++++++++++++++++++-- bsp/qemu-vexpress-a9/applications/mnt.c | 8 + bsp/qemu-vexpress-a9/rtconfig.h | 55 ++++- 3 files changed, 318 insertions(+), 16 deletions(-) diff --git a/bsp/qemu-vexpress-a9/.config b/bsp/qemu-vexpress-a9/.config index 3f8ba34cf9..746c682ff9 100644 --- a/bsp/qemu-vexpress-a9/.config +++ b/bsp/qemu-vexpress-a9/.config @@ -64,6 +64,7 @@ CONFIG_RT_USING_HEAP=y # CONFIG_RT_USING_DEVICE=y CONFIG_RT_USING_DEVICE_OPS=y +# CONFIG_RT_USING_DM is not set CONFIG_RT_USING_INTERRUPT_INFO=y CONFIG_RT_USING_CONSOLE=y CONFIG_RT_CONSOLEBUF_SIZE=256 @@ -71,6 +72,7 @@ CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" CONFIG_RT_VER_NUM=0x50000 CONFIG_RT_USING_CACHE=y # CONFIG_RT_USING_CPU_FFS is not set +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set # CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set CONFIG_ARCH_MM_MMU=y CONFIG_ARCH_ARM=y @@ -120,7 +122,7 @@ CONFIG_FINSH_ARG_MAX=10 # CONFIG_RT_USING_DFS=y CONFIG_DFS_USING_WORKDIR=y -CONFIG_DFS_FILESYSTEMS_MAX=4 +CONFIG_DFS_FILESYSTEMS_MAX=6 CONFIG_DFS_FILESYSTEM_TYPES_MAX=8 CONFIG_DFS_FD_MAX=32 # CONFIG_RT_USING_DFS_MNTTABLE is not set @@ -145,6 +147,7 @@ CONFIG_RT_USING_DFS_DEVFS=y CONFIG_RT_USING_DFS_ROMFS=y # CONFIG_RT_USING_DFS_CROMFS is not set CONFIG_RT_USING_DFS_RAMFS=y +CONFIG_RT_USING_DFS_TMPFS=y # CONFIG_RT_USING_DFS_UFFS is not set # CONFIG_RT_USING_DFS_JFFS2 is not set # CONFIG_RT_USING_DFS_NFS is not set @@ -182,6 +185,7 @@ CONFIG_RT_USING_MTD_NOR=y CONFIG_RT_USING_MTD_NAND=y CONFIG_RT_MTD_NAND_DEBUG=y # CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_FDT is not set CONFIG_RT_USING_RTC=y # CONFIG_RT_USING_ALARM is not set CONFIG_RT_USING_SOFT_RTC=y @@ -207,10 +211,13 @@ CONFIG_RT_USING_WDT=y # CONFIG_RT_USING_AUDIO is not set # CONFIG_RT_USING_SENSOR is not set # CONFIG_RT_USING_TOUCH is not set +# CONFIG_RT_USING_LCD is not set # CONFIG_RT_USING_HWCRYPTO is not set # CONFIG_RT_USING_PULSE_ENCODER is not set # CONFIG_RT_USING_INPUT_CAPTURE is not set +CONFIG_RT_USING_DEV_BUS=y # CONFIG_RT_USING_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set # # Using USB @@ -248,6 +255,7 @@ CONFIG_RT_USING_SAL=y # CONFIG_SAL_USING_LWIP=y CONFIG_SAL_USING_POSIX=y +# CONFIG_SAL_USING_AF_UNIX is not set # # Network interface device @@ -290,13 +298,20 @@ CONFIG_RT_LWIP_TCP=y CONFIG_RT_LWIP_RAW=y # CONFIG_RT_LWIP_PPP is not set CONFIG_RT_MEMP_NUM_NETCONN=8 +CONFIG_RT_MEMP_NUM_TCPIP_MSG_API=16 +CONFIG_RT_MEMP_NUM_TCPIP_MSG_INPKT=16 CONFIG_RT_LWIP_PBUF_NUM=16 +CONFIG_RT_LWIP_PBUF_STRUCT_NUM=16 +CONFIG_RT_LWIP_NETBUF_NUM=16 CONFIG_RT_LWIP_RAW_PCB_NUM=4 CONFIG_RT_LWIP_UDP_PCB_NUM=4 +CONFIG_RT_UDP_RECVMBOX_SIZE=16 +CONFIG_RT_RECV_BUFSIZE_DEFAULT=64 CONFIG_RT_LWIP_TCP_PCB_NUM=4 CONFIG_RT_LWIP_TCP_SEG_NUM=40 CONFIG_RT_LWIP_TCP_SND_BUF=8196 CONFIG_RT_LWIP_TCP_WND=8196 +CONFIG_RT_TCP_RECVMBOX_SIZE=16 CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10 CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8 CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=2048 @@ -354,6 +369,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # # IoT - internet of things # +# CONFIG_PKG_USING_LWIP is not set # CONFIG_PKG_USING_LORAWAN_DRIVER is not set # CONFIG_PKG_USING_PAHOMQTT is not set # CONFIG_PKG_USING_UMQTT is not set @@ -364,12 +380,8 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_KAWAII_MQTT is not set # CONFIG_PKG_USING_BC28_MQTT is not set # CONFIG_PKG_USING_WEBTERMINAL is not set -# CONFIG_PKG_USING_CJSON is not set -# CONFIG_PKG_USING_JSMN is not set # CONFIG_PKG_USING_LIBMODBUS is not set # CONFIG_PKG_USING_FREEMODBUS is not set -# CONFIG_PKG_USING_LJSON is not set -# CONFIG_PKG_USING_EZXML is not set # CONFIG_PKG_USING_NANOPB is not set # @@ -407,7 +419,10 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_JIOT-C-SDK is not set # CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set # CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set # CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set # CONFIG_PKG_USING_OTA_DOWNLOADER is not set # CONFIG_PKG_USING_IPMSG is not set # CONFIG_PKG_USING_LSSDP is not set @@ -421,16 +436,13 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_ABUP_FOTA is not set # CONFIG_PKG_USING_LIBCURL2RTT is not set # CONFIG_PKG_USING_CAPNP is not set -# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set # CONFIG_PKG_USING_AGILE_TELNET is not set # CONFIG_PKG_USING_NMEALIB is not set -# CONFIG_PKG_USING_AGILE_JSMN is not set # CONFIG_PKG_USING_PDULIB is not set # CONFIG_PKG_USING_BTSTACK is not set # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set # CONFIG_PKG_USING_WAYZ_IOTKIT is not set # CONFIG_PKG_USING_MAVLINK is not set -# CONFIG_PKG_USING_RAPIDJSON is not set # CONFIG_PKG_USING_BSAL is not set # CONFIG_PKG_USING_AGILE_MODBUS is not set # CONFIG_PKG_USING_AGILE_FTP is not set @@ -441,12 +453,15 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set # CONFIG_PKG_USING_HM is not set # CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set # # security packages # # CONFIG_PKG_USING_MBEDTLS is not set # CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set # CONFIG_PKG_USING_TINYCRYPT is not set # CONFIG_PKG_USING_TFM is not set # CONFIG_PKG_USING_YD_CRYPTO is not set @@ -454,10 +469,29 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # # language packages # + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML is not set +# CONFIG_PKG_USING_LUATOS_SOC is not set # CONFIG_PKG_USING_LUA is not set # CONFIG_PKG_USING_JERRYSCRIPT is not set # CONFIG_PKG_USING_MICROPYTHON is not set # CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set # # multimedia packages @@ -469,6 +503,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_LVGL is not set # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set # # u8g2: a monochrome graphic library @@ -497,6 +532,9 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_MCURSES is not set # CONFIG_PKG_USING_TERMBOX is not set # CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set +# CONFIG_PKG_USING_PERSIMMON is not set # # tools packages @@ -507,7 +545,6 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_SYSTEMVIEW is not set # CONFIG_PKG_USING_SEGGER_RTT is not set # CONFIG_PKG_USING_RDB is not set -# CONFIG_PKG_USING_QRCODE is not set # CONFIG_PKG_USING_ULOG_EASYFLASH is not set # CONFIG_PKG_USING_ULOG_FILE is not set # CONFIG_PKG_USING_LOGMGR is not set @@ -540,6 +577,12 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_SOLAR_TERMS is not set # CONFIG_PKG_USING_GAN_ZHI is not set # CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set # # system packages @@ -563,6 +606,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CMSIS: ARM Cortex-M Microcontroller Software Interface Standard # # CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set # CONFIG_PKG_USING_CMSIS_RTOS2 is not set # @@ -574,13 +618,11 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_UC_CLK is not set # CONFIG_PKG_USING_UC_COMMON is not set # CONFIG_PKG_USING_UC_MODBUS is not set -# CONFIG_RT_USING_ARDUINO is not set -# CONFIG_PKG_USING_GUIENGINE is not set -# CONFIG_PKG_USING_PERSIMMON is not set +# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set # CONFIG_PKG_USING_CAIRO is not set # CONFIG_PKG_USING_PIXMAN is not set # CONFIG_PKG_USING_PARTITION is not set -# CONFIG_PKG_USING_FAL is not set +# CONFIG_PKG_USING_PERF_COUNTER is not set # CONFIG_PKG_USING_FLASHDB is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set @@ -604,10 +646,13 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_TLSF is not set # CONFIG_PKG_USING_EVENT_RECORDER is not set # CONFIG_PKG_USING_ARM_2D is not set -# CONFIG_PKG_USING_WCWIDTH is not set # CONFIG_PKG_USING_MCUBOOT is not set # CONFIG_PKG_USING_TINYUSB is not set -# CONFIG_PKG_USING_USB_STACK is not set +# CONFIG_PKG_USING_CHERRYUSB is not set +# CONFIG_PKG_USING_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set +# CONFIG_PKG_USING_AGILE_UPGRADE is not set # # peripheral libraries and drivers @@ -616,8 +661,10 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_REALTEK_AMEBA is not set # CONFIG_PKG_USING_SHT2X is not set # CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_ADT74XX is not set # CONFIG_PKG_USING_AS7341 is not set # CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set # CONFIG_PKG_USING_ICM20608 is not set # CONFIG_PKG_USING_BUTTON is not set # CONFIG_PKG_USING_PCF8574 is not set @@ -629,8 +676,14 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_NRF5X_SDK is not set # CONFIG_PKG_USING_NRFX is not set # CONFIG_PKG_USING_WM_LIBRARIES is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set # CONFIG_PKG_USING_KENDRYTE_SDK is not set # CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set # CONFIG_PKG_USING_AGILE_BUTTON is not set # CONFIG_PKG_USING_AGILE_LED is not set # CONFIG_PKG_USING_AT24CXX is not set @@ -664,6 +717,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_SSD1306 is not set # CONFIG_PKG_USING_QKEY is not set # CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set # CONFIG_PKG_USING_NES is not set # CONFIG_PKG_USING_VIRTUAL_SENSOR is not set # CONFIG_PKG_USING_VDEVICE is not set @@ -681,9 +735,15 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_BLUETRUM_SDK is not set # CONFIG_PKG_USING_MISAKA_AT24CXX is not set # CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set # CONFIG_PKG_USING_BL_MCU_SDK is not set # CONFIG_PKG_USING_SOFT_SERIAL is not set # CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set +# CONFIG_PKG_USING_LRF_NV7LIDAR is not set # # AI packages @@ -702,6 +762,10 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # miscellaneous packages # +# +# project laboratory +# + # # samples: kernel and components samples # @@ -734,6 +798,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_CANFESTIVAL is not set # CONFIG_PKG_USING_ZLIB is not set # CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set # CONFIG_PKG_USING_DSTR is not set # CONFIG_PKG_USING_TINYFRAME is not set # CONFIG_PKG_USING_KENDRYTE_DEMO is not set @@ -749,6 +814,182 @@ CONFIG_RT_LWP_SHM_MAX_NR=64 # CONFIG_PKG_USING_LWGPS is not set # CONFIG_PKG_USING_STATE_MACHINE is not set # CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Projects +# +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set + +# +# Sensors +# +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set +# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set + +# +# Display +# +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set + +# +# Timing +# +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set + +# +# Data Processing +# +# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set +# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set + +# +# Data Storage +# + +# +# Communication +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set + +# +# Device Control +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set + +# +# Other +# + +# +# Signal IO +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set + +# +# Uncategorized +# CONFIG_SOC_VEXPRESS_A9=y CONFIG_RT_USING_UART0=y CONFIG_RT_USING_UART1=y diff --git a/bsp/qemu-vexpress-a9/applications/mnt.c b/bsp/qemu-vexpress-a9/applications/mnt.c index 0fc9b62860..ae927f583d 100644 --- a/bsp/qemu-vexpress-a9/applications/mnt.c +++ b/bsp/qemu-vexpress-a9/applications/mnt.c @@ -19,6 +19,14 @@ int mnt_init(void) return -1; } +#if defined(RT_USING_DEV_BUS) && defined(RT_USING_DFS_TMPFS) + mkdir("/dev/shm", 0x777); + if (dfs_mount(RT_NULL, "/dev/shm", "tmp", 0, 0) != 0) + { + rt_kprintf("Dir /dev/shm mount failed!\n"); + } +#endif + rt_kprintf("file system initialization done!\n"); return 0; } diff --git a/bsp/qemu-vexpress-a9/rtconfig.h b/bsp/qemu-vexpress-a9/rtconfig.h index eefc4acb13..c78fbc529b 100644 --- a/bsp/qemu-vexpress-a9/rtconfig.h +++ b/bsp/qemu-vexpress-a9/rtconfig.h @@ -88,7 +88,7 @@ #define RT_USING_DFS #define DFS_USING_WORKDIR -#define DFS_FILESYSTEMS_MAX 4 +#define DFS_FILESYSTEMS_MAX 6 #define DFS_FILESYSTEM_TYPES_MAX 8 #define DFS_FD_MAX 32 #define RT_USING_DFS_ELMFAT @@ -106,6 +106,7 @@ #define RT_USING_DFS_DEVFS #define RT_USING_DFS_ROMFS #define RT_USING_DFS_RAMFS +#define RT_USING_DFS_TMPFS /* Device Drivers */ @@ -143,6 +144,7 @@ #define RT_SFUD_USING_FLASH_INFO_TABLE #define RT_SFUD_SPI_MAX_HZ 50000000 #define RT_USING_WDT +#define RT_USING_DEV_BUS /* Using USB */ @@ -200,13 +202,20 @@ #define RT_LWIP_TCP #define RT_LWIP_RAW #define RT_MEMP_NUM_NETCONN 8 +#define RT_MEMP_NUM_TCPIP_MSG_API 16 +#define RT_MEMP_NUM_TCPIP_MSG_INPKT 16 #define RT_LWIP_PBUF_NUM 16 +#define RT_LWIP_PBUF_STRUCT_NUM 16 +#define RT_LWIP_NETBUF_NUM 16 #define RT_LWIP_RAW_PCB_NUM 4 #define RT_LWIP_UDP_PCB_NUM 4 +#define RT_UDP_RECVMBOX_SIZE 16 +#define RT_RECV_BUFSIZE_DEFAULT 64 #define RT_LWIP_TCP_PCB_NUM 4 #define RT_LWIP_TCP_SEG_NUM 40 #define RT_LWIP_TCP_SND_BUF 8196 #define RT_LWIP_TCP_WND 8196 +#define RT_TCP_RECVMBOX_SIZE 16 #define RT_LWIP_TCPTHREAD_PRIORITY 10 #define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 #define RT_LWIP_TCPTHREAD_STACKSIZE 2048 @@ -261,6 +270,11 @@ /* language packages */ +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + /* multimedia packages */ @@ -293,16 +307,55 @@ /* peripheral libraries and drivers */ +/* Kendryte SDK */ + + /* AI packages */ /* miscellaneous packages */ +/* project laboratory */ + /* samples: kernel and components samples */ /* entertainment: terminal games and other interesting software packages */ + +/* Arduino libraries */ + + +/* Projects */ + + +/* Sensors */ + + +/* Display */ + + +/* Timing */ + + +/* Data Processing */ + + +/* Data Storage */ + +/* Communication */ + + +/* Device Control */ + + +/* Other */ + +/* Signal IO */ + + +/* Uncategorized */ + #define SOC_VEXPRESS_A9 #define RT_USING_UART0 #define RT_USING_UART1 -- Gitee From da6552a1855425ce7a240e8062a37fcfa78790e6 Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Fri, 28 Oct 2022 11:42:01 +0800 Subject: [PATCH 3/4] [tmpfs] improve code. --- components/dfs/filesystems/tmpfs/dfs_tmpfs.c | 62 +++++++++++++++----- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/components/dfs/filesystems/tmpfs/dfs_tmpfs.c b/components/dfs/filesystems/tmpfs/dfs_tmpfs.c index d0f4cce851..a6d2d66140 100644 --- a/components/dfs/filesystems/tmpfs/dfs_tmpfs.c +++ b/components/dfs/filesystems/tmpfs/dfs_tmpfs.c @@ -12,8 +12,11 @@ #include #include #include + +#ifdef RT_USING_LWP #include #include +#endif #include "dfs_tmpfs.h" @@ -80,6 +83,8 @@ static int _free_subdir(struct tmpfs_file *dfile) struct tmpfs_file *file; rt_list_t *list, *temp_list; + RT_DEFINE_SPINLOCK(lock); + RT_ASSERT(dfile->type == TMPFS_TYPE_DIR); rt_list_for_each_safe(list, temp_list, &dfile->subdirs) @@ -94,7 +99,9 @@ static int _free_subdir(struct tmpfs_file *dfile) /* TODO: fix for rt-smart */ rt_free(file->data); } + rt_hw_spin_lock(lock); rt_list_remove(&(file->sibling)); + rt_hw_spin_unlock(lock); rt_free(file); } return 0; @@ -165,22 +172,26 @@ int dfs_tmpfs_ioctl(struct dfs_fd *file, int cmd, void *args) switch (cmd) { - case RT_FIOMMAP2: +#ifdef RT_USING_LWP + case RT_FIOMMAP2: + { + struct dfs_mmap2_args *mmap2 = (struct dfs_mmap2_args *)args; + if (mmap2) { - struct dfs_mmap2_args *mmap2 = (struct dfs_mmap2_args *)args; - if (mmap2) + if (mmap2->length > file->fnode->size) { - if (mmap2->length > file->fnode->size) - { - return -RT_ENOMEM; - } - - LOG_D("tmpfile mmap ptr:%x , size:%d\n", d_file->data, mmap2->length); - mmap2->ret = lwp_map_user_phy(lwp_self(), RT_NULL, d_file->data, mmap2->length, 0); + return -RT_ENOMEM; } - return RT_EOK; - break; + + LOG_D("tmpfile mmap ptr:%x , size:%d\n", d_file->data, mmap2->length); + mmap2->ret = lwp_map_user_phy(lwp_self(), RT_NULL, d_file->data, mmap2->length, 0); } + return RT_EOK; + break; + } +#endif + default: + break; } return -EIO; } @@ -194,6 +205,8 @@ struct tmpfs_file *dfs_tmpfs_lookup(struct tmpfs_sb *superblock, struct tmpfs_file *file, *curfile; rt_list_t *list; + RT_DEFINE_SPINLOCK(lock); + subpath = path; while (*subpath == '/' && *subpath) subpath ++; @@ -218,6 +231,8 @@ find_subpath: memset(subdir_name, 0, TMPFS_NAME_MAX); _get_subdir(curpath, subdir_name); + rt_hw_spin_lock(lock); + rt_list_for_each(list, &curfile->subdirs) { file = rt_list_entry(list, struct tmpfs_file, sibling); @@ -226,6 +241,8 @@ find_subpath: if (rt_strcmp(file->name, filename) == 0) { *size = file->size; + + rt_hw_spin_unlock(lock); return file; } } @@ -234,10 +251,11 @@ find_subpath: *size = file->size; curpath = subpath; curfile = file; + rt_hw_spin_unlock(lock); goto find_subpath; } } - + rt_hw_spin_unlock(lock); /* not found */ return NULL; } @@ -336,6 +354,8 @@ int dfs_tmpfs_open(struct dfs_fd *file) struct dfs_filesystem *fs; char parent_path[DFS_PATH_MAX],file_name[TMPFS_NAME_MAX]; + RT_DEFINE_SPINLOCK(lock); + RT_ASSERT(file->fnode->ref_count > 0); if (file->fnode->ref_count > 1) { @@ -397,7 +417,9 @@ int dfs_tmpfs_open(struct dfs_fd *file) { d_file->type = TMPFS_TYPE_FILE; } + rt_hw_spin_lock(lock); rt_list_insert_after(&(p_file->subdirs), &(d_file->sibling)); + rt_hw_spin_unlock(lock); } /* Creates a new file. * If the file is existing, it is truncated and overwritten. @@ -534,6 +556,8 @@ int dfs_tmpfs_unlink(struct dfs_filesystem *fs, const char *path) struct tmpfs_sb *superblock; struct tmpfs_file *d_file; + RT_DEFINE_SPINLOCK(lock); + superblock = (struct tmpfs_sb *)fs->data; RT_ASSERT(superblock != NULL); @@ -541,7 +565,10 @@ int dfs_tmpfs_unlink(struct dfs_filesystem *fs, const char *path) if (d_file == NULL) return -ENOENT; + rt_hw_spin_lock(lock); rt_list_remove(&(d_file->sibling)); + rt_hw_spin_unlock(lock); + if (d_file->data != NULL) rt_free(d_file->data); rt_free(d_file); @@ -558,6 +585,8 @@ int dfs_tmpfs_rename(struct dfs_filesystem *fs, rt_size_t size; char parent_path[DFS_PATH_MAX],file_name[TMPFS_NAME_MAX]; + RT_DEFINE_SPINLOCK(lock); + superblock = (struct tmpfs_sb *)fs->data; RT_ASSERT(superblock != NULL); @@ -577,10 +606,15 @@ int dfs_tmpfs_rename(struct dfs_filesystem *fs, p_file = dfs_tmpfs_lookup(superblock, parent_path, &size); RT_ASSERT(p_file != NULL); + rt_hw_spin_lock(lock); rt_list_remove(&(d_file->sibling)); - + rt_hw_spin_unlock(lock); + strncpy(d_file->name, file_name, TMPFS_NAME_MAX); + + rt_hw_spin_lock(lock); rt_list_insert_after(&(p_file->subdirs), &(d_file->sibling)); + rt_hw_spin_unlock(lock); return RT_EOK; } -- Gitee From fa2381fbad95633442604cda2f09a80031fd7cae Mon Sep 17 00:00:00 2001 From: guozhanxin Date: Sat, 29 Oct 2022 11:02:32 +0800 Subject: [PATCH 4/4] [update] DEV_BUS default y if RT_USING_LWP --- components/drivers/Kconfig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/drivers/Kconfig b/components/drivers/Kconfig index db77fd0a45..31a109cd4f 100644 --- a/components/drivers/Kconfig +++ b/components/drivers/Kconfig @@ -517,7 +517,8 @@ endif config RT_USING_DEV_BUS bool "Using Device Bus device drivers" - default n + default y if RT_USING_LWP + default n if !RT_USING_LWP menuconfig RT_USING_WIFI bool "Using Wi-Fi framework" -- Gitee