Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
三号室
rt-thread
提交
6c7dd305
R
rt-thread
项目概览
三号室
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6c7dd305
编写于
2月 08, 2021
作者:
mysterywolf
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add function settimeofday & stime
上级
4c696243
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
55 addition
and
20 deletion
+55
-20
components/libc/compilers/common/sys/time.h
components/libc/compilers/common/sys/time.h
+3
-1
components/libc/compilers/common/time.c
components/libc/compilers/common/time.c
+52
-19
未找到文件。
components/libc/compilers/common/sys/time.h
浏览文件 @
6c7dd305
...
...
@@ -48,8 +48,10 @@ struct timezone {
int
tz_dsttime
;
/* type of dst correction */
};
int
gettimeofday
(
struct
timeval
*
tp
,
struct
timezone
*
tz
);
int
stime
(
const
time_t
*
t
);
time_t
timegm
(
struct
tm
*
const
t
);
int
gettimeofday
(
struct
timeval
*
tv
,
struct
timezone
*
tz
);
int
settimeofday
(
const
struct
timeval
*
tv
,
const
struct
timezone
*
tz
);
#ifdef __cplusplus
}
...
...
components/libc/compilers/common/time.c
浏览文件 @
6c7dd305
...
...
@@ -8,6 +8,8 @@
* 2019-08-21 zhangjun copy from minilibc
* 2020-09-07 Meco Man combine gcc armcc iccarm
* 2021-02-05 Meco Man add timegm()
* 2021-02-07 Meco Man fixed gettimeofday() time()
* 2021-02-08 Meco Man add settimeofday() stime()
*/
#include <sys/time.h>
...
...
@@ -175,24 +177,15 @@ time_t time(time_t *t)
#endif
{
time_t
time_now
=
0
;
#ifdef RT_USING_RTC
static
rt_device_t
device
=
RT_NULL
;
/* optimization: find rtc device only first. */
if
(
device
==
RT_NULL
)
{
device
=
rt_device_find
(
"rtc"
);
}
rt_device_t
device
;
/* read timestamp from RTC device. */
if
(
device
!=
RT_NULL
)
device
=
rt_device_find
(
"rtc"
);
if
(
rt_device_open
(
device
,
0
)
==
RT_EOK
)
{
if
(
rt_device_open
(
device
,
0
)
==
RT_EOK
)
{
rt_device_control
(
device
,
RT_DEVICE_CTRL_RTC_GET_TIME
,
&
time_now
);
rt_device_close
(
device
);
}
rt_device_control
(
device
,
RT_DEVICE_CTRL_RTC_GET_TIME
,
&
time_now
);
rt_device_close
(
device
);
}
#endif
/* RT_USING_RTC */
...
...
@@ -210,15 +203,27 @@ RT_WEAK clock_t clock(void)
return
rt_tick_get
();
}
/* TODO: timezone */
int
gettimeofday
(
struct
timeval
*
tp
,
struct
timezone
*
tz
)
int
stime
(
const
time_t
*
t
)
{
if
(
tp
!=
RT_NULL
)
#ifdef RT_USING_RTC
rt_device_t
device
;
/* read timestamp from RTC device. */
device
=
rt_device_find
(
"rtc"
);
if
(
rt_device_open
(
device
,
0
)
==
RT_EOK
)
{
rt_device_control
(
device
,
RT_DEVICE_CTRL_RTC_SET_TIME
,
(
void
*
)
t
);
rt_device_close
(
device
);
}
else
{
tp
->
tv_sec
=
time
(
RT_NULL
);
tp
->
tv_usec
=
0
;
return
-
1
;
}
return
0
;
#else
return
-
1
;
#endif
/* RT_USING_RTC */
}
time_t
timegm
(
struct
tm
*
const
t
)
...
...
@@ -294,3 +299,31 @@ time_t timegm(struct tm * const t)
i
=
60
;
return
((
day
+
t
->
tm_hour
)
*
i
+
t
->
tm_min
)
*
i
+
t
->
tm_sec
;
}
/* TODO: timezone */
int
gettimeofday
(
struct
timeval
*
tv
,
struct
timezone
*
tz
)
{
if
(
tv
!=
RT_NULL
)
{
tv
->
tv_sec
=
time
(
RT_NULL
);
tv
->
tv_usec
=
0
;
return
0
;
}
else
{
return
-
1
;
}
}
/* TODO: timezone */
int
settimeofday
(
const
struct
timeval
*
tv
,
const
struct
timezone
*
tz
)
{
if
(
tv
!=
RT_NULL
)
{
return
stime
(
&
tv
->
tv_sec
);
}
else
{
return
-
1
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录