Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
d6ba6273
S
Startup Init Lite
项目概览
OpenHarmony
/
Startup Init Lite
接近 2 年 前同步成功
通知
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看板
未验证
提交
d6ba6273
编写于
11月 25, 2022
作者:
O
openharmony_ci
提交者:
Gitee
11月 25, 2022
浏览文件
操作
浏览文件
下载
差异文件
!1530 Fix: init review检视意见修改
Merge pull request !1530 from cheng_jinsong/init_1118
上级
89fe10a0
ff7064bf
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
29 addition
and
23 deletion
+29
-23
services/init/include/init_service.h
services/init/include/init_service.h
+1
-1
services/init/include/init_service_socket.h
services/init/include/init_service_socket.h
+2
-2
services/init/init_capability.c
services/init/init_capability.c
+3
-1
services/init/init_common_cmds.c
services/init/init_common_cmds.c
+4
-3
services/init/init_common_service.c
services/init/init_common_service.c
+3
-3
services/init/init_config.c
services/init/init_config.c
+2
-2
services/init/init_service_manager.c
services/init/init_service_manager.c
+5
-2
services/init/init_service_socket.c
services/init/init_service_socket.c
+5
-5
services/init/lite/init_jobs.c
services/init/lite/init_jobs.c
+1
-1
test/unittest/init/group_unittest.cpp
test/unittest/init/group_unittest.cpp
+1
-1
ueventd/ueventd_device_handler.c
ueventd/ueventd_device_handler.c
+2
-2
未找到文件。
services/init/include/init_service.h
浏览文件 @
d6ba6273
...
...
@@ -172,7 +172,7 @@ void ReapService(Service *service);
void
NotifyServiceChange
(
Service
*
service
,
int
status
);
int
IsForbidden
(
const
char
*
fieldStr
);
int
SetImportantValue
(
Service
*
curServ
,
const
char
*
attrName
,
int
value
,
int
flag
);
int
Ge
tServiceCaps
(
const
cJSON
*
curArrItem
,
Service
*
curServ
);
int
Ini
tServiceCaps
(
const
cJSON
*
curArrItem
,
Service
*
curServ
);
int
ServiceExec
(
const
Service
*
service
);
void
CloseServiceFds
(
Service
*
service
,
bool
needFree
);
int
UpdaterServiceFds
(
Service
*
service
,
int
*
fds
,
size_t
fdCount
);
...
...
services/init/include/init_service_socket.h
浏览文件 @
d6ba6273
...
...
@@ -73,8 +73,8 @@ typedef struct ServiceSocket_ {
int
CreateServiceSocket
(
struct
Service_
*
service
);
void
CloseServiceSocket
(
struct
Service_
*
service
);
int
SocketAdd
Watcher
(
ServiceWatcher
*
watcherHandle
,
struct
Service_
*
service
,
int
fd
);
void
SocketDel
Watcher
(
ServiceWatcher
watcherHandle
);
int
AddSocket
Watcher
(
ServiceWatcher
*
watcherHandle
,
struct
Service_
*
service
,
int
fd
);
void
RemoveSocket
Watcher
(
ServiceWatcher
watcherHandle
);
#ifdef __cplusplus
#if __cplusplus
...
...
services/init/init_capability.c
浏览文件 @
d6ba6273
...
...
@@ -84,7 +84,7 @@ static unsigned int GetCapByString(const char *capStr)
return
CAP_LAST_CAP
+
1
;
}
int
Ge
tServiceCaps
(
const
cJSON
*
curArrItem
,
Service
*
service
)
int
Ini
tServiceCaps
(
const
cJSON
*
curArrItem
,
Service
*
service
)
{
INIT_ERROR_CHECK
(
service
!=
NULL
,
return
SERVICE_FAILURE
,
"service is null ptr."
);
INIT_ERROR_CHECK
(
curArrItem
!=
NULL
,
return
SERVICE_FAILURE
,
"json is null ptr."
);
...
...
@@ -116,6 +116,8 @@ int GetServiceCaps(const cJSON *curArrItem, Service *service)
break
;
}
caps
=
GetCapByString
(
capStr
);
}
else
{
caps
=
CAP_LAST_CAP
+
1
;
}
if
((
caps
>
CAP_LAST_CAP
)
&&
(
caps
!=
(
unsigned
int
)
FULL_CAP
))
{
INIT_LOGE
(
"service=%s not support caps = %s caps %d"
,
service
->
name
,
capStr
,
caps
);
...
...
services/init/init_common_cmds.c
浏览文件 @
d6ba6273
...
...
@@ -68,7 +68,7 @@ static char *AddOneArg(const char *param, size_t paramLen)
begin
=
strchr
(
begin
+
1
,
'$'
);
}
size_t
allocSize
=
paramLen
+
(
PARAM_VALUE_LEN_MAX
*
valueCount
)
+
1
;
char
*
arg
=
calloc
(
sizeof
(
char
),
allocSize
);
char
*
arg
=
calloc
(
allocSize
,
sizeof
(
char
)
);
INIT_CHECK
(
arg
!=
NULL
,
return
NULL
);
int
ret
=
GetParamValue
(
param
,
paramLen
,
arg
,
allocSize
);
INIT_ERROR_CHECK
(
ret
==
0
,
free
(
arg
);
...
...
@@ -104,6 +104,7 @@ char *BuildStringFromCmdArg(const struct CmdArgs *ctx, int startIndex)
const
struct
CmdArgs
*
GetCmdArg
(
const
char
*
cmdContent
,
const
char
*
delim
,
int
argsCount
)
{
INIT_CHECK_RETURN_VALUE
(
cmdContent
!=
NULL
,
NULL
);
INIT_CHECK_RETURN_VALUE
(
delim
!=
NULL
,
NULL
);
INIT_WARNING_CHECK
(
argsCount
<=
SPACES_CNT_IN_CMD_MAX
,
argsCount
=
SPACES_CNT_IN_CMD_MAX
,
"Too much arguments for command, max number is %d"
,
SPACES_CNT_IN_CMD_MAX
);
struct
CmdArgs
*
ctx
=
(
struct
CmdArgs
*
)
calloc
(
1
,
sizeof
(
struct
CmdArgs
)
+
sizeof
(
char
*
)
*
(
argsCount
+
1
));
...
...
@@ -427,7 +428,7 @@ static void DoMount(const struct CmdArgs *ctx)
INIT_ERROR_CHECK
(
fileSysType
!=
NULL
,
return
,
"Failed to get fileSysType."
);
index
++
;
char
*
source
=
(
ctx
->
argc
>
index
)
?
ctx
->
argv
[
index
]
:
NULL
;
char
*
source
=
(
ctx
->
argc
>
index
)
?
ctx
->
argv
[
index
]
:
NULL
;
INIT_ERROR_CHECK
(
source
!=
NULL
,
return
,
"Failed to get source."
);
index
++
;
...
...
@@ -714,7 +715,7 @@ int GetCmdLinesFromJson(const cJSON *root, CmdLines **cmdLines)
return
0
;
}
long
long
InitDiffTime
(
INIT_TIMING_STAT
*
stat
)
long
long
InitDiffTime
(
INIT_TIMING_STAT
*
stat
)
{
long
long
diff
=
(
long
long
)((
stat
->
endTime
.
tv_sec
-
stat
->
startTime
.
tv_sec
)
*
1000000
);
// 1000000 1000ms
if
(
stat
->
endTime
.
tv_nsec
>
stat
->
startTime
.
tv_nsec
)
{
...
...
services/init/init_common_service.c
浏览文件 @
d6ba6273
...
...
@@ -470,7 +470,7 @@ static void CheckServiceSocket(Service *service)
INIT_LOGE
(
"Invalid socket %s for service"
,
service
->
name
);
tmpSock
=
tmpSock
->
next
;
}
SocketAdd
Watcher
(
&
tmpSock
->
watcher
,
service
,
tmpSock
->
sockFd
);
AddSocket
Watcher
(
&
tmpSock
->
watcher
,
service
,
tmpSock
->
sockFd
);
tmpSock
=
tmpSock
->
next
;
}
return
;
...
...
@@ -556,8 +556,8 @@ void ServiceReap(Service *service)
int
UpdaterServiceFds
(
Service
*
service
,
int
*
fds
,
size_t
fdCount
)
{
if
(
service
==
NULL
)
{
INIT_LOGE
(
"Invalid service info"
);
if
(
service
==
NULL
||
fds
==
NULL
)
{
INIT_LOGE
(
"Invalid service info
or fds
"
);
return
-
1
;
}
...
...
services/init/init_config.c
浏览文件 @
d6ba6273
...
...
@@ -59,8 +59,8 @@ int ParseInitCfg(const char *configFile, void *context)
static
void
ParseAllImports
(
const
cJSON
*
root
)
{
char
*
tmpParamValue
=
calloc
(
sizeof
(
char
),
PARAM_VALUE_LEN_MAX
+
1
);
INIT_ERROR_CHECK
(
tmpParamValue
!=
0
,
return
,
"Failed to alloc memory for param"
);
char
*
tmpParamValue
=
calloc
(
PARAM_VALUE_LEN_MAX
+
1
,
sizeof
(
char
)
);
INIT_ERROR_CHECK
(
tmpParamValue
!=
NULL
,
return
,
"Failed to alloc memory for param"
);
cJSON
*
importAttr
=
cJSON_GetObjectItemCaseSensitive
(
root
,
"import"
);
if
(
!
cJSON_IsArray
(
importAttr
))
{
...
...
services/init/init_service_manager.c
浏览文件 @
d6ba6273
...
...
@@ -247,6 +247,9 @@ static int GetGid(cJSON *json, gid_t *gid, Service *curServ)
*
gid
=
DecodeGid
(
str
);
}
else
if
(
cJSON_IsNumber
(
json
))
{
*
gid
=
(
gid_t
)
cJSON_GetNumberValue
(
json
);
}
else
{
INIT_LOGW
(
"Service %s with invalid gid configuration"
,
curServ
->
name
);
*
gid
=
-
1
;
// Invalid gid, set as -1
}
INIT_ERROR_CHECK
(
*
gid
!=
(
gid_t
)(
-
1
),
return
SERVICE_FAILURE
,
"Failed to get gid for %s"
,
curServ
->
name
);
return
SERVICE_SUCCESS
;
...
...
@@ -320,7 +323,7 @@ static int ParseSocketFamily(cJSON *json, ServiceSocket *sockopt)
char
*
stringValue
=
GetStringValue
(
json
,
"family"
,
&
strLen
);
INIT_ERROR_CHECK
((
stringValue
!=
NULL
)
&&
(
strLen
>
0
),
return
SERVICE_FAILURE
,
"Failed to get string for family"
);
if
(
str
ncmp
(
stringValue
,
"AF_UNIX"
,
strLen
)
==
0
)
{
if
(
str
cmp
(
stringValue
,
"AF_UNIX"
)
==
0
)
{
sockopt
->
family
=
AF_UNIX
;
}
else
if
(
strncmp
(
stringValue
,
"AF_NETLINK"
,
strLen
)
==
0
)
{
sockopt
->
family
=
AF_NETLINK
;
...
...
@@ -851,7 +854,7 @@ int ParseOneService(const cJSON *curItem, Service *service)
ParseOneServiceArgs
(
curItem
,
service
);
ret
=
GetServiceSandbox
(
curItem
,
service
);
INIT_ERROR_CHECK
(
ret
==
0
,
return
SERVICE_FAILURE
,
"Failed to get sandbox for service %s"
,
service
->
name
);
ret
=
Ge
tServiceCaps
(
curItem
,
service
);
ret
=
Ini
tServiceCaps
(
curItem
,
service
);
INIT_ERROR_CHECK
(
ret
==
0
,
return
SERVICE_FAILURE
,
"Failed to get caps for service %s"
,
service
->
name
);
ret
=
GetServiceOnDemand
(
curItem
,
service
);
INIT_ERROR_CHECK
(
ret
==
0
,
return
SERVICE_FAILURE
,
"Failed to get ondemand flag for service %s"
,
service
->
name
);
...
...
services/init/init_service_socket.c
浏览文件 @
d6ba6273
...
...
@@ -177,13 +177,13 @@ static void ProcessWatchEvent_(const WatcherHandle watcherHandle, int fd, uint32
return
;
}
INIT_LOGI
(
"Socket information detected, fd:%d service name:%s"
,
fd
,
service
->
name
);
SocketDel
Watcher
(
watcherHandle
);
RemoveSocket
Watcher
(
watcherHandle
);
if
(
ServiceStart
(
service
)
!=
SERVICE_SUCCESS
)
{
INIT_LOGE
(
"Service %s start failed!"
,
service
->
name
);
}
}
int
SocketAdd
Watcher
(
ServiceWatcher
*
watcherHandle
,
Service
*
service
,
int
fd
)
int
AddSocket
Watcher
(
ServiceWatcher
*
watcherHandle
,
Service
*
service
,
int
fd
)
{
WatcherHandle
handle
;
LE_WatchInfo
info
=
{};
...
...
@@ -197,7 +197,7 @@ int SocketAddWatcher(ServiceWatcher *watcherHandle, Service *service, int fd)
return
ret
;
}
void
SocketDel
Watcher
(
ServiceWatcher
watcherHandle
)
void
RemoveSocket
Watcher
(
ServiceWatcher
watcherHandle
)
{
LE_RemoveWatcher
(
LE_GetDefaultLoop
(),
(
WatcherHandle
)
watcherHandle
);
}
...
...
@@ -219,7 +219,7 @@ int CreateServiceSocket(Service *service)
INIT_CHECK_RETURN_VALUE
(
ret
==
0
,
-
1
);
}
if
(
strcmp
(
service
->
name
,
"ueventd"
)
!=
0
)
{
ret
=
SocketAdd
Watcher
(
&
tmpSock
->
watcher
,
service
,
tmpSock
->
sockFd
);
ret
=
AddSocket
Watcher
(
&
tmpSock
->
watcher
,
service
,
tmpSock
->
sockFd
);
INIT_CHECK_RETURN_VALUE
(
ret
==
0
,
-
1
);
}
}
...
...
@@ -237,7 +237,7 @@ void CloseServiceSocket(Service *service)
ServiceSocket
*
sockopt
=
service
->
socketCfg
;
while
(
sockopt
!=
NULL
)
{
if
(
sockopt
->
watcher
!=
NULL
)
{
SocketDel
Watcher
(
sockopt
->
watcher
);
RemoveSocket
Watcher
(
sockopt
->
watcher
);
}
if
(
sockopt
->
sockFd
>=
0
)
{
close
(
sockopt
->
sockFd
);
...
...
services/init/lite/init_jobs.c
浏览文件 @
d6ba6273
...
...
@@ -52,7 +52,7 @@ static int GetJobName(const cJSON *jobItem, Job *resJob)
return
0
;
}
if
(
memcpy_s
(
resJob
->
name
,
MAX_JOB_NAME_LEN
,
jobNameStr
,
strlen
(
jobNameStr
)
)
!=
EOK
)
{
if
(
strcpy_s
(
resJob
->
name
,
MAX_JOB_NAME_LEN
,
jobNameStr
)
!=
EOK
)
{
INIT_LOGE
(
"Get job name
\"
%s
\"
failed"
,
jobNameStr
);
return
0
;
}
...
...
test/unittest/init/group_unittest.cpp
浏览文件 @
d6ba6273
...
...
@@ -362,7 +362,7 @@ HWTEST_F(InitGroupManagerUnitTest, TestProcessWatchEvent, TestSize.Level1)
ServiceSocket
servercfg
=
{.
next
=
nullptr
,
.
sockFd
=
0
};
service
->
socketCfg
=
&
servercfg
;
ServiceWatcher
watcher
;
int
ret
=
SocketAdd
Watcher
(
&
watcher
,
service
,
0
);
int
ret
=
AddSocket
Watcher
(
&
watcher
,
service
,
0
);
ASSERT_EQ
(
ret
,
0
);
uint32_t
event
;
((
WatcherTask
*
)
watcher
)
->
processEvent
((
WatcherHandle
)
watcher
,
0
,
&
event
,
service
);
...
...
ueventd/ueventd_device_handler.c
浏览文件 @
d6ba6273
...
...
@@ -235,7 +235,7 @@ static void BuildDeviceSymbolLinks(char **links, int linkNum, const char *parent
INIT_LOGW
(
"Too many links, ignore"
);
return
;
}
links
[
linkNum
]
=
calloc
(
sizeof
(
char
),
DEVICE_FILE_SIZE
);
links
[
linkNum
]
=
calloc
(
DEVICE_FILE_SIZE
,
sizeof
(
char
)
);
if
(
links
[
linkNum
]
==
NULL
)
{
INIT_LOGE
(
"Failed to allocate memory for link, err = %d"
,
errno
);
return
;
...
...
@@ -287,7 +287,7 @@ static char **GetBlockDeviceSymbolLinks(const struct Uevent *uevent)
INIT_LOGE
(
"Failed to build sys path for device %s"
,
uevent
->
syspath
);
return
NULL
;
}
char
**
links
=
calloc
(
sizeof
(
char
*
),
BLOCKDEVICE_LINKS
);
char
**
links
=
calloc
(
BLOCKDEVICE_LINKS
,
sizeof
(
char
*
)
);
int
linkNum
=
0
;
if
(
links
==
NULL
)
{
INIT_LOGE
(
"Failed to allocate memory for links, err = %d"
,
errno
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录