Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PHPmihuan
rt-thread
提交
29c19f7f
R
rt-thread
项目概览
PHPmihuan
/
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,发现更多精彩内容 >>
提交
29c19f7f
编写于
1月 06, 2022
作者:
mysterywolf
提交者:
Bernard Xiong
1月 08, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[libc] 优化nanosleep函数
上级
8565fe24
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
15 addition
and
29 deletion
+15
-29
components/libc/compilers/common/sys/time.h
components/libc/compilers/common/sys/time.h
+4
-1
components/libc/compilers/common/time.c
components/libc/compilers/common/time.c
+11
-28
未找到文件。
components/libc/compilers/common/sys/time.h
浏览文件 @
29c19f7f
...
...
@@ -79,6 +79,10 @@ char* ctime(const time_t* tim_p);
time_t
time
(
time_t
*
t
);
#endif
#ifdef RT_USING_POSIX_DELAY
int
nanosleep
(
const
struct
timespec
*
rqtp
,
struct
timespec
*
rmtp
);
#endif
/* RT_USING_POSIX_DELAY */
#ifdef RT_USING_POSIX_CLOCK
/* POSIX clock and timer */
#define MILLISECOND_PER_SECOND 1000UL
...
...
@@ -110,7 +114,6 @@ int clock_getres (clockid_t clockid, struct timespec *res);
int
clock_gettime
(
clockid_t
clockid
,
struct
timespec
*
tp
);
int
clock_settime
(
clockid_t
clockid
,
const
struct
timespec
*
tp
);
int
clock_nanosleep
(
clockid_t
clockid
,
int
flags
,
const
struct
timespec
*
rqtp
,
struct
timespec
*
rmtp
);
int
nanosleep
(
const
struct
timespec
*
rqtp
,
struct
timespec
*
rmtp
);
int
rt_timespec_to_tick
(
const
struct
timespec
*
time
);
#endif
/* RT_USING_POSIX_CLOCK */
...
...
components/libc/compilers/common/time.c
浏览文件 @
29c19f7f
...
...
@@ -488,8 +488,18 @@ RTM_EXPORT(settimeofday);
RTM_EXPORT
(
difftime
);
RTM_EXPORT
(
strftime
);
#ifdef RT_USING_POSIX_
CLOCK
#ifdef RT_USING_POSIX_
DELAY
#include <delay.h>
int
nanosleep
(
const
struct
timespec
*
rqtp
,
struct
timespec
*
rmtp
)
{
sleep
(
rqtp
->
tv_sec
);
ndelay
(
rqtp
->
tv_nsec
);
return
0
;
}
RTM_EXPORT
(
nanosleep
);
#endif
/* RT_USING_POSIX_DELAY */
#ifdef RT_USING_POSIX_CLOCK
#ifdef RT_USING_RTC
static
volatile
struct
timeval
_timevalue
;
static
int
_rt_clock_time_system_init
()
...
...
@@ -670,33 +680,6 @@ int clock_settime(clockid_t clockid, const struct timespec *tp)
}
RTM_EXPORT
(
clock_settime
);
int
nanosleep
(
const
struct
timespec
*
rqtp
,
struct
timespec
*
rmtp
)
{
uint32_t
time_ms
=
rqtp
->
tv_sec
*
1000
;
uint32_t
time_us
=
rqtp
->
tv_nsec
/
1000
;
time_ms
+=
time_us
/
1000
;
time_us
=
time_us
%
1000
;
if
(
rt_thread_self
()
!=
RT_NULL
)
{
rt_thread_mdelay
(
time_ms
);
}
else
/* scheduler has not run yet */
{
while
(
time_ms
>
0
)
{
udelay
(
1000u
);
time_ms
-=
1
;
}
}
udelay
(
time_us
);
return
0
;
}
RTM_EXPORT
(
nanosleep
);
int
rt_timespec_to_tick
(
const
struct
timespec
*
time
)
{
int
tick
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录