Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
7cf030e7
S
Startup Init Lite
项目概览
OpenHarmony
/
Startup Init Lite
12 个月 前同步成功
通知
3
Star
37
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Startup Init Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
7cf030e7
编写于
8月 26, 2022
作者:
O
openharmony_ci
提交者:
Gitee
8月 26, 2022
浏览文件
操作
浏览文件
下载
差异文件
!938 add pretimeout
Merge pull request !938 from stesen/master
上级
ee304957
e353c5ab
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
31 addition
and
1 deletion
+31
-1
watchdog/init_watchdog.c
watchdog/init_watchdog.c
+31
-1
未找到文件。
watchdog/init_watchdog.c
浏览文件 @
7cf030e7
...
...
@@ -37,6 +37,9 @@
#define DEFAULT_GAP 3
#define CONVERSION_BASE 1000000U
#define PRETIMEOUT_GAP 5
#define PRETIMEOUT_DIV 2
static
void
WaitAtStartup
(
const
char
*
source
)
{
unsigned
int
count
=
0
;
...
...
@@ -83,6 +86,12 @@ int main(int argc, const char *argv[])
#endif
int
timeoutSet
=
interval
+
gap
;
int
timeoutGet
=
0
;
#ifdef WDIOC_SETPRETIMEOUT
int
preTimeout
=
0
;
int
preTimeoutGet
=
0
;
#endif
int
ret
=
ioctl
(
fd
,
WDIOC_SETTIMEOUT
,
&
timeoutSet
);
if
(
ret
)
{
INIT_LOGE
(
"Failed to set timeout to %d
\n
"
,
timeoutSet
);
...
...
@@ -90,9 +99,30 @@ int main(int argc, const char *argv[])
ret
=
ioctl
(
fd
,
WDIOC_GETTIMEOUT
,
&
timeoutGet
);
if
(
ret
)
{
INIT_LOGE
(
"Failed to get timeout
\n
"
);
}
else
{
}
if
(
timeoutGet
>
0
)
{
interval
=
(
timeoutGet
>
gap
)
?
(
timeoutGet
-
gap
)
:
1
;
}
#ifdef WDIOC_SETPRETIMEOUT
preTimeout
=
timeoutGet
-
PRETIMEOUT_GAP
;
// ensure pretimeout smaller then timeout
if
(
preTimeout
>
0
)
{
ret
=
ioctl
(
fd
,
WDIOC_SETPRETIMEOUT
,
&
preTimeout
);
if
(
ret
)
{
INIT_LOGE
(
"Failed to set pretimeout to %d
\n
"
,
preTimeout
);
}
ret
=
ioctl
(
fd
,
WDIOC_GETPRETIMEOUT
,
&
preTimeoutGet
);
if
(
ret
)
{
INIT_LOGE
(
"Failed to get pretimeout
\n
"
);
}
}
if
(
preTimeoutGet
>
0
&&
preTimeoutGet
<
interval
)
{
interval
=
preTimeoutGet
/
PRETIMEOUT_DIV
;
}
#endif
while
(
1
)
{
ioctl
(
fd
,
WDIOC_KEEPALIVE
);
sleep
(
interval
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录