1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef BASE_STARTUP_INIT_SYS_PARAM_H 17 #define BASE_STARTUP_INIT_SYS_PARAM_H 18 #include <stdarg.h> 19 #include <stdint.h> 20 #ifdef __cplusplus 21 #if __cplusplus 22 extern "C" { 23 #endif 24 #endif 25 26 typedef uint32_t ParamHandle; 27 typedef void *CachedHandle; 28 29 typedef struct { 30 uint8_t updaterMode; 31 void (*logFunc)(int logLevel, uint32_t domain, const char *tag, const char *fmt, va_list vargs); 32 int (*setfilecon)(const char *name, const char *content); 33 } PARAM_WORKSPACE_OPS; 34 35 /** 36 * parameter service初始化接口 仅供init调用 37 */ 38 int InitParamWorkSpace(int onlyRead, const PARAM_WORKSPACE_OPS *ops); 39 40 /** 41 * Init 接口 42 * 查询参数。 43 * 44 */ 45 int SystemReadParam(const char *name, char *value, uint32_t *len); 46 47 /** 48 * parameter client初始化接口 供服务调用 49 */ 50 void InitParameterClient(void); 51 52 /** 53 * 对外接口 54 * 查询参数,主要用于其他进程使用,找到对应属性的handle。 55 * 56 */ 57 int SystemFindParameter(const char *name, ParamHandle *handle); 58 59 /** 60 * 对外接口 61 * 根据handle获取对应数据的修改标识。 62 * commitId 获取计数变化 63 * 64 */ 65 int SystemGetParameterCommitId(ParamHandle handle, uint32_t *commitId); 66 67 /** 68 * 外部接口 69 * 获取参数值。 70 * 71 */ 72 int SystemGetParameterValue(ParamHandle handle, char *value, unsigned int *len); 73 74 long long GetSystemCommitId(void); 75 76 /** 77 * 外部接口 78 * 保存相关的parameter信息,包括workspace,和各层的commit。 79 * 80 */ 81 CachedHandle CachedParameterCreate(const char *name, const char *defValue); 82 83 /** 84 * 外部接口 85 * 如果获取到value,返回对应的 paramValue的指针,否则返回上面定义的defValue 86 * 87 */ 88 const char *CachedParameterGet(CachedHandle handle); 89 90 /** 91 * 外部接口 92 * 释放handle内存 93 * 94 */ 95 void CachedParameterDestroy(CachedHandle handle); 96 97 #ifdef __cplusplus 98 #if __cplusplus 99 } 100 #endif 101 #endif 102 #endif