Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
ce3e92a8
S
Startup Init Lite
项目概览
OpenHarmony
/
Startup Init Lite
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
未验证
提交
ce3e92a8
编写于
7月 26, 2023
作者:
O
openharmony_ci
提交者:
Gitee
7月 26, 2023
浏览文件
操作
浏览文件
下载
差异文件
!2128 check updated SA before loading
Merge pull request !2128 from zhanghaibo/add_arg
上级
0da55118
a232d123
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
37 addition
and
4 deletion
+37
-4
services/init/init_common_service.c
services/init/init_common_service.c
+37
-4
未找到文件。
services/init/init_common_service.c
浏览文件 @
ce3e92a8
...
...
@@ -369,18 +369,45 @@ void EnterServiceSandbox(Service *service)
#endif
}
void
CheckModuleUpdate
(
int
argc
,
char
**
argv
)
static
void
AddUpdateList
(
ServiceArgs
*
args
,
char
*
updateList
)
{
char
**
argvOrig
=
args
->
argv
;
const
int
paramCount
=
2
;
// -u updatelist
args
->
argv
=
(
char
**
)
malloc
((
args
->
count
+
paramCount
)
*
sizeof
(
char
*
));
INIT_ERROR_CHECK
(
args
->
argv
!=
NULL
,
return
,
"Failed to malloc for argv"
);
int
i
=
0
;
for
(;
i
<
args
->
count
+
1
;
++
i
)
{
if
(
i
==
args
->
count
-
1
)
{
args
->
argv
[
i
]
=
"-u"
;
args
->
argv
[
++
i
]
=
updateList
;
break
;
}
else
{
args
->
argv
[
i
]
=
argvOrig
[
i
];
}
}
args
->
argv
[
++
i
]
=
NULL
;
args
->
count
+=
paramCount
;
free
(
argvOrig
);
}
void
CheckModuleUpdate
(
ServiceArgs
*
args
)
{
INIT_LOGI
(
"CheckModuleUpdate start"
);
void
*
handle
=
dlopen
(
"libmodule_update.z.so"
,
RTLD_NOW
);
INIT_ERROR_CHECK
(
handle
!=
NULL
,
return
,
"dlopen module update lib failed with error:%s"
,
dlerror
());
INIT_LOGI
(
"dlopen success"
);
typedef
void
(
*
ExtFunc
)(
int
,
char
**
);
typedef
char
*
(
*
ExtFunc
)(
int
,
char
**
);
ExtFunc
func
=
(
ExtFunc
)
dlsym
(
handle
,
"CheckModuleUpdate"
);
if
(
func
==
NULL
)
{
INIT_LOGE
(
"dlsym get func failed with error:%s"
,
dlerror
());
}
else
{
func
(
argc
,
argv
);
char
*
updateList
=
func
(
args
->
count
,
args
->
argv
);
INIT_LOGI
(
"update list: %s"
,
updateList
);
if
(
updateList
!=
NULL
)
{
AddUpdateList
(
args
,
updateList
);
}
else
{
INIT_LOGW
(
"no update list"
);
}
}
INIT_LOGI
(
"CheckModuleUpdate end"
);
}
...
...
@@ -514,7 +541,13 @@ int ServiceStart(Service *service)
}
if
(
service
->
attribute
&
SERVICE_ATTR_MODULE_UPDATE
)
{
CheckModuleUpdate
(
service
->
pathArgs
.
count
,
service
->
pathArgs
.
argv
);
ServiceArgs
*
args
=
NULL
;
if
(
service
->
extraArgs
.
argv
!=
NULL
&&
service
->
extraArgs
.
count
>
0
)
{
args
=
&
service
->
extraArgs
;
}
else
{
args
=
&
service
->
pathArgs
;
}
CheckModuleUpdate
(
args
);
}
#ifdef IS_DEBUG_VERSION
// only the image is debuggable and need debug, then wait for debugger
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录