53#define BITS_NUM_FOR_TASK_ID 16
60 return tid | ((tid < LOSCFG_BASE_CORE_TSK_LIMIT) ?
g_tidMask[tid] << BITS_NUM_FOR_TASK_ID : 0);
68 if (size <= headSize) {
69 TRACE_ERROR(
"trace buf size not enough than 0x%x\n", headSize);
70 return LOS_ERRNO_TRACE_BUF_TOO_SMALL;
76 return LOS_ERRNO_TRACE_NO_MEMORY;
79 (VOID)memset_s(buf, size, 0, size);
109 if (index >= LOSCFG_TRACE_OBJ_MAX_NUM) {
110 TRACE_UNLOCK(intSave);
115 if (taskId < LOSCFG_BASE_CORE_TSK_LIMIT) {
126 TRACE_UNLOCK(intSave);
142 TRACE_UNLOCK(intSave);
154 TRACE_UNLOCK(intSave);
164 PRINTK(
"Index TaskID TaskPrio TaskName \n");
166 PRINTK(
"%-7u 0x%-6x %-10u %s\n", i, obj->
id, obj->
prio, obj->
name);
176 PRINTK(
"Index Time(cycles) EventType CurPid CurTask Identity ");
177#ifdef LOSCFG_TRACE_FRAME_CORE_MSG
178 PRINTK(
"cpuid hwiActive taskLockCnt ");
180#ifdef LOSCFG_TRACE_FRAME_EVENT_COUNT
181 PRINTK(
"eventCount ");
183#ifdef LOS_TRACE_FRAME_LR
185 PRINTK(
"backtrace ");
186 for (i = 0; i < LOS_TRACE_LR_RECORD; i++) {
190 if (LOSCFG_TRACE_FRAME_MAX_PARAMS > 0) {
202 PRINTK(
"%-7u 0x%-15llx 0x%-12x 0x%-7x 0x%-7x 0x%-11x ", i, frame->
curTime, frame->
eventType,
204#ifdef LOSCFG_TRACE_FRAME_CORE_MSG
206#ifdef LOSCFG_KERNEL_SMP
215#ifdef LOSCFG_TRACE_FRAME_EVENT_COUNT
218#ifdef LOS_TRACE_FRAME_LR
219 for (j = 0; j < LOS_TRACE_LR_RECORD; j++) {
220 PRINTK(
"0x%-11x", frame->
linkReg[j]);
223 for (j = 0; j < LOSCFG_TRACE_FRAME_MAX_PARAMS; j++) {
224 PRINTK(
"0x%-11x", frame->
params[j]);
234 PRINTK(
"*******TraceInfo begin*******\n");
242 PRINTK(
"*******TraceInfo end*******\n");
245#ifdef LOSCFG_TRACE_CLIENT_INTERACT
273#ifdef LOSCFG_TRACE_CLIENT_INTERACT
VOID * LOS_MemAlloc(VOID *pool, UINT32 size)
从指定内存池中申请size长度的内存,注意这可不是从内核堆空间中申请内存
UINT8 * m_aucSysMem0
异常交互动态内存池地址的起始地址,当不支持异常交互特性时,m_aucSysMem0等于m_aucSysMem1。
VOID OsTraceSetObj(ObjData *obj, const LosTaskCB *tcb)
CHAR name[LOSCFG_TRACE_OBJ_MAX_NAME_SIZE]
TraceBaseHeaderInfo baseInfo
UINTPTR params[LOSCFG_TRACE_FRAME_MAX_PARAMS]
UINTPTR linkReg[LOS_TRACE_LR_RECORD]
struct TraceEventFrame::CoreStatus core
UINT32 OsTraceBufInit(UINT32 size)
trace离线模式初始化
STATIC VOID OsTraceInfoEventData(VOID)
LITE_OS_SEC_BSS STATIC UINT32 g_tidMask[LOSCFG_BASE_CORE_TSK_LIMIT]
记录屏蔽任务情况
VOID OsTraceReset(VOID)
重置循环buf
UINT32 OsTraceGetMaskTid(UINT32 tid)
STATIC VOID OsTraceInfoEventTitle(VOID)
OfflineHead * OsTraceRecordGet(VOID)
LITE_OS_SEC_BSS STATIC TraceOfflineHeaderInfo g_traceRecoder
离线模式下的记录方式
VOID OsTraceRecordDump(BOOL toClient)
VOID OsTraceObjAdd(UINT32 eventType, UINT32 taskId)
添加一个任务
STATIC VOID OsTraceSendInfo(VOID)
STATIC VOID OsTraceInfoObj(VOID)
VOID OsTraceWriteOrSendEvent(const TraceEventFrame *frame)
离线模式下保存帧数据 @note_thinking 此处未封装好,会懵逼,文件名中体现了对离线模式的保存或对在线模式的发送这样真的好吗? .
STATIC VOID OsTraceInfoDisplay(VOID)
VOID OsTraceDataSend(UINT8 type, UINT16 len, UINT8 *data)
@ EVENT
指事件(例如:定时器开始) 即发送 TraceEventFrame
@ HEAD
数据头信息, 即发送 TraceBaseHeaderInfo
@ OBJ
指对象(例如:任务) 即发送 ObjData