结构体 | |
struct | TraceClientCmd |
struct | TraceNotifyFrame |
struct | TraceOfflineHeaderInfo |
struct | TraceBaseHeaderInfo |
http://weharmonyos.com/openharmony/zh-cn/device-dev/kernel/kernel-mini-memory-trace.html 更多... | |
struct | TraceEventFrame |
struct | ObjData |
struct | OfflineHead |
类型定义 | |
typedef BOOL(* | TRACE_HWI_FILTER_HOOK) (UINT32 hwiNum) |
Define the type of trace hardware interrupt filter hook function. 更多... | |
枚举 | |
enum | TraceState { TRACE_UNINIT = 0 , TRACE_INITED , TRACE_STARTED , TRACE_STOPED } |
enum | LOS_TRACE_MASK { TRACE_SYS_FLAG = 0x10 , TRACE_HWI_FLAG = 0x20 , TRACE_TASK_FLAG = 0x40 , TRACE_SWTMR_FLAG = 0x80 , TRACE_MEM_FLAG = 0x100 , TRACE_QUE_FLAG = 0x200 , TRACE_EVENT_FLAG = 0x400 , TRACE_SEM_FLAG = 0x800 , TRACE_MUX_FLAG = 0x1000 , TRACE_IPC_FLAG = 0x2000 , TRACE_MAX_FLAG = 0x80000000 , TRACE_USER_DEFAULT_FLAG = 0xFFFFFFF0 } |
enum | LOS_TRACE_TYPE { SYS_ERROR = TRACE_SYS_FLAG | 0 , SYS_START = TRACE_SYS_FLAG | 1 , SYS_STOP = TRACE_SYS_FLAG | 2 , HWI_CREATE = TRACE_HWI_FLAG | 0 , HWI_CREATE_SHARE = TRACE_HWI_FLAG | 1 , HWI_DELETE = TRACE_HWI_FLAG | 2 , HWI_DELETE_SHARE = TRACE_HWI_FLAG | 3 , HWI_RESPONSE_IN = TRACE_HWI_FLAG | 4 , HWI_RESPONSE_OUT = TRACE_HWI_FLAG | 5 , HWI_ENABLE = TRACE_HWI_FLAG | 6 , HWI_DISABLE = TRACE_HWI_FLAG | 7 , HWI_TRIGGER = TRACE_HWI_FLAG | 8 , HWI_SETPRI = TRACE_HWI_FLAG | 9 , HWI_CLEAR = TRACE_HWI_FLAG | 10 , HWI_SETAFFINITY = TRACE_HWI_FLAG | 11 , HWI_SENDIPI = TRACE_HWI_FLAG | 12 , TASK_CREATE = TRACE_TASK_FLAG | 0 , TASK_PRIOSET = TRACE_TASK_FLAG | 1 , TASK_DELETE = TRACE_TASK_FLAG | 2 , TASK_SUSPEND = TRACE_TASK_FLAG | 3 , TASK_RESUME = TRACE_TASK_FLAG | 4 , TASK_SWITCH = TRACE_TASK_FLAG | 5 , TASK_SIGNAL = TRACE_TASK_FLAG | 6 , SWTMR_CREATE = TRACE_SWTMR_FLAG | 0 , SWTMR_DELETE = TRACE_SWTMR_FLAG | 1 , SWTMR_START = TRACE_SWTMR_FLAG | 2 , SWTMR_STOP = TRACE_SWTMR_FLAG | 3 , SWTMR_EXPIRED = TRACE_SWTMR_FLAG | 4 , MEM_ALLOC = TRACE_MEM_FLAG | 0 , MEM_ALLOC_ALIGN = TRACE_MEM_FLAG | 1 , MEM_REALLOC = TRACE_MEM_FLAG | 2 , MEM_FREE = TRACE_MEM_FLAG | 3 , MEM_INFO_REQ = TRACE_MEM_FLAG | 4 , MEM_INFO = TRACE_MEM_FLAG | 5 , QUEUE_CREATE = TRACE_QUE_FLAG | 0 , QUEUE_DELETE = TRACE_QUE_FLAG | 1 , QUEUE_RW = TRACE_QUE_FLAG | 2 , EVENT_CREATE = TRACE_EVENT_FLAG | 0 , EVENT_DELETE = TRACE_EVENT_FLAG | 1 , EVENT_READ = TRACE_EVENT_FLAG | 2 , EVENT_WRITE = TRACE_EVENT_FLAG | 3 , EVENT_CLEAR = TRACE_EVENT_FLAG | 4 , SEM_CREATE = TRACE_SEM_FLAG | 0 , SEM_DELETE = TRACE_SEM_FLAG | 1 , SEM_PEND = TRACE_SEM_FLAG | 2 , SEM_POST = TRACE_SEM_FLAG | 3 , MUX_CREATE = TRACE_MUX_FLAG | 0 , MUX_DELETE = TRACE_MUX_FLAG | 1 , MUX_PEND = TRACE_MUX_FLAG | 2 , MUX_POST = TRACE_MUX_FLAG | 3 , IPC_WRITE_DROP = TRACE_IPC_FLAG | 0 , IPC_WRITE = TRACE_IPC_FLAG | 1 , IPC_READ_DROP = TRACE_IPC_FLAG | 2 , IPC_READ = TRACE_IPC_FLAG | 3 , IPC_TRY_READ = TRACE_IPC_FLAG | 4 , IPC_READ_TIMEOUT = TRACE_IPC_FLAG | 5 , IPC_KILL = TRACE_IPC_FLAG | 6 } |
函数 | |
UINT32 | OsTraceDataEncode (UINT8 type, const TlvTable *table, UINT8 *src, UINT8 *dest, INT32 destLen) |
Encode trace raw data. 更多... | |
UINT32 | LOS_TraceStart (VOID) |
Start trace. 更多... | |
VOID | LOS_TraceStop (VOID) |
Stop trace. 更多... | |
VOID | LOS_TraceReset (VOID) |
Clear the trace buf. 更多... | |
VOID | LOS_TraceEventMaskSet (UINT32 mask) |
Set trace event mask. 更多... | |
VOID | LOS_TraceRecordDump (BOOL toClient) |
Offline trace buffer display. 更多... | |
OfflineHead * | LOS_TraceRecordGet (VOID) |
Offline trace buffer export. 更多... | |
VOID | LOS_TraceHwiFilterHookReg (TRACE_HWI_FILTER_HOOK hook) |
Hwi num fliter hook. 更多... | |
Define the type of trace hardware interrupt filter hook function.
hwiNum | [IN] Type UINT32. The hardware interrupt number. |
#TRUE | 0x00000001: Not record the certain number. |
#FALSE | 0x00000000: Need record the certain number. |
在文件 los_trace.h 第 336 行定义.
enum LOS_TRACE_MASK |
Trace mask is used to filter events in runtime. Each mask keep only one unique bit to 1, and user can define own module's trace mask.
在文件 los_trace.h 第 121 行定义.
enum LOS_TRACE_TYPE |
Trace event type which indicate the exactly happend events, user can define own module's event type like TRACE_::MODULE::_FLAG | NUMBER. 28 4 0 0 0 0 0 0 0 0 X X X X X X X X 0 0 0 0 0 0 | | | trace_module_flag number
在文件 los_trace.h 第 147 行定义.
enum TraceState |
Trace state. | 跟踪状态
在文件 los_trace.h 第 109 行定义.
VOID LOS_TraceEventMaskSet | ( | UINT32 | mask | ) |
Set trace event mask.
mask | [IN] Type UINT32. The mask used to filter events of LOS_TRACE_MASK. |
#NA. |
Set trace event mask.
在文件 los_trace.c 第 398 行定义.
VOID LOS_TraceHwiFilterHookReg | ( | TRACE_HWI_FILTER_HOOK | hook | ) |
Hwi num fliter hook.
hook | [IN] Type TRACE_HWI_FILTER_HOOK. The user defined hook for hwi num filter, the hook should return true if you don't want trace this hwi num. |
#None |
Hwi num fliter hook.
在文件 los_trace.c 第 427 行定义.
VOID LOS_TraceRecordDump | ( | BOOL | toClient | ) |
Offline trace buffer display.
toClient | [IN] Type BOOL. Whether send trace data to Client through pipeline. |
#NA |
Offline trace buffer display.
在文件 los_trace.c 第 403 行定义.
OfflineHead * LOS_TraceRecordGet | ( | VOID | ) |
Offline trace buffer export.
NA |
#OfflineHead* | The trace buffer's address, analyze this buffer according to the structure of OfflineHead. |
Offline trace buffer export.
在文件 los_trace.c 第 412 行定义.
VOID LOS_TraceReset | ( | VOID | ) |
Clear the trace buf.
None. |
#NA |
Clear the trace buf.
在文件 los_trace.c 第 417 行定义.
UINT32 LOS_TraceStart | ( | VOID | ) |
Start trace.
None. |
#LOS_ERRNO_TRACE_ERROR_STATUS | 0x02001400: Trace start failed. |
#LOS_OK | 0x00000000: Trace start success. |
Start trace.
在文件 los_trace.c 第 353 行定义.
VOID LOS_TraceStop | ( | VOID | ) |
Stop trace.
None. |
#None. |
Stop trace.
在文件 los_trace.c 第 382 行定义.
UINT32 OsTraceDataEncode | ( | UINT8 | type, |
const TlvTable * | table, | ||
UINT8 * | src, | ||
UINT8 * | dest, | ||
INT32 | destLen | ||
) |
Encode trace raw data.
type | [IN] Type UINT8. The type stands for different struct of src data. |
src | [IN] Type UINT8 *. The raw trace data. |
table | [IN] Type #const TlvTable *. The tlv table descript elemOffset and elemSize. |
dest | [OUT] Type UINT8 *. The tlv data. |
destLen | [IN] Type UINT8 *. The tlv buf max len. |
#0 | convert failed. |
UINT32 | convert success bytes. |
对trace数据进行 Tlv 编码
TLV 是一种可变的格式,其中:
T 可以理解为 Tag 或 Type ,用于标识标签或者编码格式信息; L 定义数值的长度; V 表示实际的数值。 T 和 L 的长度固定,一般是2或4个字节,V 的长度由 Length 指定。
要正确的解析对方发来的数据除了统一数据格式之外还要统一字节序。字节序是指多字节数据在计算机内存中存储 或者网络传输时各字节的存储顺序。字节序一般分为大端和小端。
大端模式(Big-Endian): 高位字节放在内存的低地址端,低位字节排放在内存的高地址端。 小端模式(Little-Endian): 低位字节放在内存的低地址端,高位字节放在内存的高地址端。
使用 htonl 将 Tag(或Type)转成网络字节序,指针偏移 4; 使用 htonl 将 Length 转成网络字节序,指针偏移 4; 若值 Value 为 int、char、short、long 类型,将其转为网络字节序,指针偏移;若值为字符串,写入后指针偏移 Length; 重复上述三步,继续编码后面的 TLV 单元。
在文件 trace_tlv.c 第 115 行定义.