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#ifndef TLOGCAT_H
13#define TLOGCAT_H
14
15#include <stdint.h>
16
17#ifdef LOG_TEEOS_TAG
18#undef LOG_TEEOS_TAG
19#endif
20#define LOG_TEEOS_TAG               "teeos"
21
22#define LOG_ITEM_MAX_LEN            1024
23
24#define LEVEL_ERROR                 0
25#define LEVEL_WARNING               1
26#define LEVEL_INFO                  2
27#define LEVEL_DEBUG                 3
28#define LEVEL_VERBO                 4
29
30#define TOTAL_LEVEL_NUMS            5
31
32#define LOG_FILE_INDEX_MAX          4U
33
34#define NEVER_USED_LEN              32U
35#define TEE_UUID_LEN                16U
36#define ITEM_RESERVED_LEN           1U
37
38/* 64 byte head + user log */
39struct LogItem {
40    uint8_t neverUsed[NEVER_USED_LEN];
41    uint16_t magic;
42    uint16_t reserved0;
43    uint32_t serialNo;
44    uint16_t logRealLen;    /* log real len */
45    uint16_t logBufferLen; /* log buffer's len, multiple of 32 bytes */
46    uint8_t uuid[TEE_UUID_LEN];
47    uint8_t logSourceType;
48    uint8_t reserved[ITEM_RESERVED_LEN];
49    uint8_t logLevel;
50    uint8_t newLine; /* '\n' char, easy viewing log in bbox.bin file */
51    uint8_t logBuffer[0];
52};
53
54#define CLOCK_SEG_NODE_LEN 8U
55struct TeeUuid {
56    uint32_t timeLow;
57    uint16_t timeMid;
58    uint16_t timeHiAndVersion;
59    uint8_t clockSeqAndNode[CLOCK_SEG_NODE_LEN];
60};
61#endif
62