Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
3a3b7ee6
R
rt-thread
项目概览
BaiXuePrincess
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3a3b7ee6
编写于
11月 12, 2021
作者:
mysterywolf
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完善IAR KEIL的read write桩函数
上级
cb8d5c5d
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
64 addition
and
58 deletion
+64
-58
components/libc/compilers/armlibc/syscalls.c
components/libc/compilers/armlibc/syscalls.c
+39
-32
components/libc/compilers/dlib/syscall_close.c
components/libc/compilers/dlib/syscall_close.c
+1
-1
components/libc/compilers/dlib/syscall_lseek.c
components/libc/compilers/dlib/syscall_lseek.c
+1
-1
components/libc/compilers/dlib/syscall_open.c
components/libc/compilers/dlib/syscall_open.c
+1
-1
components/libc/compilers/dlib/syscall_read.c
components/libc/compilers/dlib/syscall_read.c
+9
-5
components/libc/compilers/dlib/syscall_remove.c
components/libc/compilers/dlib/syscall_remove.c
+1
-1
components/libc/compilers/dlib/syscall_write.c
components/libc/compilers/dlib/syscall_write.c
+12
-17
未找到文件。
components/libc/compilers/armlibc/syscalls.c
浏览文件 @
3a3b7ee6
...
...
@@ -25,7 +25,7 @@
#include "libc.h"
#endif
#define DBG_TAG "armlibc.syscalls"
#define DBG_TAG "
Keil.
armlibc.syscalls"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
...
...
@@ -144,38 +144,48 @@ int _sys_close(FILEHANDLE fh)
*/
int
_sys_read
(
FILEHANDLE
fh
,
unsigned
char
*
buf
,
unsigned
len
,
int
mode
)
{
#ifdef RT_USING_POSIX
_STDIO
#ifdef RT_USING_POSIX
int
size
;
if
(
fh
==
STDIN
)
{
#ifdef RT_USING_POSIX_STDIO
if
(
libc_stdio_get_console
()
<
0
)
{
LOG_W
(
"Do not invoke standard output before initializing libc"
);
return
0
;
return
0
;
/* error, but keep going */
}
size
=
read
(
STDIN_FILENO
,
buf
,
len
);
return
len
-
size
;
return
0
;
/* success */
#else
return
0
;
/* error */
#endif
}
else
if
(
(
fh
==
STDOUT
)
||
(
fh
==
STDERR
)
)
else
if
(
fh
==
STDOUT
||
fh
==
STDERR
)
{
return
0
;
/* error */
}
size
=
read
(
fh
,
buf
,
len
);
if
(
size
>=
0
)
return
len
-
size
;
else
return
0
;
/* error */
{
size
=
read
(
fh
,
buf
,
len
);
if
(
size
>=
0
)
return
len
-
size
;
/* success */
else
return
0
;
/* error */
}
#else
return
0
;
/* error */
#endif
/* RT_USING_POSIX
_STDIO
*/
#endif
/* RT_USING_POSIX */
}
/*
* Write to a file. Returns 0 on success, negative on error, and
* the number of characters _not_ written on partial success.
* `mode' exists for historical reasons and must be ignored.
* The return value is either:
* A positive number representing the number of characters not written
* (so any nonzero return value denotes a failure of some sort).
* A negative number indicating an error.
*/
int
_sys_write
(
FILEHANDLE
fh
,
const
unsigned
char
*
buf
,
unsigned
len
,
int
mode
)
{
...
...
@@ -183,39 +193,36 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
int
size
;
#endif
/* RT_USING_POSIX */
if
(
(
fh
==
STDOUT
)
||
(
fh
==
STDERR
)
)
if
(
fh
==
STDOUT
||
fh
==
STDERR
)
{
#ifdef RT_USING_POSIX_STDIO
if
(
libc_stdio_get_console
()
<
0
)
{
LOG_W
(
"Do not invoke standard input before initializing libc"
);
return
0
;
}
size
=
write
(
STDOUT_FILENO
,
buf
,
len
);
return
len
-
size
;
#elif defined(RT_USING_CONSOLE)
if
(
rt_console_get_device
())
#ifdef RT_USING_CONSOLE
rt_device_t
console
;
console
=
rt_console_get_device
();
if
(
console
)
{
rt_device_write
(
rt_console_get_device
()
,
-
1
,
buf
,
len
);
rt_device_write
(
console
,
-
1
,
buf
,
len
);
}
return
0
;
/* success */
#else
return
0
;
/* error */
#endif
/* RT_USING_
POSIX_STDIO
*/
#endif
/* RT_USING_
CONSOLE
*/
}
else
if
(
fh
==
STDIN
)
{
return
0
;
/* error */
}
#ifdef RT_USING_POSIX
size
=
write
(
fh
,
buf
,
len
);
if
(
size
>=
0
)
return
len
-
size
;
else
return
0
;
/* error */
{
#ifdef RT_USING_POSIX
size
=
write
(
fh
,
buf
,
len
);
if
(
size
>=
0
)
return
0
;
/* success */
else
return
0
;
/* error */
#else
return
0
;
return
0
;
/* error */
#endif
/* RT_USING_POSIX */
}
}
/*
...
...
components/libc/compilers/dlib/syscall_close.c
浏览文件 @
3a3b7ee6
...
...
@@ -8,7 +8,7 @@
* 2015-01-28 Bernard first version
*/
#include <rtthread.h>
#include <
yfuns
.h>
#include <
LowLevelIOInterface
.h>
#include <unistd.h>
#pragma module_name = "?__close"
...
...
components/libc/compilers/dlib/syscall_lseek.c
浏览文件 @
3a3b7ee6
...
...
@@ -8,7 +8,7 @@
* 2015-01-28 Bernard first version
*/
#include <rtthread.h>
#include <
yfuns
.h>
#include <
LowLevelIOInterface
.h>
#include <unistd.h>
#pragma module_name = "?__lseek"
...
...
components/libc/compilers/dlib/syscall_open.c
浏览文件 @
3a3b7ee6
...
...
@@ -9,7 +9,7 @@
*/
#include <rtthread.h>
#include <
yfuns
.h>
#include <
LowLevelIOInterface
.h>
#include <fcntl.h>
#pragma module_name = "?__open"
...
...
components/libc/compilers/dlib/syscall_read.c
浏览文件 @
3a3b7ee6
...
...
@@ -9,7 +9,7 @@
*/
#include <rtthread.h>
#include <
yfuns
.h>
#include <
LowLevelIOInterface
.h>
#include <unistd.h>
#ifdef RT_USING_POSIX_STDIO
#include "libc.h"
...
...
@@ -22,17 +22,21 @@
#pragma module_name = "?__read"
size_t
__read
(
int
handle
,
unsigned
char
*
buf
,
size_t
len
)
{
#ifdef RT_USING_POSIX
_STDIO
#ifdef RT_USING_POSIX
int
size
;
if
(
handle
==
_LLIO_STDIN
)
{
#ifdef RT_USING_POSIX_STDIO
if
(
libc_stdio_get_console
()
<
0
)
{
LOG_W
(
"Do not invoke standard input before initializing libc"
);
return
0
;
return
0
;
/* error, but keep going */
}
return
read
(
STDIN_FILENO
,
buf
,
len
);
return
read
(
STDIN_FILENO
,
buf
,
len
);
/* return the length of the data read */
#else
return
_LLIO_ERROR
;
#endif
/* RT_USING_POSIX_STDIO */
}
else
if
((
handle
==
_LLIO_STDOUT
)
||
(
handle
==
_LLIO_STDERR
))
{
...
...
@@ -40,7 +44,7 @@ size_t __read(int handle, unsigned char *buf, size_t len)
}
size
=
read
(
handle
,
buf
,
len
);
return
size
;
return
size
;
/* return the length of the data read */
#else
return
_LLIO_ERROR
;
#endif
/* RT_USING_POSIX */
...
...
components/libc/compilers/dlib/syscall_remove.c
浏览文件 @
3a3b7ee6
...
...
@@ -8,7 +8,7 @@
* 2015-01-28 Bernard first version
*/
#include <rtthread.h>
#include <
yfuns
.h>
#include <
LowLevelIOInterface
.h>
#include <unistd.h>
#pragma module_name = "?remove"
...
...
components/libc/compilers/dlib/syscall_write.c
浏览文件 @
3a3b7ee6
...
...
@@ -9,13 +9,13 @@
*/
#include <rtthread.h>
#include <
yfuns
.h>
#include <
LowLevelIOInterface
.h>
#include <unistd.h>
#ifdef RT_USING_POSIX_STDIO
#include "libc.h"
#endif
#define DBG_TAG "dlib.syscall_write"
#define DBG_TAG "
IAR.
dlib.syscall_write"
#define DBG_LVL DBG_INFO
#include <rtdbg.h>
...
...
@@ -29,36 +29,31 @@ size_t __write(int handle, const unsigned char *buf, size_t len)
if
((
handle
==
_LLIO_STDOUT
)
||
(
handle
==
_LLIO_STDERR
))
{
#ifdef RT_USING_POSIX_STDIO
if
(
libc_stdio_get_console
()
<
0
)
{
LOG_W
(
"Do not invoke standard output before initializing libc"
);
return
0
;
}
return
write
(
STDOUT_FILENO
,
(
void
*
)
buf
,
len
);
#elif defined(RT_USING_CONSOLE)
#ifdef RT_USING_CONSOLE
rt_device_t
console_device
;
console_device
=
rt_console_get_device
();
if
(
console_device
!=
0
)
if
(
console_device
)
{
rt_device_write
(
console_device
,
0
,
buf
,
len
);
}
return
len
;
return
len
;
/* return the length of the data written */
#else
return
_LLIO_ERROR
;
#endif
/* RT_USING_
POSIX
*/
#endif
/* RT_USING_
CONSOLE
*/
}
else
if
(
handle
==
_LLIO_STDIN
)
{
return
_LLIO_ERROR
;
}
else
{
#ifdef RT_USING_POSIX
size
=
write
(
handle
,
buf
,
len
);
return
size
;
size
=
write
(
handle
,
buf
,
len
);
return
size
;
/* return the length of the data written */
#else
return
_LLIO_ERROR
;
return
_LLIO_ERROR
;
#endif
/* RT_USING_POSIX */
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录