更新日期: 2022/06/01 来源: https://gitee.com/weharmony/kernel_liteos_a_note
trace_tlv.c 文件参考

浏览源代码.

函数

STATIC UINT16 CalcCrc16 (const UINT8 *buf, UINT32 len)
 
STATIC UINT32 OsWriteTlv (UINT8 *tlvBuf, UINT8 type, UINT8 len, UINT8 *value)
 
STATIC UINT32 OsTlvEncode (const TlvTable *table, UINT8 *srcBuf, UINT8 *tlvBuf, INT32 tlvBufLen)
 
UINT32 OsTraceDataEncode (UINT8 type, const TlvTable *table, UINT8 *src, UINT8 *dest, INT32 destLen)
 Encode trace raw data. 更多...
 

函数说明

◆ CalcCrc16()

STATIC UINT16 CalcCrc16 ( const UINT8 buf,
UINT32  len 
)

在文件 trace_tlv.c39 行定义.

40{
41 UINT32 i;
42 UINT16 crc = 0;
43
44 for (; len > 0; len--) {
45 crc = crc ^ (*buf++ << CRC_WIDTH);
46 for (i = 0; i < CRC_WIDTH; i++) {
47 if (crc & CRC_TOPBIT) {
48 crc = (crc << 1) ^ CRC_POLY;
49 } else {
50 crc <<= 1;
51 }
52 }
53 }
54 return crc;
55}
unsigned short UINT16
Definition: los_typedef.h:56
unsigned int UINT32
Definition: los_typedef.h:57
这是这个函数的调用关系图:

◆ OsTlvEncode()

STATIC UINT32 OsTlvEncode ( const TlvTable table,
UINT8 srcBuf,
UINT8 tlvBuf,
INT32  tlvBufLen 
)

在文件 trace_tlv.c79 行定义.

80{
81 UINT32 len = 0;
82 const TlvTable *tlvTableItem = table;
83
84 while (tlvTableItem->tag != TRACE_TLV_TYPE_NULL) {
85 if ((len + tlvTableItem->elemSize + sizeof(UINT8) + sizeof(UINT8)) > tlvBufLen) {
86 break;
87 }
88 len += OsWriteTlv(tlvBuf + len, tlvTableItem->tag, tlvTableItem->elemSize, srcBuf + tlvTableItem->elemOffset);
89 tlvTableItem++;
90 }
91 return len;
92}
unsigned char UINT8
Definition: los_typedef.h:55
TLV表,主要用于TLV的解码阶段
Definition: trace_tlv.h:60
UINT8 tag
Definition: trace_tlv.h:61
UINT8 elemOffset
Definition: trace_tlv.h:62
UINT8 elemSize
Definition: trace_tlv.h:63
STATIC UINT32 OsWriteTlv(UINT8 *tlvBuf, UINT8 type, UINT8 len, UINT8 *value)
Definition: trace_tlv.c:57
函数调用图:
这是这个函数的调用关系图:

◆ OsWriteTlv()

STATIC UINT32 OsWriteTlv ( UINT8 tlvBuf,
UINT8  type,
UINT8  len,
UINT8 value 
)

在文件 trace_tlv.c57 行定义.

58{
59 TraceMsgTlvBody *body = (TraceMsgTlvBody *)tlvBuf;
60
61 if (len == 0) {
62 return 0;
63 }
64
65 body->type = type;
66 body->len = len;
67 /* Do not check return value for performance, if copy failed, only this package will be discarded */
68 (VOID)memcpy_s(body->value, len, value, len);
69 return len + sizeof(body->type) + sizeof(body->len);
70}
TLV协议 消息体
Definition: trace_tlv.h:54
UINT8 len
长度
Definition: trace_tlv.h:56
UINT8 type
类型
Definition: trace_tlv.h:55
UINT8 value[]
内容
Definition: trace_tlv.h:57
这是这个函数的调用关系图: