• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
3  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice, this list of
9  *    conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice, this list
12  *    of conditions and the following disclaimer in the documentation and/or other materials
13  *    provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its contributors may be used
16  *    to endorse or promote products derived from this software without specific prior written
17  *    permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #include "trace_cnv.h"
33 #include "los_trace.h"
34 #include "los_task.h"
35 #include "los_sem.h"
36 #include "los_mux.h"
37 #include "los_queue.h"
38 #include "los_event.h"
39 #include "los_swtmr.h"
40 #include "los_hook.h"
41 
42 #ifdef __cplusplus
43 #if __cplusplus
44 extern "C" {
45 #endif /* __cplusplus */
46 #endif /* __cplusplus */
47 
LOS_TraceMemInit(VOID * pool,UINT32 size)48 STATIC VOID LOS_TraceMemInit(VOID *pool, UINT32 size)
49 {
50     LOS_TRACE(MEM_INFO_REQ, pool);
51 }
52 
LOS_TraceMemAlloc(VOID * pool,VOID * ptr,UINT32 size)53 STATIC VOID LOS_TraceMemAlloc(VOID *pool, VOID *ptr, UINT32 size)
54 {
55     LOS_TRACE(MEM_ALLOC, pool, (UINTPTR)ptr, size);
56 }
57 
LOS_TraceMemFree(VOID * pool,VOID * ptr)58 STATIC VOID LOS_TraceMemFree(VOID *pool, VOID *ptr)
59 {
60     LOS_TRACE(MEM_FREE, pool, (UINTPTR)ptr);
61 }
62 
LOS_TraceMemRealloc(VOID * pool,VOID * ptr,UINT32 size)63 STATIC VOID LOS_TraceMemRealloc(VOID *pool, VOID *ptr, UINT32 size)
64 {
65     LOS_TRACE(MEM_REALLOC, pool, (UINTPTR)ptr, size);
66 }
67 
LOS_TraceMemAllocAlign(VOID * pool,VOID * ptr,UINT32 size,UINT32 boundary)68 STATIC VOID LOS_TraceMemAllocAlign(VOID *pool, VOID *ptr, UINT32 size, UINT32 boundary)
69 {
70     LOS_TRACE(MEM_ALLOC_ALIGN, pool, (UINTPTR)ptr, size, boundary);
71 }
72 
LOS_TraceEventInit(PEVENT_CB_S eventCB)73 STATIC VOID LOS_TraceEventInit(PEVENT_CB_S eventCB)
74 {
75     LOS_TRACE(EVENT_CREATE, (UINTPTR)eventCB);
76 }
77 
LOS_TraceEventRead(PEVENT_CB_S eventCB,UINT32 eventMask,UINT32 mode,UINT32 timeout)78 STATIC VOID LOS_TraceEventRead(PEVENT_CB_S eventCB, UINT32 eventMask, UINT32 mode, UINT32 timeout)
79 {
80     LOS_TRACE(EVENT_READ, (UINTPTR)eventCB, eventCB->uwEventID, eventMask, mode, timeout);
81 }
82 
LOS_TraceEventWrite(PEVENT_CB_S eventCB,UINT32 events)83 STATIC VOID LOS_TraceEventWrite(PEVENT_CB_S eventCB, UINT32 events)
84 {
85     LOS_TRACE(EVENT_WRITE, (UINTPTR)eventCB, eventCB->uwEventID, events);
86 }
87 
LOS_TraceEventClear(PEVENT_CB_S eventCB,UINT32 events)88 STATIC VOID LOS_TraceEventClear(PEVENT_CB_S eventCB, UINT32 events)
89 {
90     LOS_TRACE(EVENT_CLEAR, (UINTPTR)eventCB, eventCB->uwEventID, events);
91 }
92 
LOS_TraceEventDestroy(PEVENT_CB_S eventCB)93 STATIC VOID LOS_TraceEventDestroy(PEVENT_CB_S eventCB)
94 {
95     LOS_TRACE(EVENT_DELETE, (UINTPTR)eventCB, LOS_OK);
96 }
97 
LOS_TraceQueueCreate(const LosQueueCB * queueCB)98 STATIC VOID LOS_TraceQueueCreate(const LosQueueCB *queueCB)
99 {
100     LOS_TRACE(QUEUE_CREATE, queueCB->queueID, queueCB->queueLen, queueCB->queueSize - sizeof(UINT32),
101                 (UINTPTR)queueCB, 0);
102 }
103 
LOS_TraceQueueRW(const LosQueueCB * queueCB,UINT32 operateType,UINT32 bufferSize,UINT32 timeout)104 STATIC VOID LOS_TraceQueueRW(const LosQueueCB *queueCB, UINT32 operateType,
105                     UINT32 bufferSize, UINT32 timeout)
106 {
107     LOS_TRACE(QUEUE_RW, queueCB->queueID, queueCB->queueSize, bufferSize, operateType,
108                 queueCB->readWriteableCnt[OS_QUEUE_READ], queueCB->readWriteableCnt[OS_QUEUE_WRITE], timeout);
109 }
110 
LOS_TraceQueueDelete(const LosQueueCB * queueCB)111 STATIC VOID LOS_TraceQueueDelete(const LosQueueCB *queueCB)
112 {
113     LOS_TRACE(QUEUE_DELETE, queueCB->queueID, queueCB->queueState, queueCB->readWriteableCnt[OS_QUEUE_READ]);
114 }
115 
LOS_TraceSemCreate(const LosSemCB * semCB)116 STATIC VOID LOS_TraceSemCreate(const LosSemCB *semCB)
117 {
118     LOS_TRACE(SEM_CREATE, semCB->semID, 0, semCB->semCount);
119 }
120 
LOS_TraceSemPost(const LosSemCB * semCB,const LosTaskCB * resumedTask)121 STATIC VOID LOS_TraceSemPost(const LosSemCB *semCB, const LosTaskCB *resumedTask)
122 {
123     (VOID)resumedTask;
124     LOS_TRACE(SEM_POST, semCB->semID, 0, semCB->semCount);
125 }
126 
LOS_TraceSemPend(const LosSemCB * semCB,const LosTaskCB * runningTask,UINT32 timeout)127 STATIC VOID LOS_TraceSemPend(const LosSemCB *semCB, const LosTaskCB *runningTask, UINT32 timeout)
128 {
129     (VOID)runningTask;
130     LOS_TRACE(SEM_PEND, semCB->semID, semCB->semCount, timeout);
131 }
132 
LOS_TraceSemDelete(const LosSemCB * semCB)133 STATIC VOID LOS_TraceSemDelete(const LosSemCB *semCB)
134 {
135     LOS_TRACE(SEM_DELETE, semCB->semID, LOS_OK);
136 }
137 
LOS_TraceMuxCreate(const LosMuxCB * muxCB)138 STATIC VOID LOS_TraceMuxCreate(const LosMuxCB *muxCB)
139 {
140     LOS_TRACE(MUX_CREATE, muxCB->muxID);
141 }
142 
LOS_TraceMuxPost(const LosMuxCB * muxCB)143 STATIC VOID LOS_TraceMuxPost(const LosMuxCB *muxCB)
144 {
145     LOS_TRACE(MUX_POST, muxCB->muxID, muxCB->muxCount,
146                 (muxCB->owner == NULL) ? 0xffffffff : muxCB->owner->taskID);
147 }
148 
LOS_TraceMuxPend(const LosMuxCB * muxCB,UINT32 timeout)149 STATIC VOID LOS_TraceMuxPend(const LosMuxCB *muxCB, UINT32 timeout)
150 {
151     LOS_TRACE(MUX_PEND, muxCB->muxID, muxCB->muxCount,
152                 (muxCB->owner == NULL) ? 0xffffffff : muxCB->owner->taskID, timeout);
153 }
154 
LOS_TraceMuxDelete(const LosMuxCB * muxCB)155 STATIC VOID LOS_TraceMuxDelete(const LosMuxCB *muxCB)
156 {
157     LOS_TRACE(MUX_DELETE, muxCB->muxID, muxCB->muxStat, muxCB->muxCount,
158                 (muxCB->owner == NULL) ? 0xffffffff : muxCB->owner->taskID);
159 }
160 
LOS_TraceTaskCreate(const LosTaskCB * taskCB)161 STATIC VOID LOS_TraceTaskCreate(const LosTaskCB *taskCB)
162 {
163     LOS_TRACE(TASK_CREATE, taskCB->taskID, taskCB->taskStatus, taskCB->priority);
164 }
165 
LOS_TraceTaskPriModify(const LosTaskCB * taskCB,UINT32 prio)166 STATIC VOID LOS_TraceTaskPriModify(const LosTaskCB *taskCB, UINT32 prio)
167 {
168     LOS_TRACE(TASK_PRIOSET, taskCB->taskID, taskCB->taskStatus, taskCB->priority, prio);
169 }
170 
LOS_TraceTaskDelete(const LosTaskCB * taskCB)171 STATIC VOID LOS_TraceTaskDelete(const LosTaskCB *taskCB)
172 {
173     LOS_TRACE(TASK_DELETE, taskCB->taskID, taskCB->taskStatus, (UINTPTR)taskCB->stackPointer);
174 }
175 
LOS_TraceTaskSwitchedIn(VOID)176 STATIC VOID LOS_TraceTaskSwitchedIn(VOID)
177 {
178     LosTaskCB *newTask = g_losTask.newTask;
179     LosTaskCB *runTask = g_losTask.runTask;
180     LOS_TRACE(TASK_SWITCH, newTask->taskID, runTask->priority, runTask->taskStatus,
181         newTask->priority, newTask->taskStatus);
182 }
183 
LOS_TraceTaskResume(const LosTaskCB * taskCB)184 STATIC VOID LOS_TraceTaskResume(const LosTaskCB *taskCB)
185 {
186     LOS_TRACE(TASK_RESUME, taskCB->taskID, taskCB->taskStatus, taskCB->priority);
187 }
188 
LOS_TraceTaskSuspend(const LosTaskCB * taskCB)189 STATIC VOID LOS_TraceTaskSuspend(const LosTaskCB *taskCB)
190 {
191     LOS_TRACE(TASK_SUSPEND, taskCB->taskID, taskCB->taskStatus, g_losTask.runTask->taskID);
192 }
193 
LOS_TraceIsrEnter(UINT32 hwiNum)194 STATIC VOID LOS_TraceIsrEnter(UINT32 hwiNum)
195 {
196     LOS_TRACE(HWI_RESPONSE_IN, hwiNum);
197 }
198 
LOS_TraceIsrExit(UINT32 hwiNum)199 STATIC VOID LOS_TraceIsrExit(UINT32 hwiNum)
200 {
201     LOS_TRACE(HWI_RESPONSE_OUT, hwiNum);
202 }
203 
LOS_TraceSwtmrCreate(const SWTMR_CTRL_S * swtmr)204 STATIC VOID LOS_TraceSwtmrCreate(const SWTMR_CTRL_S *swtmr)
205 {
206     LOS_TRACE(SWTMR_CREATE, swtmr->usTimerID);
207 }
208 
LOS_TraceSwtmrDelete(const SWTMR_CTRL_S * swtmr)209 STATIC VOID LOS_TraceSwtmrDelete(const SWTMR_CTRL_S *swtmr)
210 {
211     LOS_TRACE(SWTMR_DELETE, swtmr->usTimerID);
212 }
213 
LOS_TraceSwtmrExpired(const SWTMR_CTRL_S * swtmr)214 STATIC VOID LOS_TraceSwtmrExpired(const SWTMR_CTRL_S *swtmr)
215 {
216     LOS_TRACE(SWTMR_EXPIRED, swtmr->usTimerID);
217 }
218 
LOS_TraceSwtmrStart(const SWTMR_CTRL_S * swtmr)219 STATIC VOID LOS_TraceSwtmrStart(const SWTMR_CTRL_S *swtmr)
220 {
221     LOS_TRACE(SWTMR_START, swtmr->usTimerID, swtmr->ucMode, swtmr->uwInterval);
222 }
223 
LOS_TraceSwtmrStop(const SWTMR_CTRL_S * swtmr)224 STATIC VOID LOS_TraceSwtmrStop(const SWTMR_CTRL_S *swtmr)
225 {
226     LOS_TRACE(SWTMR_STOP, swtmr->usTimerID);
227 }
228 
OsTraceCnvInit(VOID)229 VOID OsTraceCnvInit(VOID)
230 {
231     LOS_HookReg(LOS_HOOK_TYPE_MEM_ALLOC, LOS_TraceMemAlloc);
232     LOS_HookReg(LOS_HOOK_TYPE_MEM_FREE, LOS_TraceMemFree);
233     LOS_HookReg(LOS_HOOK_TYPE_MEM_INIT, LOS_TraceMemInit);
234     LOS_HookReg(LOS_HOOK_TYPE_MEM_REALLOC, LOS_TraceMemRealloc);
235     LOS_HookReg(LOS_HOOK_TYPE_MEM_ALLOCALIGN, LOS_TraceMemAllocAlign);
236     LOS_HookReg(LOS_HOOK_TYPE_EVENT_INIT, LOS_TraceEventInit);
237     LOS_HookReg(LOS_HOOK_TYPE_EVENT_READ, LOS_TraceEventRead);
238     LOS_HookReg(LOS_HOOK_TYPE_EVENT_WRITE, LOS_TraceEventWrite);
239     LOS_HookReg(LOS_HOOK_TYPE_EVENT_CLEAR, LOS_TraceEventClear);
240     LOS_HookReg(LOS_HOOK_TYPE_EVENT_DESTROY, LOS_TraceEventDestroy);
241     LOS_HookReg(LOS_HOOK_TYPE_QUEUE_CREATE, LOS_TraceQueueCreate);
242     LOS_HookReg(LOS_HOOK_TYPE_QUEUE_DELETE, LOS_TraceQueueDelete);
243     LOS_HookReg(LOS_HOOK_TYPE_QUEUE_READ, LOS_TraceQueueRW);
244     LOS_HookReg(LOS_HOOK_TYPE_QUEUE_WRITE, LOS_TraceQueueRW);
245     LOS_HookReg(LOS_HOOK_TYPE_SEM_CREATE, LOS_TraceSemCreate);
246     LOS_HookReg(LOS_HOOK_TYPE_SEM_DELETE, LOS_TraceSemDelete);
247     LOS_HookReg(LOS_HOOK_TYPE_SEM_POST, LOS_TraceSemPost);
248     LOS_HookReg(LOS_HOOK_TYPE_SEM_PEND, LOS_TraceSemPend);
249     LOS_HookReg(LOS_HOOK_TYPE_MUX_CREATE, LOS_TraceMuxCreate);
250     LOS_HookReg(LOS_HOOK_TYPE_MUX_POST, LOS_TraceMuxPost);
251     LOS_HookReg(LOS_HOOK_TYPE_MUX_PEND, LOS_TraceMuxPend);
252     LOS_HookReg(LOS_HOOK_TYPE_MUX_DELETE, LOS_TraceMuxDelete);
253     LOS_HookReg(LOS_HOOK_TYPE_TASK_PRIMODIFY, LOS_TraceTaskPriModify);
254     LOS_HookReg(LOS_HOOK_TYPE_TASK_DELETE, LOS_TraceTaskDelete);
255     LOS_HookReg(LOS_HOOK_TYPE_TASK_CREATE, LOS_TraceTaskCreate);
256     LOS_HookReg(LOS_HOOK_TYPE_TASK_SWITCHEDIN, LOS_TraceTaskSwitchedIn);
257     LOS_HookReg(LOS_HOOK_TYPE_MOVEDTASKTOREADYSTATE, LOS_TraceTaskResume);
258     LOS_HookReg(LOS_HOOK_TYPE_MOVEDTASKTOSUSPENDEDLIST, LOS_TraceTaskSuspend);
259     LOS_HookReg(LOS_HOOK_TYPE_ISR_ENTER, LOS_TraceIsrEnter);
260     LOS_HookReg(LOS_HOOK_TYPE_ISR_EXIT, LOS_TraceIsrExit);
261     LOS_HookReg(LOS_HOOK_TYPE_SWTMR_CREATE, LOS_TraceSwtmrCreate);
262     LOS_HookReg(LOS_HOOK_TYPE_SWTMR_DELETE, LOS_TraceSwtmrDelete);
263     LOS_HookReg(LOS_HOOK_TYPE_SWTMR_EXPIRED, LOS_TraceSwtmrExpired);
264     LOS_HookReg(LOS_HOOK_TYPE_SWTMR_START, LOS_TraceSwtmrStart);
265     LOS_HookReg(LOS_HOOK_TYPE_SWTMR_STOP, LOS_TraceSwtmrStop);
266 }
267 
268 #ifdef __cplusplus
269 #if __cplusplus
270 }
271 #endif /* __cplusplus */
272 #endif /* __cplusplus */
273