diff --git a/interfaces/innerkits/include/beget_ext.h b/interfaces/innerkits/include/beget_ext.h index 6004f6a524201494d53eb8926fc5d5cc11952114..1b0f0d927fb98f624132b2280aa9df038ac19c31 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 f745498e2451831f81a9405536beb4a2fbd93102..7603ea3c6c29063156e41349f2ee577a4fae9dc9 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 53002f0c11e6e606b9e0e6c13431925ad1379e5d..ef436d79a71723f8e8f6c1c4ba6ff63a8fea0306 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 c2bbec953af8e95a1910ce1b824dce0f4ab4f673..453d80faa7d158314a2013b0a4efedfe990c5887 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 be882629307e222d52b3bff55fcc4cfdea08207f..3c252b008c5570162bee8a98a5531abdfd85f11b 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);