Commit Graph

13 Commits

Author SHA1 Message Date
chenjing 6eddc869d3 feat: support link/symlink/readlink
新增link/symlink/readlink接口的系统调用及内核实现,当前仅支持jffs2文件系统。具体接口说明如下:

一、hard link
接口原型:
int link(const char *oldpath, const char *newpath);
int linkat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath, int flags);

作用:
创建oldpath的硬链接,名为newpath。

功能说明:
1、newpath与oldpath必须在同一挂载分区内。
2、若newpath已存在,不会覆盖,错误码EEXIST。
3、oldpath必须为普通文件或者软链接文件。
4、如果oldpath是一个软链接文件,那么:
若调用link接口或者linkat(flags=0),创建出软链接文件的硬链接;
若调用linkat(flags = AT_SYMLINK_FOLLOW),创建出软链接所指向源文件的硬链接。
5、oldpath与newpath对应同一个文件,对oldpath与newpath任一名字的操作都是直接操作文件,没有“原始文件”的说法。
6、使用cp命令拷贝一个硬链接文件,生成文件的拷贝,新文件的nlink数为1。
7、删除oldpath或newpath,底层文件仍存在,可以通过另一个path访问。只有当两个path都删除之后,才会真正将文件删除,空间释放。

二、symbol link
接口原型:
int symlink(const char *target, const char *linkpath);
int symlinkat(const char *target, int newdirfd, const char *linkpath);

作用:
创建一个软链接文件linkpath,存储字符串target。

功能说明:
1、target可以为任意字符串(长度小于PATH_MAX)。
2、若linkpath文件名已存在,不会覆盖,错误码EEXIST。
3、用readlink函数可读取软链接的target内容。
4、软链接文件本身大小为target长度。
5、ls时软链接文件类型显示为 'l'。
6、symlink最大循环次数为CONFIG_FS_MAX_LNK_CNT(目前为40),超出则返回错误,错误码ELOOP。
7、使用cp命令拷贝一个软链接文件:
若target是一个文件:创建一个源文件的拷贝,类型为普通文件;
若target非文件:拷贝失败。

三、readlink
接口原型:
ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);
ssize_t readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsiz);

作用:
读取软链接文件存放的的target内容。

功能说明:
1、pathname必须为软链接文件,否则错误码EINVAL。
2、如果bufsiz小于target长度,则截断target。

close #I3Q0OD

Change-Id: I3864d6069b627b705a369e8e32dc1eb922dc0157
Signed-off-by: chenjing <chenjing139@huawei.com>
2021-06-09 16:39:41 +08:00
lnlan 9bdf716407 feat(build): 使用xts -notest选项时,内核用例不参与编译构建和用例编译配置方式调整
【背景】
1.编译新增-notest选项为了排除用例参与构建,使用该选项时内核用例仍会参与构建,不符合预期
2.用例编译配置选项太多,需调整优化
【修改方案】
1.原内核用例的源文件是通过框架自带的source_set(一种虚拟静态库)的方式组织的,
不受unittests(自定义的一种方式)控制,修改为文件列表直接加入到unittest中。
2.编译配置通过level控制
【影响】
对现有的产品编译不会有影响。

Change-Id: I2c6a96e7276346de96f222b725d417418ff0e537
2021-05-29 17:58:39 +08:00
kenneth 12d98b144b fix: fix length typo
fix typos length、there、necessary

close https://gitee.com/openharmony/kernel_liteos_a/issues/I3RSY0
2021-05-18 14:33:59 +08:00
lnlan fbe98af997 fixed that LOSCFG_USER_TEST_SMP is unuseful
Change-Id: Ib6bd11fbeaac88e69de663a7a3f2d01ac1fe9042
2021-05-15 17:16:29 +08:00
lnlan 3aa14c9ae7 full & smoke separate
Change-Id: I885610a62b980bd3720b337aced886450338bdcf
2021-05-11 11:06:14 +08:00
lnlan f99e7b3388 test image change name, add _door
Change-Id: I5fd518e2e84df1d524d9405b665306cce485eb63
2021-05-10 21:19:36 +08:00
openharmony_ci 92a2aa6f77 !208 用例框架完善,问题用例修复
Merge pull request !208 from lnlan/test_fixed
2021-05-05 10:17:04 +08:00
lnlan 6fe4a3f946 testsuites fixed
Change-Id: I7f4add72f2fd1cc3770bcf103d1909add4829822
2021-04-30 15:07:26 +08:00
mucor e64e1e7260 add testcase for capability ReadSearch
Change-Id: I19834ced919e7f03a7ac9862bfbaf360637e29bf
2021-04-30 09:30:01 +08:00
JING c14d95f8b5 revert irrelevant commit 2021-04-29 20:22:12 +08:00
JING 68f62d9de8 add umask open/creat test 2021-04-29 18:12:41 +08:00
JING 3d77526160 add umask open/create test 2021-04-29 17:30:43 +08:00
lnlan 778c5e17c3 add testsuites
Change-Id: Ice1193d1ae7f2e0d12a2a38a306a6399407f5037
2021-04-25 17:35:47 +08:00