1d9f0492fSopenharmony_ci/* 2d9f0492fSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3d9f0492fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d9f0492fSopenharmony_ci * you may not use this file except in compliance with the License. 5d9f0492fSopenharmony_ci * You may obtain a copy of the License at 6d9f0492fSopenharmony_ci * 7d9f0492fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d9f0492fSopenharmony_ci * 9d9f0492fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d9f0492fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d9f0492fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d9f0492fSopenharmony_ci * See the License for the specific language governing permissions and 13d9f0492fSopenharmony_ci * limitations under the License. 14d9f0492fSopenharmony_ci */ 15d9f0492fSopenharmony_ci 16d9f0492fSopenharmony_ci#ifndef BASE_STARTUP_PARAM_OS_ADAPTER_H 17d9f0492fSopenharmony_ci#define BASE_STARTUP_PARAM_OS_ADAPTER_H 18d9f0492fSopenharmony_ci#include <stdint.h> 19d9f0492fSopenharmony_ci#include <string.h> 20d9f0492fSopenharmony_ci#include <unistd.h> 21d9f0492fSopenharmony_ci#include <stdio.h> 22d9f0492fSopenharmony_ci#include <string.h> 23d9f0492fSopenharmony_ci#if !(defined __LITEOS_A__ || defined __LITEOS_M__) 24d9f0492fSopenharmony_ci#include <sys/syscall.h> 25d9f0492fSopenharmony_ci#include "loop_event.h" 26d9f0492fSopenharmony_ci#else 27d9f0492fSopenharmony_ci#include <time.h> 28d9f0492fSopenharmony_ci#endif 29d9f0492fSopenharmony_ci 30d9f0492fSopenharmony_ci#ifndef __LITEOS_M__ 31d9f0492fSopenharmony_ci#include <pthread.h> 32d9f0492fSopenharmony_ci#endif 33d9f0492fSopenharmony_ci#include "param_utils.h" 34d9f0492fSopenharmony_ci#include "param_common.h" 35d9f0492fSopenharmony_ci#ifdef __cplusplus 36d9f0492fSopenharmony_ci#if __cplusplus 37d9f0492fSopenharmony_ciextern "C" { 38d9f0492fSopenharmony_ci#endif 39d9f0492fSopenharmony_ci#endif 40d9f0492fSopenharmony_ci 41d9f0492fSopenharmony_ci#ifndef STATIC_INLINE 42d9f0492fSopenharmony_ci#ifdef STARTUP_INIT_TEST 43d9f0492fSopenharmony_ci#define STATIC_INLINE 44d9f0492fSopenharmony_ci#else 45d9f0492fSopenharmony_ci#define STATIC_INLINE static inline 46d9f0492fSopenharmony_ci#endif 47d9f0492fSopenharmony_ci#endif 48d9f0492fSopenharmony_ci 49d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_INVALID ((uint32_t)-1) 50d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_MIN (1024) 51d9f0492fSopenharmony_ci/* 52d9f0492fSopenharmony_ci length for parameter = node size + data size 53d9f0492fSopenharmony_ci xxxx.xxxx.xxxx.xxxx 54d9f0492fSopenharmony_ci node size: 55d9f0492fSopenharmony_ci 24 * (count(.) + 1) + strlen(xxxx.xxxx.xxxx.xxxx) 56d9f0492fSopenharmony_ci data size 57d9f0492fSopenharmony_ci strlen(xxxx.xxxx.xxxx.xxxx) + 96 58d9f0492fSopenharmony_ci 59d9f0492fSopenharmony_ci dac size 60d9f0492fSopenharmony_ci 24 * (count(.) + 1) + sizeof(ParamSecurityNode) 61d9f0492fSopenharmony_ci*/ 62d9f0492fSopenharmony_ci#define DAC_DEFAULT_GROUP 0 63d9f0492fSopenharmony_ci#define DAC_DEFAULT_USER 0 64d9f0492fSopenharmony_ci 65d9f0492fSopenharmony_ci#ifdef STARTUP_INIT_TEST 66d9f0492fSopenharmony_ci#define DAC_DEFAULT_MODE 0777 67d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_DEF (1024 * 80) 68d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_MAX (1024 * 100) 69d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_SMALL PARAM_WORKSPACE_DEF 70d9f0492fSopenharmony_ci#else 71d9f0492fSopenharmony_ci 72d9f0492fSopenharmony_ci#ifdef __LITEOS_M__ 73d9f0492fSopenharmony_ci#define DAC_DEFAULT_MODE 0777 74d9f0492fSopenharmony_ci#ifndef PARAM_WORKSPACE_MAX 75d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_MAX (1024 * 5) 76d9f0492fSopenharmony_ci#endif 77d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_SMALL PARAM_WORKSPACE_MAX 78d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_DEF PARAM_WORKSPACE_MAX 79d9f0492fSopenharmony_ci#else // __LITEOS_M__ 80d9f0492fSopenharmony_ci 81d9f0492fSopenharmony_ci#ifdef __LITEOS_A__ 82d9f0492fSopenharmony_ci#define DAC_DEFAULT_MODE 0777 83d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_MAX (1024 * 10) 84d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_SMALL PARAM_WORKSPACE_MAX 85d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_DEF PARAM_WORKSPACE_MAX 86d9f0492fSopenharmony_ci#else // __LITEOS_A__ 87d9f0492fSopenharmony_ci#define DAC_DEFAULT_MODE 0774 88d9f0492fSopenharmony_ci#ifdef PARAM_TEST_PERFORMANCE 89d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_MAX (1024 * 1024 * 10) 90d9f0492fSopenharmony_ci#else 91d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_MAX (80 * 1024) 92d9f0492fSopenharmony_ci#endif 93d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_SMALL (1024 * 10) 94d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_DEF (1024 * 30) 95d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_DAC (1024 * 1024 * 2) 96d9f0492fSopenharmony_ci#endif // __LITEOS_A__ 97d9f0492fSopenharmony_ci#endif // __LITEOS_M__ 98d9f0492fSopenharmony_ci#endif // STARTUP_INIT_TEST 99d9f0492fSopenharmony_ci 100d9f0492fSopenharmony_ci#ifndef PARAM_WORKSPACE_DAC 101d9f0492fSopenharmony_ci#define PARAM_WORKSPACE_DAC PARAM_WORKSPACE_SMALL 102d9f0492fSopenharmony_ci#endif 103d9f0492fSopenharmony_ci 104d9f0492fSopenharmony_ci// support timer 105d9f0492fSopenharmony_ci#if defined __LITEOS_A__ || defined __LITEOS_M__ 106d9f0492fSopenharmony_cistruct ParamTimer_; 107d9f0492fSopenharmony_citypedef void (*ProcessTimer)(const struct ParamTimer_ *taskHandle, void *context); 108d9f0492fSopenharmony_citypedef struct ParamTimer_ { 109d9f0492fSopenharmony_ci timer_t timerId; 110d9f0492fSopenharmony_ci uint64_t repeat; 111d9f0492fSopenharmony_ci ProcessTimer timeProcessor; 112d9f0492fSopenharmony_ci void *context; 113d9f0492fSopenharmony_ci} ParamTimer; 114d9f0492fSopenharmony_ci 115d9f0492fSopenharmony_citypedef ParamTimer *ParamTaskPtr; 116d9f0492fSopenharmony_ci#else 117d9f0492fSopenharmony_citypedef LoopBase *ParamTaskPtr; 118d9f0492fSopenharmony_citypedef void (*ProcessTimer)(const ParamTaskPtr taskHandle, void *context); 119d9f0492fSopenharmony_ci#endif 120d9f0492fSopenharmony_ci 121d9f0492fSopenharmony_ciint ParamTimerCreate(ParamTaskPtr *timer, ProcessTimer process, void *context); 122d9f0492fSopenharmony_ciint ParamTimerStart(const ParamTaskPtr timer, uint64_t timeout, uint64_t repeat); 123d9f0492fSopenharmony_civoid ParamTimerClose(ParamTaskPtr timer); 124d9f0492fSopenharmony_ci 125d9f0492fSopenharmony_ciINIT_LOCAL_API void paramMutexEnvInit(void); 126d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamRWMutexCreate(ParamRWMutex *lock); 127d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamRWMutexWRLock(ParamRWMutex *lock); 128d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamRWMutexRDLock(ParamRWMutex *lock); 129d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamRWMutexUnlock(ParamRWMutex *lock); 130d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamRWMutexDelete(ParamRWMutex *lock); 131d9f0492fSopenharmony_ci 132d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamMutexCreate(ParamMutex *mutex); 133d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamMutexPend(ParamMutex *mutex); 134d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamMutexPost(ParamMutex *mutex); 135d9f0492fSopenharmony_ciINIT_LOCAL_API int ParamMutexDelete(ParamMutex *mutex); 136d9f0492fSopenharmony_ci 137d9f0492fSopenharmony_ci#ifdef WORKSPACE_AREA_NEED_MUTEX 138d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_INIT_LOCK(workspace) ParamRWMutexCreate(&workspace->rwlock) 139d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_RW_LOCK(workspace) ParamRWMutexWRLock(&workspace->rwlock) 140d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_RD_LOCK(workspace) ParamRWMutexRDLock(&workspace->rwlock) 141d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_RW_UNLOCK(workspace) ParamRWMutexUnlock(&workspace->rwlock) 142d9f0492fSopenharmony_ci#else 143d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_INIT_LOCK(rwlock) (void)(rwlock) 144d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_RW_LOCK(rwlock) (void)(rwlock) 145d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_RD_LOCK(rwlock) (void)(rwlock) 146d9f0492fSopenharmony_ci#define PARAMSPACE_AREA_RW_UNLOCK(rwlock) (void)(rwlock) 147d9f0492fSopenharmony_ci#endif 148d9f0492fSopenharmony_ci 149d9f0492fSopenharmony_ciINIT_LOCAL_API void *GetSharedMem(const char *fileName, MemHandle *handle, uint32_t spaceSize, int readOnly); 150d9f0492fSopenharmony_ciINIT_LOCAL_API void FreeSharedMem(const MemHandle *handle, void *mem, uint32_t dataSize); 151d9f0492fSopenharmony_ci 152d9f0492fSopenharmony_ci#ifdef __cplusplus 153d9f0492fSopenharmony_ci#if __cplusplus 154d9f0492fSopenharmony_ci} 155d9f0492fSopenharmony_ci#endif 156d9f0492fSopenharmony_ci#endif 157d9f0492fSopenharmony_ci 158d9f0492fSopenharmony_ci#endif // BASE_STARTUP_PARAM_OS_ADAPTER_H