• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 <syslog.h>
13 #include <stdbool.h>
14 #include <securec.h>
15 #include "tlogcat.h"
16 #include "sys_log_api.h"
17 
18 static char g_logItemBuffer[LOG_ITEM_MAX_LEN];
19 
OpenTeeLog(void)20 void OpenTeeLog(void)
21 {
22     openlog(LOG_TEEOS_TAG, LOG_CONS | LOG_NDELAY, LOG_USER);
23 }
24 
CloseTeeLog(void)25 void CloseTeeLog(void)
26 {
27     closelog();
28 }
29 
TeeSyslogPrint(const struct LogItem * logItem,const char * logItemBuffer)30 static void TeeSyslogPrint(const struct LogItem *logItem, const char *logItemBuffer)
31 {
32     uint8_t logLevel = logItem->logLevel;
33     uint8_t syslogLevel[TOTAL_LEVEL_NUMS] = {LOG_ERR, LOG_WARNING, LOG_INFO, LOG_DEBUG, LOG_DEBUG};
34 
35     if (logLevel < TOTAL_LEVEL_NUMS) {
36         logLevel = syslogLevel[logLevel];
37     } else {
38         logLevel = LOG_INFO;
39     }
40 
41     (void)syslog(LOG_USER | logLevel, "index: %u: %s", logItem->serialNo, logItemBuffer);
42 }
43 
LogWriteSysLog(const struct LogItem * logItem,bool isTa)44 void LogWriteSysLog(const struct LogItem *logItem, bool isTa)
45 {
46     (void)isTa;
47     if (logItem == NULL || logItem->logRealLen == 0) {
48         return;
49     }
50     if (memcpy_s(g_logItemBuffer, LOG_ITEM_MAX_LEN, logItem->logBuffer, logItem->logRealLen) == EOK) {
51         g_logItemBuffer[logItem->logRealLen - 1] = '\0';
52         TeeSyslogPrint(logItem, (const char*)g_logItemBuffer);
53     }
54 }
55