Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Cal411
Kernel Liteos A
提交
a3b480b1
K
Kernel Liteos A
项目概览
Cal411
/
Kernel Liteos A
与 Fork 源项目一致
Fork自
OpenHarmony / Kernel Liteos A
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos A
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a3b480b1
编写于
8月 27, 2021
作者:
O
openharmony_ci
提交者:
Gitee
8月 27, 2021
浏览文件
操作
浏览文件
下载
差异文件
!543 fix:fchdir
Merge pull request !543 from wcc/fs
上级
6e2a4be1
e828cbde
变更
11
显示空白变更内容
内联
并排
Showing
11 changed file
with
127 addition
and
17 deletion
+127
-17
syscall/fs_syscall.c
syscall/fs_syscall.c
+24
-0
syscall/los_syscall.h
syscall/los_syscall.h
+1
-0
syscall/syscall_lookup.h
syscall/syscall_lookup.h
+1
-0
testsuites/unittest/fs/BUILD.gn
testsuites/unittest/fs/BUILD.gn
+5
-2
testsuites/unittest/fs/jffs/It_vfs_jffs.h
testsuites/unittest/fs/jffs/It_vfs_jffs.h
+5
-0
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_100.cpp
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_100.cpp
+1
-1
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_101.cpp
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_101.cpp
+11
-1
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_106.cpp
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_106.cpp
+19
-9
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_112.cpp
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_112.cpp
+1
-1
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_113.cpp
testsuites/unittest/fs/jffs/full/it_test_fs_jffs_113.cpp
+3
-3
testsuites/unittest/fs/jffs/vfs_jffs_test.cpp
testsuites/unittest/fs/jffs/vfs_jffs_test.cpp
+56
-0
未找到文件。
syscall/fs_syscall.c
浏览文件 @
a3b480b1
...
@@ -502,6 +502,30 @@ int SysExecve(const char *fileName, char *const *argv, char *const *envp)
...
@@ -502,6 +502,30 @@ int SysExecve(const char *fileName, char *const *argv, char *const *envp)
}
}
#endif
#endif
int
SysFchdir
(
int
fd
)
{
int
ret
;
int
sysFd
;
struct
file
*
file
=
NULL
;
sysFd
=
GetAssociatedSystemFd
(
fd
);
if
(
sysFd
<
0
)
{
return
-
EBADF
;
}
ret
=
fs_getfilep
(
sysFd
,
&
file
);
if
(
ret
<
0
)
{
return
-
get_errno
();
}
ret
=
chdir
(
file
->
f_path
);
if
(
ret
<
0
)
{
ret
=
-
get_errno
();
}
return
ret
;
}
int
SysChdir
(
const
char
*
path
)
int
SysChdir
(
const
char
*
path
)
{
{
int
ret
;
int
ret
;
...
...
syscall/los_syscall.h
浏览文件 @
a3b480b1
...
@@ -231,6 +231,7 @@ extern int SysSymlinkat(const char *target, int dirfd, const char *linkpath);
...
@@ -231,6 +231,7 @@ extern int SysSymlinkat(const char *target, int dirfd, const char *linkpath);
extern
ssize_t
SysReadlinkat
(
int
dirfd
,
const
char
*
pathname
,
char
*
buf
,
size_t
bufsize
);
extern
ssize_t
SysReadlinkat
(
int
dirfd
,
const
char
*
pathname
,
char
*
buf
,
size_t
bufsize
);
extern
int
SysUnlink
(
const
char
*
pathname
);
extern
int
SysUnlink
(
const
char
*
pathname
);
extern
int
SysExecve
(
const
char
*
fileName
,
char
*
const
*
argv
,
char
*
const
*
envp
);
extern
int
SysExecve
(
const
char
*
fileName
,
char
*
const
*
argv
,
char
*
const
*
envp
);
extern
int
SysFchdir
(
int
fd
);
extern
int
SysChdir
(
const
char
*
path
);
extern
int
SysChdir
(
const
char
*
path
);
extern
int
SysUtimensat
(
int
fd
,
const
char
*
path
,
struct
timespec
times
[
2
],
int
flag
);
extern
int
SysUtimensat
(
int
fd
,
const
char
*
path
,
struct
timespec
times
[
2
],
int
flag
);
extern
int
SysFchmodat
(
int
fd
,
const
char
*
path
,
mode_t
mode
,
int
flag
);
extern
int
SysFchmodat
(
int
fd
,
const
char
*
path
,
mode_t
mode
,
int
flag
);
...
...
syscall/syscall_lookup.h
浏览文件 @
a3b480b1
...
@@ -47,6 +47,7 @@ SYSCALL_HAND_DEF(__NR_execve, SysExecve, int, ARG_NUM_3)
...
@@ -47,6 +47,7 @@ SYSCALL_HAND_DEF(__NR_execve, SysExecve, int, ARG_NUM_3)
#endif
#endif
SYSCALL_HAND_DEF
(
__NR_sysinfo
,
SysInfo
,
int
,
ARG_NUM_1
)
SYSCALL_HAND_DEF
(
__NR_sysinfo
,
SysInfo
,
int
,
ARG_NUM_1
)
SYSCALL_HAND_DEF
(
__NR_fchdir
,
SysFchdir
,
int
,
ARG_NUM_1
)
SYSCALL_HAND_DEF
(
__NR_chdir
,
SysChdir
,
int
,
ARG_NUM_1
)
SYSCALL_HAND_DEF
(
__NR_chdir
,
SysChdir
,
int
,
ARG_NUM_1
)
SYSCALL_HAND_DEF
(
__NR_utimensat
,
SysUtimensat
,
int
,
ARG_NUM_4
)
SYSCALL_HAND_DEF
(
__NR_utimensat
,
SysUtimensat
,
int
,
ARG_NUM_4
)
SYSCALL_HAND_DEF
(
__NR_fchmodat
,
SysFchmodat
,
int
,
ARG_NUM_4
)
SYSCALL_HAND_DEF
(
__NR_fchmodat
,
SysFchmodat
,
int
,
ARG_NUM_4
)
...
...
testsuites/unittest/fs/BUILD.gn
浏览文件 @
a3b480b1
...
@@ -211,8 +211,11 @@ sources_full = [
...
@@ -211,8 +211,11 @@ sources_full = [
"jffs/full/it_test_fs_jffs_002.cpp",
"jffs/full/it_test_fs_jffs_002.cpp",
"jffs/full/it_test_fs_jffs_003.cpp",
"jffs/full/it_test_fs_jffs_003.cpp",
"jffs/full/it_test_fs_jffs_004.cpp",
"jffs/full/it_test_fs_jffs_004.cpp",
"jffs/full/it_test_fs_jffs_102.cpp",
"jffs/full/it_test_fs_jffs_100.cpp",
"jffs/full/it_test_fs_jffs_103.cpp",
"jffs/full/it_test_fs_jffs_101.cpp",
"jffs/full/it_test_fs_jffs_106.cpp",
"jffs/full/it_test_fs_jffs_112.cpp",
"jffs/full/it_test_fs_jffs_113.cpp",
"jffs/full/It_jffs_001.cpp",
"jffs/full/It_jffs_001.cpp",
"jffs/full/It_jffs_002.cpp",
"jffs/full/It_jffs_002.cpp",
"jffs/full/It_jffs_003.cpp",
"jffs/full/It_jffs_003.cpp",
...
...
testsuites/unittest/fs/jffs/It_vfs_jffs.h
浏览文件 @
a3b480b1
...
@@ -271,8 +271,13 @@ void ItTestFsJffs001(void);
...
@@ -271,8 +271,13 @@ void ItTestFsJffs001(void);
void
ItTestFsJffs002
(
void
);
void
ItTestFsJffs002
(
void
);
void
ItTestFsJffs003
(
void
);
void
ItTestFsJffs003
(
void
);
void
ItTestFsJffs004
(
void
);
void
ItTestFsJffs004
(
void
);
void
ItTestFsJffs100
(
void
);
void
ItTestFsJffs101
(
void
);
void
ItTestFsJffs102
(
void
);
void
ItTestFsJffs102
(
void
);
void
ItTestFsJffs103
(
void
);
void
ItTestFsJffs103
(
void
);
void
ItTestFsJffs106
(
void
);
void
ItTestFsJffs112
(
void
);
void
ItTestFsJffs113
(
void
);
VOID
ItJffs001
(
VOID
);
VOID
ItJffs001
(
VOID
);
VOID
ItJffs002
(
VOID
);
VOID
ItJffs002
(
VOID
);
VOID
ItJffs003
(
VOID
);
VOID
ItJffs003
(
VOID
);
...
...
testsuites/unittest/fs/jffs/
smoke
/it_test_fs_jffs_100.cpp
→
testsuites/unittest/fs/jffs/
full
/it_test_fs_jffs_100.cpp
浏览文件 @
a3b480b1
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
#include "It_fs_jffs.h"
#include "It_
v
fs_jffs.h"
static
int
TestCase
(
void
)
static
int
TestCase
(
void
)
{
{
...
...
testsuites/unittest/fs/jffs/
smoke
/it_test_fs_jffs_101.cpp
→
testsuites/unittest/fs/jffs/
full
/it_test_fs_jffs_101.cpp
浏览文件 @
a3b480b1
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
#include "It_fs_jffs.h"
#include "It_
v
fs_jffs.h"
#define TEST_STRLEN 30
#define TEST_STRLEN 30
...
@@ -56,6 +56,16 @@ static int TestCase(void)
...
@@ -56,6 +56,16 @@ static int TestCase(void)
fd
=
open
(
pathname2
,
O_DIRECTORY
);
fd
=
open
(
pathname2
,
O_DIRECTORY
);
ICUNIT_GOTO_EQUAL
(
ret
,
JFFS_NO_ERROR
,
ret
,
EXIT
);
ICUNIT_GOTO_EQUAL
(
ret
,
JFFS_NO_ERROR
,
ret
,
EXIT
);
/* EBADF */
ret
=
fchdir
(
-
1
);
ICUNIT_GOTO_NOT_EQUAL
(
ret
,
JFFS_NO_ERROR
,
ret
,
EXIT1
);
ret
=
errno
;
ICUNIT_GOTO_EQUAL
(
ret
,
EBADF
,
ret
,
EXIT1
);
ret
=
chdir
(
pathname
);
ICUNIT_GOTO_EQUAL
(
ret
,
JFFS_NO_ERROR
,
ret
,
EXIT1
);
pret
=
getcwd
(
buf1
,
TEST_STRLEN
);
pret
=
getcwd
(
buf1
,
TEST_STRLEN
);
ICUNIT_GOTO_NOT_EQUAL
(
pret
,
NULL
,
pret
,
EXIT1
);
ICUNIT_GOTO_NOT_EQUAL
(
pret
,
NULL
,
pret
,
EXIT1
);
ICUNIT_GOTO_STRING_EQUAL
(
buf1
,
pathname
,
buf1
,
EXIT1
);
ICUNIT_GOTO_STRING_EQUAL
(
buf1
,
pathname
,
buf1
,
EXIT1
);
...
...
testsuites/unittest/fs/jffs/
smoke
/it_test_fs_jffs_106.cpp
→
testsuites/unittest/fs/jffs/
full
/it_test_fs_jffs_106.cpp
浏览文件 @
a3b480b1
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
#include "It_fs_jffs.h"
#include "It_
v
fs_jffs.h"
#define TEST_STR "abcdefghijk"
#define TEST_STR "abcdefghijk"
...
@@ -41,20 +41,30 @@ static int TestCase(void)
...
@@ -41,20 +41,30 @@ static int TestCase(void)
CHAR
buf
[
JFFS_STANDARD_NAME_LENGTH
]
=
TEST_STR
;
CHAR
buf
[
JFFS_STANDARD_NAME_LENGTH
]
=
TEST_STR
;
CHAR
str
[
JFFS_STANDARD_NAME_LENGTH
]
=
""
;
CHAR
str
[
JFFS_STANDARD_NAME_LENGTH
]
=
""
;
FILE
*
ptr
=
NULL
;
FILE
*
ptr
=
NULL
;
fd
=
open
(
pathname1
,
O_CREAT
|
O_RDWR
,
0777
);
fd
=
open
(
pathname1
,
O_CREAT
,
0777
);
ICUNIT_GOTO_NOT_EQUAL
(
fd
,
-
1
,
fd
,
EXIT
);
ICUNIT_GOTO_NOT_EQUAL
(
fd
,
-
1
,
fd
,
EXIT
);
len
=
write
(
fd
,
buf
,
JFFS_STANDARD_NAME_LENGTH
);
ICUNIT_GOTO_NOT_EQUAL
(
len
,
-
1
,
len
,
EXIT
);
ret
=
close
(
fd
);
ret
=
close
(
fd
);
ICUNIT_GOTO_NOT_EQUAL
(
ret
,
-
1
,
ret
,
EXIT1
);
ICUNIT_GOTO_NOT_EQUAL
(
ret
,
-
1
,
ret
,
EXIT1
);
ptr
=
freopen
(
pathname1
,
"rb"
,
stdin
);
ptr
=
freopen
(
pathname1
,
"w+"
,
stdin
);
ICUNIT_GOTO_NOT_EQUAL
(
ptr
,
NULL
,
ptr
,
EXIT1
);
ICUNIT_GOTO_NOT_EQUAL
(
ptr
,
NULL
,
ptr
,
EXIT1
);
ret
=
scanf_s
(
"%s"
,
JFFS_STANDARD_NAME_LENGTH
,
str
);
ICUNIT_GOTO_NOT_EQUAL
(
ret
,
0
,
ret
,
EXIT1
);
ret
=
fwrite
(
buf
,
JFFS_STANDARD_NAME_LENGTH
,
1
,
ptr
);
ret
=
strcmp
(
buf
,
str
);
ICUNIT_GOTO_NOT_EQUAL
(
ret
,
-
1
,
ret
,
EXIT1
);
ret
=
fclose
(
ptr
);
ICUNIT_GOTO_EQUAL
(
ret
,
0
,
ret
,
EXIT1
);
ICUNIT_GOTO_EQUAL
(
ret
,
0
,
ret
,
EXIT1
);
fclose
(
ptr
);
fd
=
open
(
pathname1
,
O_RDWR
,
0777
);
ret
=
read
(
fd
,
str
,
JFFS_STANDARD_NAME_LENGTH
);
ret
=
close
(
fd
);
ICUNIT_GOTO_NOT_EQUAL
(
ret
,
-
1
,
ret
,
EXIT1
);
ret
=
strcmp
(
buf
,
str
);
ICUNIT_GOTO_EQUAL
(
ret
,
0
,
ret
,
EXIT1
);
ret
=
unlink
(
pathname1
);
ret
=
unlink
(
pathname1
);
ICUNIT_GOTO_EQUAL
(
ret
,
0
,
ret
,
EXIT
);
ICUNIT_GOTO_EQUAL
(
ret
,
0
,
ret
,
EXIT
);
...
...
testsuites/unittest/fs/jffs/
smoke
/it_test_fs_jffs_112.cpp
→
testsuites/unittest/fs/jffs/
full
/it_test_fs_jffs_112.cpp
浏览文件 @
a3b480b1
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
#include "It_fs_jffs.h"
#include "It_
v
fs_jffs.h"
static
int
TestCase
(
void
)
static
int
TestCase
(
void
)
{
{
...
...
testsuites/unittest/fs/jffs/
smoke
/it_test_fs_jffs_113.cpp
→
testsuites/unittest/fs/jffs/
full
/it_test_fs_jffs_113.cpp
浏览文件 @
a3b480b1
...
@@ -28,15 +28,15 @@
...
@@ -28,15 +28,15 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
#include "It_fs_jffs.h"
#include "It_vfs_jffs.h"
#include <pthread.h>
static
FILE
*
g_filep
;
static
FILE
*
g_filep
;
#define NUM 64
#define NUM 64
#define COUNT 10
#define COUNT 10
void
*
DoChild
()
void
*
DoChild
(
void
*
)
{
{
int
fd
=
0
;
int
ret
,
count
;
int
ret
,
count
;
char
buf
[
NUM
];
char
buf
[
NUM
];
...
...
testsuites/unittest/fs/jffs/vfs_jffs_test.cpp
浏览文件 @
a3b480b1
...
@@ -1043,6 +1043,28 @@ HWTEST_F(VfsJffsTest, ItTestFsJffs004, TestSize.Level0)
...
@@ -1043,6 +1043,28 @@ HWTEST_F(VfsJffsTest, ItTestFsJffs004, TestSize.Level0)
ItTestFsJffs004
();
ItTestFsJffs004
();
}
}
/* *
* @tc.name: ItTestFsJffs100
* @tc.desc: function for VfsJffsTest
* @tc.type: FUNC
* @tc.require: AR000EEMQ9
*/
HWTEST_F
(
VfsJffsTest
,
ItTestFsJffs100
,
TestSize
.
Level0
)
{
ItTestFsJffs100
();
}
/* *
* @tc.name: ItTestFsJffs101
* @tc.desc: function for VfsJffsTest
* @tc.type: FUNC
* @tc.require: AR000EEMQ9
*/
HWTEST_F
(
VfsJffsTest
,
ItTestFsJffs101
,
TestSize
.
Level0
)
{
ItTestFsJffs101
();
}
/* *
/* *
* @tc.name: ItTestFsJffs102
* @tc.name: ItTestFsJffs102
* @tc.desc: function for VfsJffsTest
* @tc.desc: function for VfsJffsTest
...
@@ -1064,6 +1086,40 @@ HWTEST_F(VfsJffsTest, ItTestFsJffs103, TestSize.Level0)
...
@@ -1064,6 +1086,40 @@ HWTEST_F(VfsJffsTest, ItTestFsJffs103, TestSize.Level0)
{
{
ItTestFsJffs103
();
ItTestFsJffs103
();
}
}
/* *
* @tc.name: ItTestFsJffs106
* @tc.desc: function for VfsJffsTest
* @tc.type: FUNC
* @tc.require: AR000EEMQ9
*/
HWTEST_F
(
VfsJffsTest
,
ItTestFsJffs106
,
TestSize
.
Level0
)
{
ItTestFsJffs106
();
}
/* *
* @tc.name: ItTestFsJffs112
* @tc.desc: function for VfsJffsTest
* @tc.type: FUNC
* @tc.require: AR000EEMQ9
*/
HWTEST_F
(
VfsJffsTest
,
ItTestFsJffs112
,
TestSize
.
Level0
)
{
ItTestFsJffs112
();
}
/* *
* @tc.name: ItTestFsJffs113
* @tc.desc: function for VfsJffsTest
* @tc.type: FUNC
* @tc.require: AR000EEMQ9
*/
HWTEST_F
(
VfsJffsTest
,
ItTestFsJffs113
,
TestSize
.
Level0
)
{
ItTestFsJffs113
();
}
/* *
/* *
* @tc.name: IT_JFFS_002
* @tc.name: IT_JFFS_002
* @tc.desc: function for VfsJffsTest
* @tc.desc: function for VfsJffsTest
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录