Far
b7f906ef8a
fix: 修复文件系统不合理的锁操作
...
1. 移除了fatfs和littlefs中冗余的加锁操作。
2. 增加了配置选项FS_LOCK_TIMEOUT(宏LOSCFG_FS_LOCK_TIMEOUT),提供配置
文件系统获取锁超时能力。
3. 新增对外接口LOS_FsLock()和LOS_FsUnlock()接口,提供HAL层与文件系统的
互斥操作。
BREAKING CHANGE:
修复文件系统不合理的锁操作
新增API:
los_fs.h:
int LOS_FsLock(void)
int LOS_FsUnlock(void)
新增配置项:
LOSCFG_FS_LOCK_TIMEOUT(menuconfig FS_LOCK_TIMEOUT)
fix #I66S2J
Signed-off-by: Far <yesiyuan2@huawei.com>
Change-Id: I2ae9b6b5e2c788b2f4a00d9678a0240d00c335eb
2022-12-22 10:41:31 +08:00
arvinzzz
98da8bbdfb
refactor: vfs opt
...
1. vfs重构优化,统一fs模块的对外接口,减少不必要的冗余调用,由fs组件直接提供posix对外接口
2. vfs与libc关系整理
3. fs接口实现规范化
BREAKING CHANGE:
删除API:
int LOS_Open(const char *path, int flags, ...);
int LOS_Close(int fd);
ssize_t LOS_Read(int fd, void *buff, size_t bytes);
ssize_t LOS_Write(int fd, const void *buff, size_t bytes);
off_t LOS_Lseek(int fd, off_t off, int whence);
int LOS_Stat(const char *path, struct stat *stat);
int LOS_Statfs(const char *path, struct statfs *buf);
int LOS_Unlink(const char *path);
int LOS_Rename(const char *oldpath, const char *newpath);
int LOS_Fsync(int fd);
DIR *LOS_Opendir(const char *path);
struct dirent *LOS_Readdir(DIR *dir);
int LOS_Closedir(DIR *dir);
int LOS_Mkdir(const char *path, mode_t mode);
int LOS_Rmdir(const char *path);
int LOS_Lstat(const char *path, struct stat *buffer);
int LOS_Fstat(int fd, struct stat *buf);
int LOS_Fcntl(int fd, int cmd, ...);
int LOS_Ioctl(int fd, int req, ...);
ssize_t LOS_Readv(int fd, const struct iovec *iovBuf, int iovcnt);
ssize_t LOS_Writev(int fd, const struct iovec *iovBuf, int iovcnt);
ssize_t LOS_Pread(int fd, void *buff, size_t bytes, off_t off);
ssize_t LOS_Pwrite(int fd, const void *buff, size_t bytes, off_t off);
int LOS_Isatty(int fd);
int LOS_Access(const char *path, int amode);
int LOS_Ftruncate(int fd, off_t length);
int LOS_FsUmount(const char *target);
int LOS_FsUmount2(const char *target, int flag);
int LOS_FsMount(const char *source, const char *target,
const char *fsType, unsigned long mountflags,
const void *data);
int OsFcntl(int fd, int cmd, va_list ap);
int OsIoctl(int fd, int req, va_list ap);
Close #I65MNQ
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
Change-Id: I3d16852ffb87ab061c22b22f5873eba384842101
2022-12-13 16:56:18 +08:00
Hongjin Li
a3ce436841
fix: 提供CONFIG_NFILE_DESCRIPTORS宏标识最大可打开fd数量
...
提供CONFIG_NFILE_DESCRIPTORS宏,标识最大可打开fd数量。
提供FAT_MAX_OPEN_FILES宏,标识FAT文件系统中最大可打开fd数量。
如果只有FAT文件系统,那么CONFIG_NFILE_DESCRIPTORS等于FAT_MAX_OPEN_FILES。
如果有多个文件系统,比如fat+little+yaffs,那么CONFIG_NFILE_DESCRIPTORS应该定义为多个文件系统可打开fd数量之和。
BREAKING CHANGE:
对外提供的CONFIG_NFILE_DESCRIPTORS宏,用来标识最大可打开fd数量。
开发者可以在target_config.h中自定义CONFIG_NFILE_DESCRIPTORS和FAT_MAX_OPEN_FILES宏。
Close #I62WDU
Signed-off-by: Hongjin Li <lihongjin1@huawei.com>
2022-12-06 10:11:13 +08:00
openharmony_ci
795c2db917
!933 fs增加注册接口
...
Merge pull request !933 from wangchen/1124_m
2022-12-01 06:18:16 +00:00
wangchen
2f334bed21
feat: fs增加注册接口
...
方案描述:
增加注册机制, 并增加重复注册判断
BREAKING CHANGE:
fs增加注册接口
新增API:
int LOS_FsRegister(const char *fsType, const struct MountOps *fsMops,
const struct FileOps *fsFops, const struct FsManagement *fsMgt);
fix #I611L2
Signed-off-by: wangchen <wangchen240@huawei.com>
https://gitee.com/openharmony/kernel_liteos_m/issues/I611L2
2022-12-01 02:50:05 +00:00
Hongjin Li
a859329f28
fix: 使用LOSCFG_FS_FREE_HOOK释放内存
...
文件系统中使用LOSCFG_FS_FREE_HOOK代替free()来释放内存。
close #I6412J
Signed-off-by: Hongjin Li <lihongjin1@huawei.com>
2022-12-01 09:33:32 +08:00
openharmony_ci
68b8deea89
!937 添加MAX_OPEN_DIRS宏,标识最大可打开dir数量
...
Merge pull request !937 from Hongjin Li/max_open_dirs
2022-11-29 11:38:36 +00:00
Hongjin Li
a288718c2c
fix: 添加LOSCFG_MAX_OPEN_DIRS标识最大可打开dir数量
...
提供LOSCFG_MAX_OPEN_DIRS宏定义,标识最大可打开dir数量。新增g_dirNum静态变量,标识已打开的dir数量。
在opendir成功时g_dirNum++,在closedir成功时g_dirNum--。
BREAKING CHANGE:
新增LOSCFG_MAX_OPEN_DIRS宏定义,标识最大可打开dir数量。
fix: I62XEA
Signed-off-by: Hongjin Li <lihongjin1@huawei.com>
2022-11-29 19:05:00 +08:00
openharmony_ci
019dab8db4
!941 文件系统提供动态内存分配器钩子
...
Merge pull request !941 from Far/LOS_FS_MALLOC
2022-11-28 14:36:29 +00:00
Far
f190275664
feat: 文件系统提供动态内存分配器钩子
...
增加LOS_FS_MALLOC/LOS_FS_FREE宏以提供用户配置动态内存分配器的能力。
用户只需要在components/fs/vfs/los_fs.h中修改对应的函数即可。
BREAKING CHANGE:
文件系统提供动态内存分配器钩子
新增宏:
LOS_FS_MALLOC
LOS_FS_FREE
fix #I63IJW
Signed-off-by: Far <yesiyuan2@huawei.com>
Change-Id: I20cb41f621a2e22d74749583f546d550ba127b72
2022-11-28 20:02:20 +08:00
wangchen
97a638bc1c
fix: vfs 分区格式化逻辑修改
...
方案描述:
1,删除fat分区时调用的adddevice的动作
2,修改格式化的判断逻辑
fix #I63FDV
Signed-off-by: wangchen <wangchen240@huawei.com>
2022-11-28 03:53:54 +00:00
openharmony_ci
d120f1e57a
!921 其他分区已mount时会引起格式化失败
...
Merge pull request !921 from wangchen/1117_m
2022-11-18 09:34:41 +00:00
wangchen
08436dec9e
fix: 其他分区已mount时会引起格式化失败
...
【背景】其他分区已mount时会引起格式化失败
【修改方案】
1, 格式化时判断方式修改为路径
【影响】
对现有的产品编译不会有影响。
re #I61P4K
Signed-off-by: wangchen <wangchen240@huawei.com>
2022-11-18 06:31:12 +00:00
Hongjin Li
2dc3998956
fix: add space after comma
...
Signed-off-by: Hongjin Li <lihongjin1@huawei.com>
2022-11-17 20:15:53 +08:00
Far
64d15df9ea
fix: fix the MS_REMOUNT support
...
The mount interface can't deal with MS_REMOUNT flag now, fix it.
Signed-off-by: Far <yesiyuan2@huawei.com>
Change-Id: Id0960c8d92ce767b8d8ef98b3ba2e1d1ab7db15d
2022-11-15 17:05:21 +08:00
arvinzzz
474201593d
feat: 提供死机场景下dump文件的能力
...
死机场景下,vfs层锁会放开,提供dump文件的能力
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
Change-Id: Id8c9e63fbf011dbc6690b9b4557bd3370353bf21
2022-11-05 17:58:37 +08:00
Far
296a546bcd
fix: 修复一些静态扫描工具发现的问题
...
Change-Id: I4890de0066f33bf44e913b550edfa3639bce7caf
Signed-off-by: Far <yesiyuan2@huawei.com>
2022-10-15 17:36:26 +08:00
openharmony_ci
816d03f5c1
!832 LOS_FsMount 接口存在多处功能问题
...
Merge pull request !832 from wangchen/0923_m
2022-09-26 13:02:50 +00:00
xiacong
784429d0dc
<fix>
...
修复报警信息,为以下修复点
1、修复空指针未判断
2、修复open后未及时close 导致内存泄露
3、修复strdup后未free
4、修复赋值后未使用等问题
5、修复编码中判断条件中无符号变量小于零的情况
Signed-off-by: xiacong <xiacong4@huawei.com>
Change-Id: I13d046141afeb8a116e6a04304a3793bf8e12bee
Signed-off-by: xiacong <xiacong4@huawei.com>
2022-09-24 22:11:27 +08:00
wangchen
bfef7bfb2e
fix: LOS_FsMount 接口存在多处功能问题
...
【背景】LOS_FsMount 接口存在多处功能问题
【修改方案】
1, 修改goto逻辑
2,把过长的函数重新封装
【影响】
对现有的产品编译不会有影响。
re #I5SP1I
Signed-off-by: wangchen <wangchen240@huawei.com>
2022-09-23 03:45:18 +00:00
wangchen
0adbafb9c2
\fix: M核用例编译问题修复
...
【背景】M核用例编译问题修复
【修改方案】
1, 添加musl缺失的fcntl
2,删除musl下对fcntl和ioctl的依赖
3,修改fs和vfs种fcntl入参的处理
【影响】
对现有的产品编译不会有影响。
re #I5PKBJ
Signed-off-by: wangchen <wangchen240@huawei.com>
2022-09-21 07:20:12 +00:00
arvinzzz
5756d45e84
fix: 修复fs在iccarm下的编译错误
...
close: #I5NXFL
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
2022-08-24 16:59:42 +08:00
openharmony_ci
699bb81fc3
!721 完善文件系统vfs层初始化函数
...
Merge pull request !721 from LeonChan/oh
2022-08-17 04:35:45 +00:00
leonchan5
f2c4b59773
feat: liteos-m文件系统初始化函数支持littlefs
...
VFS初始化函数LOS_DiskPartition及LfsFormat支持littlefs,支持对flash设备进行分区和格式化操作
1,VFS层记录Fat/littlefs设备名称、分区等信息,后续在本层做处理
2,flash设备的相关配置及驱动操作接口通过LOS_DiskPartition配置,产品不用直接面向具体文件系统
close: #I5CYKI
Signed-off-by: leonchan5 <chenwei26@huawei.com>
2022-08-16 18:55:53 +08:00
wangchen
2ce5ce9397
fix: littlefs readdir在完全读完后,会设置错误码EBADF
...
【背景】littlefs readdir在完全读完后,会设置错误码EBADF
【修改方案】
1, fsFops->readdir 执行返回非0时,有可能是正常情况,因此删除else赋值错误码
【影响】
对现有的产品编译不会有影响。
re #I5M1OE
Signed-off-by: wangchen <wangchen240@huawei.com>
2022-08-12 09:25:20 +00:00
openharmony_ci
2ec2c369e7
!755 内核告警清理
...
Merge pull request !755 from yinjiaming/fix
2022-08-09 08:37:39 +00:00
arvinzzz
d0c50a4af0
fix: iccarm编译修复
...
close: #I5JXMJ
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
Change-Id: I3fbaf459ad4807a44396f319a4d53d3cc1e7700c
2022-08-01 16:53:18 +08:00
yinjiaming
a36d5d9058
fix: 内核告警修复
...
【背景】
内核代码经代码扫描工具发现存在一些关于代码格式的告警,
现经修改解除掉告警。
【修改方案】
修改了代码中格式不规范的地方,修改的点有:
1.代码中一行过长
2.没有合理的添加空格和空行
3.没有按照规范进行缩进
4.括号的格式没有按照规范
5.注释的格式不对以及存在魔数字
6.函数的声明与定义的格式不一致
并更新了修改文件的版权头时间
【影响】
对现有的产品编译不会有影响。
re #I5H6F5
Signed-off-by: yinjiaming <yinjiaming@huawei.com>
Change-Id: Id8eb0450d03fae537ea4c73190fdadb76b29253d
2022-07-29 08:30:38 +00:00
arvinzzz
d84471ff29
fix: 告警修复
...
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
Change-Id: I1c00ca1dda35c62b06bff78353737f7943a647e9
2022-03-23 17:15:52 +08:00
arvinzzz
38f8472ddb
fix: 告警修复
...
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
Change-Id: Iaec45e835737c0ae7eea88408b2a1a4a79f1a40c
2022-03-22 18:29:16 +08:00
zhushengle
a09d4882c4
fix: 规范整改
...
Signed-off-by: zhushengle <zhushengle@huawei.com>
Change-Id: I7be78853291d53636fd199104b4c72bbab222bcd
2022-03-19 15:46:10 +08:00
longxingkai
e3e9b2f5a5
fix fs opendir bug
...
Signed-off-by: longxingkai <longxingkai@talkweb.com.cn>
2022-03-11 10:23:38 +08:00
fangye
9aa32ae743
fix: 修复FileSystem menuconfig配置问题
...
Signed-off-by: fangye <fangye@talkweb.com.cn>
Change-Id: Ibbac507ec290657489e47a708d2926ec709fa6b8
2022-03-10 09:27:16 +08:00
Guangyao Ma
09034de68a
refactor: liteos-m vfs refactory
...
close #I4RV26
Change-Id: I76d5d5128d37efa5fbcde6d105c78f4d7be607de
Signed-off-by: Guangyao Ma <guangyao.ma@outlook.com>
2022-03-09 12:07:15 +08:00
arvinzzz
491cefae76
feature: 补充pread/pwrite接口
...
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
Change-Id: Ie31cacd18131113e51a6949dfba57a86ca4eb0e5
2022-02-24 19:57:30 +08:00
fangye
9bc9f3aa53
feat: littlefs最大打开文件个数修改为可通过menuconfig配置
...
Signed-off-by: fangye <fangye@talkweb.com.cn>
Change-Id: Iba141821200b6044d89ec50b7ddb1047490f5229
2022-02-11 14:52:42 +08:00
likailong
05642f05ae
feat: 支持select.h的FD_SETSIZE宏配置
...
1. FD_SETSIZE由普通文件+网络文件的文件句柄个数之和决定。
2. 以前vfs_config.h引入fatfs.h和lfs_api.h又会引入其他头文件,
导致变异问题。因此需要将配置宏拆分出来放到fatfs_conf.h和
lfs_conf.h 头文件中。
3. lwipopts.h会提供网络的句柄个数,依赖FD_SETSIZE,而select.h会提供FD_SETSIZE,
依赖网络句柄个数,因此会形成相互依赖的情况,需要通过顺序来解决。
4. 网络中新增ntohl的定义。
close: #I4RYK4
Signed-off-by: likailong <likailong@huawei.com>
2022-01-24 17:24:26 +08:00
JerryH
4890222e7c
feature: Support pipe and poll interfaces.
...
支持pipe管道驱动,支持poll多文件描述符检测接口。
Signed-off-by: JerryH <huangjieliang@huawei.com>
Change-Id: Ida1f29709affbc91a26b8518e4a77b8e5469be19
2022-01-18 16:47:35 +08:00
yangjian
82c6d5f174
fix: FD_SETSIZE compatible newlibc
...
Signed-off-by: yangjian <jianyang@bestechnic.com>
Change-Id: I9d6b708772e63b2dc797d7305801be617fb32e75
2021-12-09 21:53:56 +08:00
arvinzzz
753d86014b
feature: 支持newlib与musl切换
...
系统支持newlib,并且可以与musl-C自由切换
1. 新增newlib支持,适配newlib的预留钩子,针对系统能力适配newlib头文件(补充宏定义,结构体定义,posix能力开关),
采用标准C与自研posix接口声明与结构体定义混合作为C库
2. 梳理kal的依赖关系,kal作为内核对外提供的标准接口,下属包含cmsis、libc、posix。
cmsis为内核对cmsis接口的支持,libc为内核对三方C库的适配及使用,posix为内核自研提供的posix标准接口。
若采用musl-C,则kal中选取libc/musl,posix共同作为C库对外支持;
若采用newlib-C,则kal中选取libc/newlib,部分posix共同作为C库对外支持。
3. fs整理,components/fs下提供基于posix标准的接口改为内部对外接口,供musl以及newlib切换 适配使用
close: #I4ENQ1
Signed-off-by: arvinzzz <zhaotianyu9@huawei.com>
Change-Id: I72eda5ac5499f72c67e800e22b0f39eb288f2b94
2021-12-04 21:43:55 +08:00