Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
ea639585
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,发现更多精彩内容 >>
提交
ea639585
编写于
9月 07, 2022
作者:
C
cheng_jinsong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix console service issue
Signed-off-by:
N
cheng_jinsong
<
chengjinsong2@huawei.com
>
上级
11a902ec
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
21 deletion
+14
-21
services/init/init_common_service.c
services/init/init_common_service.c
+1
-5
services/init/init_service_manager.c
services/init/init_service_manager.c
+12
-14
ueventd/ueventd.c
ueventd/ueventd.c
+1
-2
未找到文件。
services/init/init_common_service.c
浏览文件 @
ea639585
...
...
@@ -309,11 +309,7 @@ static int InitServicePropertys(Service *service)
CreateServiceFile
(
service
->
fileCfg
);
if
((
service
->
attribute
&
SERVICE_ATTR_CONSOLE
))
{
if
(
strcmp
(
service
->
name
,
"console"
)
!=
0
||
!
IsOnDemandService
(
service
))
{
OpenConsole
();
}
else
{
setsid
();
}
OpenConsole
();
}
PublishHoldFds
(
service
);
...
...
services/init/init_service_manager.c
浏览文件 @
ea639585
...
...
@@ -881,7 +881,9 @@ static void ProcessConsoleEvent(const WatcherHandle handler, int fd, uint32_t *e
INIT_LOGE
(
"Process console event with invalid arguments"
);
return
;
}
// Since we've got event from console device
// the fd related to '/dev/console' does not need anymore, close it.
close
(
fd
);
if
(
strcmp
(
service
->
name
,
"console"
)
!=
0
)
{
INIT_LOGE
(
"Process console event with invalid service %s, only console service should do this"
,
service
->
name
);
return
;
...
...
@@ -892,19 +894,14 @@ static void ProcessConsoleEvent(const WatcherHandle handler, int fd, uint32_t *e
unsigned
int
len
=
MAX_BUFFER_LEN
;
if
(
SystemReadParam
(
"const.debuggable"
,
value
,
&
len
)
!=
0
)
{
INIT_LOGE
(
"Failed to read parameter
\'
const.debuggable
\'
, prevent console service starting"
);
CloseStdio
();
return
;
}
int
isDebug
=
StringToInt
(
value
,
0
);
if
(
isDebug
!=
1
)
{
INIT_LOGI
(
"Non-debuggable system, prevent console service starting"
);
CloseStdio
();
return
;
}
ioctl
(
fd
,
TIOCSCTTY
,
0
);
RedirectStdio
(
fd
);
close
(
fd
);
if
(
ServiceStart
(
service
)
!=
SERVICE_SUCCESS
)
{
INIT_LOGE
(
"Start console service failed"
);
}
...
...
@@ -942,11 +939,14 @@ int WatchConsoleDevice(Service *service)
if
(
errno
==
ENOENT
)
{
INIT_LOGW
(
"/dev/console is not exist, wait for it..."
);
WaitForFile
(
"/dev/console"
,
WAIT_MAX_SECOND
);
fd
=
open
(
"/dev/console"
,
O_RDWR
);
if
(
fd
<
0
)
{
INIT_LOGW
(
"Failed to open /dev/console after try 1 time"
);
return
-
1
;
}
}
else
{
INIT_LOGE
(
"Failed to open /dev/console, err = %d"
,
errno
);
return
-
1
;
}
fd
=
open
(
"/dev/console"
,
O_RDWR
);
if
(
fd
<
0
)
{
INIT_LOGW
(
"Failed to open /dev/console after try 1 time, err = %d"
,
errno
);
return
-
1
;
}
}
...
...
@@ -1005,8 +1005,6 @@ void ParseAllServices(const cJSON *fileRoot)
if
((
strcmp
(
service
->
name
,
"console"
)
==
0
)
&&
IsOnDemandService
(
service
))
{
if
(
WatchConsoleDevice
(
service
)
<
0
)
{
INIT_LOGW
(
"Failed to watch
\'
/dev/console
\'
device"
);
INIT_LOGW
(
"Remove service
\'
%s
\'
ondemand attribute"
,
service
->
name
);
UnMarkServiceAsOndemand
(
service
);
}
}
#ifndef OHOS_LITE
...
...
@@ -1178,4 +1176,4 @@ int GetKillServiceSig(const char *name)
return
SIGTERM
;
}
return
SIGKILL
;
}
\ No newline at end of file
}
ueventd/ueventd.c
浏览文件 @
ea639585
...
...
@@ -136,8 +136,7 @@ typedef struct {
static
const
DYNAMIC_DEVICE_NODE
dynamicDevices
[]
=
{
{
DEV_NODE_PATH_PREFIX
"tty"
,
S_IFCHR
|
DEFAULT_RW_MODE
},
{
DEV_NODE_PATH_PREFIX
"binder"
,
S_IFCHR
|
DEFAULT_RW_MODE
},
{
DEV_NODE_PATH_PREFIX
"console"
,
S_IFCHR
|
DEFAULT_RW_MODE
},
{
DEV_NODE_PATH_PREFIX
"tty"
,
S_IFCHR
|
DEFAULT_RW_MODE
}
{
DEV_NODE_PATH_PREFIX
"console"
,
S_IFCHR
|
S_IRUSR
|
S_IWUSR
|
S_IRGRP
|
S_IWGRP
}
};
static
void
HandleRequiredDynamicDeviceNodes
(
const
struct
Uevent
*
uevent
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录