diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/ohos_param_service.c b/recipes-openharmony/openharmony/openharmony-standard-3.0/ohos_param_service.c new file mode 100644 index 0000000000000000000000000000000000000000..d6e44d6637f36200813eb1639117eebfb15e7b97 --- /dev/null +++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/ohos_param_service.c @@ -0,0 +1,33 @@ +/* + * SPDX-FileCopyrightText: Huawei Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include <signal.h> +#include <init_log.h> +#include <init_param.h> + +void sig_handler(int signum) { + INIT_LOGI("Stopping param service...") + StopParamService(); +} + +int main(int argc, char **argv) +{ + struct sigaction action = { 0 }; + + InitParamService(); + LoadDefaultParams("/system/etc/ohos.para"); + + action.sa_handler = sig_handler; + sigaction(SIGTERM, &action, NULL); + sigaction(SIGINT, &action, NULL); + + // Following call spins up libuv event loop that will keep service running + INIT_LOGI("Starting param service...") + StartParamService(); + + return 0; +} + diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/ohos_param_service.patch b/recipes-openharmony/openharmony/openharmony-standard-3.0/ohos_param_service.patch new file mode 100644 index 0000000000000000000000000000000000000000..3e95bc3f8f440467db5f5259189d16a2b755e28f --- /dev/null +++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/ohos_param_service.patch @@ -0,0 +1,99 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: Apache-2.0 + +ohos_param_service: Add to build system + +In OpenHarmony 3.0 Param Service is a part of the whole Init system. This +service is required by many other services. Therefore we have to split out +the service as an independent from Init when Init is not used. + +Signed-off-by: Robert Drab <robert.drab@huawei.com> +Upstream-Status: Inappropriate + +diff --git a/services/BUILD.gn b/services/BUILD.gn +index 1994c2ef..95867aa2 100644 +--- a/services/BUILD.gn ++++ b/services/BUILD.gn +@@ -85,6 +85,25 @@ if (defined(ohos_lite)) { + } else { + import("//build/ohos.gni") + ++ ohos_executable("ohos_param_service") { ++ sources = [ "param/src/ohos_param_service.c" ] ++ include_dirs = [ ++ "//base/startup/init_lite/services/include/param", ++ "//base/startup/init_lite/services/log", ++ "//third_party/cJSON", ++ ] ++ deps = [ ++ "//base/startup/init_lite/services/log:init_log", ++ "//base/startup/init_lite/services/param:paramservice", ++ ] ++ install_images = [ ++ "system", ++ "updater", ++ ] ++ install_enable = true ++ part_name = "startup_l2" ++ } ++ + ohos_executable("init") { + sources = [ + "src/device.c", +@@ -132,6 +151,7 @@ if (defined(ohos_lite)) { + + group("startup_init") { + deps = [ ++ ":ohos_param_service", + ":init", + ":init_etc", + "//base/startup/init_lite/interfaces/innerkits/socket:libsocket", +diff --git a/services/param/BUILD.gn b/services/param/BUILD.gn +index 07e1d278..ba420b66 100644 +--- a/services/param/BUILD.gn ++++ b/services/param/BUILD.gn +@@ -83,7 +83,7 @@ ohos_executable("getparam") { + "//third_party/cJSON:cjson_static", + ] + install_enable = true +- part_name = "init" ++ part_name = "startup_l2" + } + + ohos_executable("setparam") { +@@ -100,5 +100,5 @@ ohos_executable("setparam") { + "//third_party/cJSON:cjson_static", + ] + install_enable = true +- part_name = "init" ++ part_name = "startup_l2" + } +diff --git a/services/param/service/param_service.c b/services/param/service/param_service.c +index cd5d93be..03a10ae0 100644 +--- a/services/param/service/param_service.c ++++ b/services/param/service/param_service.c +@@ -131,7 +131,11 @@ static int ProcessParamSet(const RequestMsg *msg) + ret = WritePersistParam(info[0].value, info[1].value); + PARAM_CHECK(ret == 0, return ret, "Failed to set param"); + // notify event to process trigger ++// TODO: add some flag or something instead of if 0 ++// The following call is a part of OpenHarmony init system ++#if 0 + PostTrigger(EVENT_PROPERTY, msg->content, msg->contentSize); ++#endif + return 0; + } + +@@ -267,7 +271,11 @@ int SystemWriteParam(const char *name, const char *value) + PARAM_CHECK(ret == 0, return ret, "Failed to set persist param %s", name); + + // notify event to process trigger ++// TODO: add some flag or something instead of if 0 ++// The following call is a part of OpenHarmony init system ++#if 0 + PostParamTrigger(name, value); ++#endif + return ret; + } + diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb index 637708a38e9e6c64b7417e13bca839e1ee594b1c..53f36be2a29f021a8a0f9f128565e703ec697d68 100644 --- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb +++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb @@ -64,6 +64,9 @@ SRC_URI += "file://xf86drm.c-Add-drmWaitVBlank-hack.patch;patchdir=${S}/third_pa SRC_URI += "file://graphic-standard-Add-missing-entry-for-libwms_client.patch;patchdir=${S}/foundation/graphic/standard" +SRC_URI += "file://ohos_param_service.c;subdir=${S}/base/startup/init_lite/services/param/src" +SRC_URI += "file://ohos_param_service.patch;patchdir=${S}/base/startup/init_lite" + inherit python3native gn_base ptest B = "${S}/out/ohos-arm-release"