1e656c62eSopenharmony_ci/* 2e656c62eSopenharmony_ci * Copyright (C) 2022 Huawei Technologies Co., Ltd. 3e656c62eSopenharmony_ci * Licensed under the Mulan PSL v2. 4e656c62eSopenharmony_ci * You can use this software according to the terms and conditions of the Mulan PSL v2. 5e656c62eSopenharmony_ci * You may obtain a copy of Mulan PSL v2 at: 6e656c62eSopenharmony_ci * http://license.coscl.org.cn/MulanPSL2 7e656c62eSopenharmony_ci * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 8e656c62eSopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 9e656c62eSopenharmony_ci * PURPOSE. 10e656c62eSopenharmony_ci * See the Mulan PSL v2 for more details. 11e656c62eSopenharmony_ci */ 12e656c62eSopenharmony_ci#include <stdbool.h> 13e656c62eSopenharmony_ci#include <hilog/log_c.h> 14e656c62eSopenharmony_ci#include <securec.h> 15e656c62eSopenharmony_ci#include "tee_log.h" 16e656c62eSopenharmony_ci#include "tlogcat.h" 17e656c62eSopenharmony_ci#include "proc_tag.h" 18e656c62eSopenharmony_ci 19e656c62eSopenharmony_ci#ifdef LOG_TAG 20e656c62eSopenharmony_ci#undef LOG_TAG 21e656c62eSopenharmony_ci#endif 22e656c62eSopenharmony_ci#define LOG_TAG "tlogcat" 23e656c62eSopenharmony_ci 24e656c62eSopenharmony_ci#ifdef LOG_DOMAIN 25e656c62eSopenharmony_ci#undef LOG_DOMAIN 26e656c62eSopenharmony_ci#endif 27e656c62eSopenharmony_ci#define LOG_DOMAIN 0xD002F00 28e656c62eSopenharmony_ci 29e656c62eSopenharmony_cistatic char g_logItemBuffer[LOG_ITEM_MAX_LEN]; 30e656c62eSopenharmony_ci 31e656c62eSopenharmony_civoid OpenTeeLog(void) 32e656c62eSopenharmony_ci{ 33e656c62eSopenharmony_ci} 34e656c62eSopenharmony_ci 35e656c62eSopenharmony_civoid CloseTeeLog(void) 36e656c62eSopenharmony_ci{ 37e656c62eSopenharmony_ci} 38e656c62eSopenharmony_ci 39e656c62eSopenharmony_cistatic void TeeHilogPrint(const struct LogItem *logItem, const char *logItemBuffer, bool isTa) 40e656c62eSopenharmony_ci{ 41e656c62eSopenharmony_ci uint8_t logLevel = logItem->logLevel; 42e656c62eSopenharmony_ci uint32_t hiLogLevel[TOTAL_LEVEL_NUMS] = {LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_DEBUG}; 43e656c62eSopenharmony_ci const char *logTag = LOG_TEEOS_TAG; 44e656c62eSopenharmony_ci 45e656c62eSopenharmony_ci JudgeLogTag(logItem, isTa, &logTag); 46e656c62eSopenharmony_ci 47e656c62eSopenharmony_ci if (logLevel < TOTAL_LEVEL_NUMS) { 48e656c62eSopenharmony_ci logLevel = hiLogLevel[logLevel]; 49e656c62eSopenharmony_ci } else { 50e656c62eSopenharmony_ci logLevel = LOG_INFO; 51e656c62eSopenharmony_ci } 52e656c62eSopenharmony_ci 53e656c62eSopenharmony_ci (void)HiLogPrint(LOG_CORE, logLevel, LOG_DOMAIN, logTag, "index: %{public}u: %{public}s", 54e656c62eSopenharmony_ci logItem->serialNo, logItemBuffer); 55e656c62eSopenharmony_ci} 56e656c62eSopenharmony_ci 57e656c62eSopenharmony_civoid LogWriteSysLog(const struct LogItem *logItem, bool isTa) 58e656c62eSopenharmony_ci{ 59e656c62eSopenharmony_ci if (logItem == NULL || logItem->logRealLen <= 0) { 60e656c62eSopenharmony_ci return; 61e656c62eSopenharmony_ci } 62e656c62eSopenharmony_ci if (memcpy_s(g_logItemBuffer, LOG_ITEM_MAX_LEN, logItem->logBuffer, logItem->logRealLen) == EOK) { 63e656c62eSopenharmony_ci g_logItemBuffer[logItem->logRealLen - 1] = '\0'; 64e656c62eSopenharmony_ci TeeHilogPrint(logItem, (const char*)g_logItemBuffer, isTa); 65e656c62eSopenharmony_ci } 66e656c62eSopenharmony_ci}