From 067dc1117f3667129ebe3994b2c2a44d5a4492f5 Mon Sep 17 00:00:00 2001 From: cheng_jinsong Date: Mon, 17 Oct 2022 20:59:52 +0800 Subject: [PATCH] fix parse service cfg Signed-off-by: cheng_jinsong --- interfaces/innerkits/include/beget_ext.h | 1 - services/init/init_service_manager.c | 22 +++++++++------------- services/init/standard/BUILD.gn | 3 +++ services/log/init_log.c | 14 -------------- services/modules/init_hook/init_hook.c | 13 +++++++++++++ 5 files changed, 25 insertions(+), 28 deletions(-) diff --git a/interfaces/innerkits/include/beget_ext.h b/interfaces/innerkits/include/beget_ext.h index 6004f6a5..1b0f0d92 100644 --- a/interfaces/innerkits/include/beget_ext.h +++ b/interfaces/innerkits/include/beget_ext.h @@ -56,7 +56,6 @@ INIT_PUBLIC_API void SetInitLogLevel(InitLogLevel level); INIT_PUBLIC_API int GetInitLogLevel(void); INIT_PUBLIC_API void SetInitCommLog(InitCommLog logFunc); INIT_PUBLIC_API void EnableInitLogFromCmdline(void); -INIT_PUBLIC_API void InitLogLevelFromPersist(void); #define STARTUP_LOGV(domain, tag, fmt, ...) \ StartupLog(INIT_DEBUG, domain, tag, "[%s:%d]" fmt, (FILE_NAME), (__LINE__), ##__VA_ARGS__) diff --git a/services/init/init_service_manager.c b/services/init/init_service_manager.c index f745498e..7603ea3c 100755 --- a/services/init/init_service_manager.c +++ b/services/init/init_service_manager.c @@ -1003,13 +1003,14 @@ void ParseAllServices(const cJSON *fileRoot) Service *service = GetServiceByName(fieldStr); if (service == NULL) { service = AddService(fieldStr); - if (service == NULL) { - INIT_LOGE("Failed to add service name %s", fieldStr); - continue; - } + INIT_ERROR_CHECK(service != NULL, continue, "Failed to add service name %s", fieldStr); } else { INIT_LOGI("Service %s already exists, updating.", fieldStr); +#ifndef __MUSL__ + continue; +#endif } + service->pid = -1; int ret = ParseOneService(curItem, service); if (ret != SERVICE_SUCCESS) { @@ -1017,15 +1018,10 @@ void ParseAllServices(const cJSON *fileRoot) service = NULL; continue; } - if (ParseServiceSocket(curItem, service) != SERVICE_SUCCESS) { - FreeServiceSocket(service->socketCfg); - service->socketCfg = NULL; - } - if (ParseServiceFile(curItem, service) != SERVICE_SUCCESS) { - FreeServiceFile(service->fileCfg); - service->fileCfg = NULL; - } - + ret = ParseServiceSocket(curItem, service); + INIT_CHECK(ret == 0, FreeServiceSocket(service->socketCfg); service->socketCfg = NULL); + ret = ParseServiceFile(curItem, service); + INIT_CHECK(ret == 0, FreeServiceFile(service->fileCfg); service->fileCfg = NULL); // Watch "/dev/console" node for starting console service ondemand. if ((strcmp(service->name, "console") == 0) && IsOnDemandService(service)) { if (WatchConsoleDevice(service) < 0) { diff --git a/services/init/standard/BUILD.gn b/services/init/standard/BUILD.gn index 53002f0c..ef436d79 100644 --- a/services/init/standard/BUILD.gn +++ b/services/init/standard/BUILD.gn @@ -146,6 +146,9 @@ ohos_executable("init") { "//base/startup/init/interfaces/innerkits/init_module_engine:libinit_stub_versionscript", "name") + stub_version_script_suffix defines += [ "_GNU_SOURCE" ] + if (use_musl) { + defines += [ "__MUSL__" ] + } install_images = [ "system", "updater", diff --git a/services/log/init_log.c b/services/log/init_log.c index c2bbec95..453d80fa 100644 --- a/services/log/init_log.c +++ b/services/log/init_log.c @@ -23,7 +23,6 @@ #include #include "init_utils.h" -#include "param/init_param.h" #include "securec.h" #ifdef OHOS_LITE #ifndef INIT_LOG_INIT @@ -173,16 +172,3 @@ INIT_PUBLIC_API void EnableInitLogFromCmdline(void) SetInitLogLevel(logLevel); return; } - -INIT_PUBLIC_API void InitLogLevelFromPersist(void) -{ - char logLevel[2] = {0}; // 2 is set param "persist.init.debug.loglevel" value length. - uint32_t len = sizeof(logLevel); - int ret = SystemReadParam("persist.init.debug.loglevel", logLevel, &len); - INIT_INFO_CHECK(ret == 0, return, "Can not get log level from param, keep the original loglevel."); - errno = 0; - unsigned int level = (unsigned int)strtoul(logLevel, 0, 10); // 10 is decimal - INIT_INFO_CHECK(errno == 0, return, "Failed strtoul %s, err=%d", logLevel, errno); - SetInitLogLevel(level); - return; -} diff --git a/services/modules/init_hook/init_hook.c b/services/modules/init_hook/init_hook.c index be882629..3c252b00 100755 --- a/services/modules/init_hook/init_hook.c +++ b/services/modules/init_hook/init_hook.c @@ -170,6 +170,19 @@ static void DumpServiceHook(void) return; } +static void InitLogLevelFromPersist(void) +{ + char logLevel[2] = {0}; // 2 is set param "persist.init.debug.loglevel" value length. + uint32_t len = sizeof(logLevel); + int ret = SystemReadParam("persist.init.debug.loglevel", logLevel, &len); + INIT_INFO_CHECK(ret == 0, return, "Can not get log level from param, keep the original loglevel."); + errno = 0; + unsigned int level = (unsigned int)strtoul(logLevel, 0, 10); // 10 is decimal + INIT_INFO_CHECK(errno == 0, return, "Failed strtoul %s, err=%d", logLevel, errno); + SetInitLogLevel(level); + return; +} + static int InitDebugHook(const HOOK_INFO *info, void *cookie) { UNUSED(info); -- GitLab