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