1 /* 2 * Copyright (c) 2023 Institute of Parallel And Distributed Systems (IPADS), Shanghai Jiao Tong University (SJTU) 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 #pragma once 13 14 #include <common/types.h> 15 #include <common/tee_uuid.h> 16 17 #define UUID_LEN 16 18 #define NEVER_USED_LEN 32U 19 #define LOG_ITEM_RESERVED_LEN 1U 20 21 /* 64 byte head + user log */ 22 struct log_item { 23 u8 never_used[NEVER_USED_LEN]; 24 u16 magic; 25 u16 reserved0; 26 u32 serial_no; 27 s16 real_len; /* log real len */ 28 u16 buffer_len; /* log buffer's len, multiple of 32 bytes */ 29 u8 uuid[UUID_LEN]; 30 u8 log_source_type; 31 u8 reserved[LOG_ITEM_RESERVED_LEN]; 32 u8 log_level; 33 u8 new_line; /* '\n' char, easy viewing log in bbox.bin file */ 34 u8 log_buffer[0]; 35 }; 36 37 /* --- for log mem --------------------------------- */ 38 #define LOG_BUFFER_RESERVED_LEN 11U 39 #define VERSION_INFO_LEN 156U 40 41 /* 42 * Log's buffer flag info, size: 64 bytes head + 156 bytes's version info. 43 * For filed description: 44 * last_pos : current log's end position, last log's start position. 45 * write_loops: Write cyclically. Init value is 0, when memory is used 46 * up, the value add 1. 47 */ 48 struct log_buffer_flag { 49 u32 reserved0; 50 u32 last_pos; 51 u32 write_loops; 52 u32 log_level; 53 u32 reserved[LOG_BUFFER_RESERVED_LEN]; 54 u32 max_len; 55 u8 version_info[VERSION_INFO_LEN]; 56 }; 57 58 struct log_buffer { 59 struct log_buffer_flag flag; 60 u8 buffer_start[0]; 61 }; 62 63 void enable_tlogger(void); 64 bool is_tlogger_on(void); 65 66 int tmp_tlogger_init(void); 67 68 int append_chcore_log(const char *str, size_t len, bool is_kernel); 69 70 int sys_tee_push_rdr_update_addr(paddr_t addr, size_t size, bool is_cache_mem, 71 char *chip_type_buff, size_t buff_len); 72 73 int sys_debug_rdr_logitem(char *str, size_t str_len); 74