Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Kernel Liteos M
提交
c0c8a7da
K
Kernel Liteos M
项目概览
OpenHarmony
/
Kernel Liteos M
9 个月 前同步成功
通知
20
Star
28
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel Liteos M
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
c0c8a7da
编写于
6月 25, 2022
作者:
O
openharmony_ci
提交者:
Gitee
6月 25, 2022
浏览文件
操作
浏览文件
下载
差异文件
!726 fix: 修复系统时间比RTC时间过快的问题
Merge pull request !726 from zhushengle/tick_3.1
上级
17d7594e
e0fd5c30
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
17 addition
and
8 deletion
+17
-8
kernel/include/los_tick.h
kernel/include/los_tick.h
+4
-0
kernel/src/los_sortlink.c
kernel/src/los_sortlink.c
+1
-1
kernel/src/los_swtmr.c
kernel/src/los_swtmr.c
+4
-4
kernel/src/los_tick.c
kernel/src/los_tick.c
+8
-3
未找到文件。
kernel/include/los_tick.h
浏览文件 @
c0c8a7da
...
...
@@ -157,6 +157,10 @@ extern UINT32 g_sysClock;
#define OS_SYS_NS_TO_CYCLE(time, freq) (((time) / OS_SYS_NS_PER_SECOND) * (freq) + \
((
time
)
%
OS_SYS_NS_PER_SECOND
)
*
(
freq
)
/
OS_SYS_NS_PER_SECOND
)
#define OS_SYS_TICK_TO_CYCLE(ticks) (((UINT64)(ticks) * g_sysClock) / LOSCFG_BASE_CORE_TICK_PER_SECOND)
#define OS_SYS_CYCLE_TO_TICK(cycle) ((((UINT64)(cycle)) * LOSCFG_BASE_CORE_TICK_PER_SECOND) / g_sysClock)
/**
* @ingroup los_tick
* System time basic function error code: Null pointer.
...
...
kernel/src/los_sortlink.c
浏览文件 @
c0c8a7da
...
...
@@ -92,7 +92,7 @@ VOID OsAdd2SortLink(SortLinkList *node, UINT64 startTime, UINT32 waitTicks, Sort
}
intSave
=
LOS_IntLock
();
SET_SORTLIST_VALUE
(
node
,
startTime
+
(
UINT64
)
waitTicks
*
OS_CYCLE_PER_TICK
);
SET_SORTLIST_VALUE
(
node
,
startTime
+
OS_SYS_TICK_TO_CYCLE
(
waitTicks
)
);
OsAddNode2SortLink
(
sortLinkHeader
,
node
);
LOS_IntRestore
(
intSave
);
}
...
...
kernel/src/los_swtmr.c
浏览文件 @
c0c8a7da
...
...
@@ -141,8 +141,8 @@ LITE_OS_SEC_TEXT_INIT UINT32 OsSwtmrTaskCreate(VOID)
STATIC
UINT64
OsSwtmrCalcStartTime
(
UINT64
currTime
,
SWTMR_CTRL_S
*
swtmr
,
const
SWTMR_CTRL_S
*
alignSwtmr
)
{
UINT64
usedTime
,
startTime
;
UINT64
alignEnd
=
(
UINT64
)
alignSwtmr
->
uwInterval
*
OS_CYCLE_PER_TICK
;
UINT64
swtmrTime
=
(
UINT64
)
swtmr
->
uwInterval
*
OS_CYCLE_PER_TICK
;
UINT64
alignEnd
=
OS_SYS_TICK_TO_CYCLE
(
alignSwtmr
->
uwInterval
)
;
UINT64
swtmrTime
=
OS_SYS_TICK_TO_CYCLE
(
swtmr
->
uwInterval
)
;
UINT64
remainTime
=
OsSortLinkGetRemainTime
(
currTime
,
&
alignSwtmr
->
stSortList
);
if
(
remainTime
==
0
)
{
startTime
=
GET_SORTLIST_VALUE
(
&
alignSwtmr
->
stSortList
);
...
...
@@ -357,7 +357,7 @@ LITE_OS_SEC_TEXT UINT32 OsSwtmrGetNextTimeout(VOID)
UINT32
intSave
=
LOS_IntLock
();
UINT64
time
=
OsSortLinkGetNextExpireTime
(
g_swtmrSortLinkList
);
LOS_IntRestore
(
intSave
);
time
=
time
/
OS_CYCLE_PER_TICK
;
time
=
OS_SYS_CYCLE_TO_TICK
(
time
)
;
if
(
time
>
OS_NULL_INT
)
{
time
=
OS_NULL_INT
;
}
...
...
@@ -367,7 +367,7 @@ LITE_OS_SEC_TEXT UINT32 OsSwtmrGetNextTimeout(VOID)
LITE_OS_SEC_TEXT
UINT32
OsSwtmrTimeGet
(
const
SWTMR_CTRL_S
*
swtmr
)
{
UINT64
time
=
OsSortLinkGetTargetExpireTime
(
OsGetCurrSchedTimeCycle
(),
&
swtmr
->
stSortList
);
time
=
time
/
OS_CYCLE_PER_TICK
;
time
=
OS_SYS_CYCLE_TO_TICK
(
time
)
;
if
(
time
>
OS_NULL_INT
)
{
time
=
OS_NULL_INT
;
}
...
...
kernel/src/los_tick.c
浏览文件 @
c0c8a7da
...
...
@@ -48,13 +48,17 @@ LITE_OS_SEC_BSS STATIC UINT64 g_tickTimerStartTime;
#if (LOSCFG_BASE_CORE_TICK_WTIMER == 0)
STATIC
UINT64
g_tickTimerBase
;
STATIC
BOOL
g_tickTimerBaseUpdate
=
FALSE
;
LITE_OS_SEC_TEXT
STATIC
VOID
OsUpdateSysTimeBase
(
VOID
)
{
UINT32
period
=
0
;
(
VOID
)
g_sysTickTimer
->
getCycle
(
&
period
);
g_tickTimerBase
+=
period
;
if
(
g_tickTimerBaseUpdate
==
FALSE
)
{
(
VOID
)
g_sysTickTimer
->
getCycle
(
&
period
);
g_tickTimerBase
+=
period
;
}
g_tickTimerBaseUpdate
=
FALSE
;
}
LITE_OS_SEC_TEXT
VOID
OsTickTimerBaseReset
(
UINT64
currTime
)
...
...
@@ -96,6 +100,7 @@ LITE_OS_SEC_TEXT UINT64 LOS_SysCycleGet(VOID)
/* Turn the timer count */
g_tickTimerBase
+=
period
;
schedTime
=
g_tickTimerBase
+
time
;
g_tickTimerBaseUpdate
=
TRUE
;
}
LOS_ASSERT
(
schedTime
>=
oldSchedTime
);
...
...
@@ -244,7 +249,7 @@ Return : current tick
*****************************************************************************/
LITE_OS_SEC_TEXT_MINOR
UINT64
LOS_TickCountGet
(
VOID
)
{
return
(
LOS_SysCycleGet
()
-
g_tickTimerStartTime
)
/
OS_CYCLE_PER_TICK
;
return
OS_SYS_CYCLE_TO_TICK
(
LOS_SysCycleGet
()
-
g_tickTimerStartTime
)
;
}
/*****************************************************************************
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录