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

浏览源代码.

结构体

struct  PerfRegs
 
struct  PerfBackTrace
 
struct  PerfSampleData
 
struct  PerfDataHdr
 
struct  Event
 
struct  PerfEvent
 
struct  Pmu
 
struct  PerfCB
 

枚举

enum  PmuStatus { PERF_PMU_STOPED , PERF_PMU_STARTED }
 

函数

STATIC INLINE VOID OsPerfArchFetchIrqRegs (PerfRegs *regs, LosTaskCB *curTask)
 
STATIC INLINE VOID OsPerfFetchIrqRegs (PerfRegs *regs)
 
STATIC INLINE VOID OsPerfArchFetchCallerRegs (PerfRegs *regs)
 
STATIC INLINE VOID OsPerfFetchCallerRegs (PerfRegs *regs)
 
VOID OsPerfSetIrqRegs (UINTPTR pc, UINTPTR fp)
 
VOID OsPerfUpdateEventCount (Event *event, UINT32 value)
 
VOID OsPerfHandleOverFlow (Event *event, PerfRegs *regs)
 

枚举类型说明

◆ PmuStatus

enum PmuStatus
枚举值
PERF_PMU_STOPED 
PERF_PMU_STARTED 

在文件 los_perf_pri.h53 行定义.

53 {
56};
@ PERF_PMU_STOPED
Definition: los_perf_pri.h:54
@ PERF_PMU_STARTED
Definition: los_perf_pri.h:55

函数说明

◆ OsPerfArchFetchCallerRegs()

STATIC INLINE VOID OsPerfArchFetchCallerRegs ( PerfRegs regs)

在文件 los_perf_pri.h139 行定义.

139{}
这是这个函数的调用关系图:

◆ OsPerfArchFetchIrqRegs()

STATIC INLINE VOID OsPerfArchFetchIrqRegs ( PerfRegs regs,
LosTaskCB curTask 
)

在文件 los_perf_pri.h128 行定义.

128{}
这是这个函数的调用关系图:

◆ OsPerfFetchCallerRegs()

STATIC INLINE VOID OsPerfFetchCallerRegs ( PerfRegs regs)

在文件 los_perf_pri.h142 行定义.

143{
145 PRINT_DEBUG("pc = 0x%x, fp = 0x%x\n", regs->pc, regs->fp);
146}
STATIC INLINE VOID OsPerfArchFetchCallerRegs(PerfRegs *regs)
Definition: los_perf_pri.h:139
UINTPTR fp
Definition: los_perf_pri.h:60
UINTPTR pc
Definition: los_perf_pri.h:59
函数调用图:
这是这个函数的调用关系图:

◆ OsPerfFetchIrqRegs()

STATIC INLINE VOID OsPerfFetchIrqRegs ( PerfRegs regs)

在文件 los_perf_pri.h131 行定义.

132{
133 LosTaskCB *curTask = OsCurrTaskGet();
134 OsPerfArchFetchIrqRegs(regs, curTask);
135 PRINT_DEBUG("pc = 0x%x, fp = 0x%x\n", regs->pc, regs->fp);
136}
STATIC INLINE VOID OsPerfArchFetchIrqRegs(PerfRegs *regs, LosTaskCB *curTask)
Definition: los_perf_pri.h:128
STATIC INLINE LosTaskCB * OsCurrTaskGet(VOID)
函数调用图:
这是这个函数的调用关系图:

◆ OsPerfHandleOverFlow()

VOID OsPerfHandleOverFlow ( Event event,
PerfRegs regs 
)

在文件 los_perf.c350 行定义.

351{
352 PerfSampleData data;
353 UINT32 len;
354
355 (VOID)memset_s(&data, sizeof(PerfSampleData), 0, sizeof(PerfSampleData));
357 len = OsPerfCollectData(event, &data, regs);
358 OsPerfOutputWrite((CHAR *)&data, len);
359 }
360}
LITE_OS_SEC_TEXT UINT32 LOS_CurTaskIDGet(VOID)
Obtain current running task ID.
Definition: los_task.c:331
STATIC UINT32 OsPerfCollectData(Event *event, PerfSampleData *data, PerfRegs *regs)
Definition: los_perf.c:235
STATIC PerfCB g_perfCb
Definition: los_perf.c:42
STATIC INLINE BOOL OsPerfFilter(UINT32 taskId, UINT32 processId)
Definition: los_perf.c:307
LITE_OS_SEC_TEXT UINT32 LOS_GetCurrProcessID(VOID)
获取当前进程的进程ID
Definition: los_process.c:2161
unsigned int UINT32
Definition: los_typedef.h:57
char CHAR
Definition: los_typedef.h:63
UINT32 OsPerfOutputWrite(CHAR *data, UINT32 size)
Definition: perf_output.c:101
UINT8 needSample
Definition: los_perf_pri.h:124
函数调用图:
这是这个函数的调用关系图:

◆ OsPerfSetIrqRegs()

VOID OsPerfSetIrqRegs ( UINTPTR  pc,
UINTPTR  fp 
)

在文件 los_perf.c537 行定义.

538{
539 LosTaskCB *runTask = (LosTaskCB *)ArchCurrTaskGet();
540 runTask->pc = pc;
541 runTask->fp = fp;
542}
STATIC INLINE VOID * ArchCurrTaskGet(VOID)
获取当前task的地址
Definition: los_hw_cpu.h:150
UINTPTR fp
fp寄存器
UINTPTR pc
pc寄存器
函数调用图:

◆ OsPerfUpdateEventCount()

VOID OsPerfUpdateEventCount ( Event event,
UINT32  value 
)

在文件 los_perf.c342 行定义.

343{
344 if (event == NULL) {
345 return;
346 }
347 event->count[ArchCurrCpuid()] += (value & 0xFFFFFFFF); /* event->count is UINT64 */
348}
STATIC INLINE UINT32 ArchCurrCpuid(VOID)
Definition: los_hw_cpu.h:168
函数调用图:
这是这个函数的调用关系图: