diff --git a/begetd.gni b/begetd.gni index 437ce8bc6a2e6d09c54142e4483466aeecfa6bd0..734f839a3888fb990b1cce7696f3bb3b213f1351 100644 --- a/begetd.gni +++ b/begetd.gni @@ -28,5 +28,8 @@ declare_args() { enable_ohos_startup_init_lite_use_posix_file_api = false config_ohos_startup_init_lite_data_path = "/" + # config memory size for liteos-m + config_ohos_startup_init_lite_memory_size = 5120 + # boot_kernel_extended_cmdline for extend cmdline } diff --git a/services/param/base/BUILD.gn b/services/param/base/BUILD.gn index b1aadaae600c9dbd92d53f76ca73fa4bc777f2d8..d012356b7f9855b7ca3850d81c768585f4927fd8 100644 --- a/services/param/base/BUILD.gn +++ b/services/param/base/BUILD.gn @@ -69,6 +69,10 @@ if (defined(ohos_lite)) { "PARAMWORKSPACE_NEED_MUTEX", ] } + if (defined(config_ohos_startup_init_lite_memory_size)) { + defines += + [ "PARAM_WORKSPACE_MAX=${config_ohos_startup_init_lite_memory_size}" ] + } } } else { if (use_musl) { diff --git a/services/param/include/param_osadp.h b/services/param/include/param_osadp.h index cf9de49f8684bbd1562f76aec1c96bc975e37901..26b093fa186ae348011fa2af173c20d8d2e9b8f3 100755 --- a/services/param/include/param_osadp.h +++ b/services/param/include/param_osadp.h @@ -59,7 +59,9 @@ extern "C" { #ifdef STARTUP_INIT_TEST #define PARAM_WORKSPACE_MAX (1024 * 50) #else -#define PARAM_WORKSPACE_MAX (1024 * 4) +#ifndef PARAM_WORKSPACE_MAX +#define PARAM_WORKSPACE_MAX (1024 * 5) +#endif #endif #define PARAM_WORKSPACE_SMALL PARAM_WORKSPACE_MAX #define PARAM_WORKSPACE_DEF PARAM_WORKSPACE_MAX diff --git a/services/param/liteos/BUILD.gn b/services/param/liteos/BUILD.gn index ea03c3b9fa679913b8cb7297bb08b8c23ba7a870..e5dbfc2244bc7ba5545450cce11b2f4f2e9b8791 100644 --- a/services/param/liteos/BUILD.gn +++ b/services/param/liteos/BUILD.gn @@ -103,6 +103,10 @@ static_library("param_init_lite") { "PARAM_SUPPORT_CYCLE_CHECK", ] } + if (defined(config_ohos_startup_init_lite_memory_size)) { + defines += + [ "PARAM_WORKSPACE_MAX=${config_ohos_startup_init_lite_memory_size}" ] + } } static_library("param_client_lite") { @@ -148,5 +152,10 @@ static_library("param_client_lite") { include_dirs += [ "$root_out_dir/gen/init" ] defines += [ "PARAM_LOAD_CFG_FROM_CODE" ] } + + if (defined(config_ohos_startup_init_lite_memory_size)) { + defines += + [ "PARAM_WORKSPACE_MAX=${config_ohos_startup_init_lite_memory_size}" ] + } } } diff --git a/services/param/liteos/param_osadp.c b/services/param/liteos/param_osadp.c index 3451c24961774e5ac8cb4d55ceb4ac479c75f10a..c6c59ee44e8bbd278cc4761ac09d9a3909dafdd1 100644 --- a/services/param/liteos/param_osadp.c +++ b/services/param/liteos/param_osadp.c @@ -215,13 +215,26 @@ INIT_LOCAL_API int ParamMutexDelete(ParamMutex *mutex) #endif #ifdef __LITEOS_M__ +__attribute__((weak)) void* GetSysParamMem(uint32_t spaceSize) +{ + return malloc(spaceSize); +} + +__attribute__((weak)) void FreeSysParamMem(void *mem) +{ + if (mem == NULL) { + return; + } + free(mem); +} + INIT_LOCAL_API void *GetSharedMem(const char *fileName, MemHandle *handle, uint32_t spaceSize, int readOnly) { PARAM_CHECK(spaceSize <= PARAM_WORKSPACE_MAX, return NULL, "Invalid spaceSize %u", spaceSize); UNUSED(fileName); UNUSED(handle); UNUSED(readOnly); - return (void *)malloc(spaceSize); + return GetSysParamMem(spaceSize); } INIT_LOCAL_API void FreeSharedMem(const MemHandle *handle, void *mem, uint32_t dataSize) @@ -229,7 +242,7 @@ INIT_LOCAL_API void FreeSharedMem(const MemHandle *handle, void *mem, uint32_t d PARAM_CHECK(mem != NULL && handle != NULL, return, "Invalid mem or handle"); UNUSED(handle); UNUSED(dataSize); - free(mem); + FreeSysParamMem(mem); } INIT_LOCAL_API void paramMutexEnvInit(void)