系统配置宏 LW_CFG_PATH_AUTO_CONDENSE 有什么作用?
Q:系统配置宏 LW_CFG_PATH_AUTO_CONDENSE 有什么作用?
LW_CFG_PATH_AUTO_CONDENSE 可以使系统在处理 io 路径时, 首先进行路径压缩, 也就是说处理掉路径中的 . 和 ..
例如: 假设系统存在名为 "/DEVICE" 的设备.
当 LW_CFG_PATH_AUTO_CONDENSE 为 0 时, open("/DEVICE/b/c/d/../../.././x");
函数最终会调用到驱动程序 xxxOpen 时路径将为: "/b/c/d/../../.././x". 所以, 设备驱动程序一定要支持 . 和 .. 目录的处理.
当 LW_CFG_PATH_AUTO_CONDENSE 为 1 时, open("/DEVICE/b/c/d/../../.././x");
函数最终会调用到驱动程序 xxxOpen 时路径将为: "/x". 操作系统自动将 . 和 .. 按照规则予以滤除.
当然 LW_CFG_PATH_AUTO_CONDENSE 为 1 时, 操作系统对文件的打开操作将会稍慢.
但是文件的读写等操作并不受影响. 系统默认是关闭此项功能的, 需要在 system_cfg.h 中将其设置为 1.
当 LW_CFG_PATH_AUTO_CONDENSE 为 1 时, 需要适当稍微加大操作 io 线程的堆栈.
Related Articles
SylixOS 如何进行网络裁剪
Q: 项目不需要使用 SylixOS 自带的 lwip 协议栈, 但是又没有找到相关的裁剪宏, 该怎么解决? SylixOS 内部使用了很多开源的中间库(操作系统与相关库接口部分), 绝大多数库中都加入了配置宏 如: FAT, YAFFS 等, 但由于 lwip 文件过多, 这里没有使用配置宏进行裁剪. 推荐使用两种方法进行裁剪: 1、如果使用 IDE 环境, 直接将 lwip 协议栈(/net/lwip/src) 目录从工程中移除, 同时将LW_CFG_NET_EN宏 (net_cfg.h) ...
怎样裁剪 libsylixos 第三方软件库
Q: 怎样裁剪 libsylixos 第三方软件库. 起初 sylixos 加入第三方软件库是为了测试 sylixos 系统的稳定性与兼容性,后期作者觉得这些库非常有用于是就保留了下来。 几乎所有第三方软件库源码都在 SylixOS/appl 目录存放。当不需要这些组件时,只需要手动将代码移除即可,同时删除appl.h 中引用的相关头文件。
为什么有些文件系统中不能建立链接文件
Q: 为什么有些文件系统中不能建立链接文件? 当使用新的 SylixOS 分级目录管理时, SylixOS 提供了部分的链接文件支持(不支持硬链接, 仅支持 unix 符号链接), 但是仅仅是在根文件系统(root fs)所属的目录中, 目前 SylixOS 的其他文件系统还不支持链接文件, 所以链接文件(symbol path) 必须在 root fs 管辖的目录中(可以满足绝大多数的应用!). 例如: 可以调用 symlink("/yaffs2/n0/etc", "/etc"); 或者执行 ...
SylixOS 下内核线程简介
1.概述 内核线程共享内核所有资源,例如内核文件描述符表,而进程内线程则共享使用进程内所有资源,例如进程文件描述符表。SylixOS 对于一些系统级功能是通过使用内核线程进行管理使用。 2.内核线程 基于 SylixOS Version:2.1.6 的内核,在终端上输入命令“ts”如图 2.1所示。 图2.1 “ts”命令 2.1 内核线程工程 ...
SylixOS 挂载 RAM 文件系统
mount -t ramfs 【空间大小(字节)】 【挂载位置】 # mount -t ramfs 10000000 /mnt/ram 注意:此空间从内核堆中分配,若需要较大的空间需要适当扩大内核堆空间。或者是在 Base 配置文件中开启如下宏定义。 #define LW_CFG_RAMFS_VMM_EN 0 /* 是否使用 VMM 开辟内存 */