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

浏览源代码.

结构体

struct  HwPmu
 
struct  SwPmu
 

函数

UINT32 OsPerfPmuRegister (Pmu *pmu)
 
VOID OsPerfPmuRm (UINT32 type)
 
PmuOsPerfPmuGet (UINT32 type)
 
UINT32 OsHwPmuInit (VOID)
 
UINT32 OsSwPmuInit (VOID)
 
UINT32 OsTimedPmuInit (VOID)
 
UINT32 OsGetPmuCounter0 (VOID)
 
UINT32 OsGetPmuMaxCounter (VOID)
 
UINT32 OsGetPmuCycleCounter (VOID)
 
UINT32 OsPerfHwInit (HwPmu *hwPmu)
 

函数说明

◆ OsGetPmuCounter0()

UINT32 OsGetPmuCounter0 ( VOID  )

在文件 armv7_pmu.c339 行定义.

340{
341 return ARMV7_IDX_COUNTER0;
342}
这是这个函数的调用关系图:

◆ OsGetPmuCycleCounter()

UINT32 OsGetPmuCycleCounter ( VOID  )

在文件 armv7_pmu.c334 行定义.

335{
336 return ARMV7_IDX_CYCLE_COUNTER;
337}
这是这个函数的调用关系图:

◆ OsGetPmuMaxCounter()

UINT32 OsGetPmuMaxCounter ( VOID  )

在文件 armv7_pmu.c329 行定义.

330{
331 return ARMV7_IDX_MAX_COUNTER;
332}
这是这个函数的调用关系图:

◆ OsHwPmuInit()

UINT32 OsHwPmuInit ( VOID  )

在文件 armv7_pmu.c356 行定义.

357{
358 UINT32 ret;
359 UINT32 index;
360
361 for (index = 0; index < LOSCFG_KERNEL_CORE_NUM; index++) {
362 ret = LOS_HwiCreate(g_pmuIrqNr[index], 0, 0, Armv7PmuIrqHandler, 0);
363 if (ret != LOS_OK) {
364 PRINT_ERR("pmu %u irq handler register failed\n", g_pmuIrqNr[index]);
365 return ret;
366 }
367#ifdef LOSCFG_KERNEL_SMP
368 HalIrqSetAffinity(g_pmuIrqNr[index], CPUID_TO_AFFI_MASK(index));
369#endif
370 }
371 ret = OsPerfHwInit(&g_armv7Pmu);
372 return ret;
373}
STATIC HwPmu g_armv7Pmu
Definition: armv7_pmu.c:38
STATIC VOID Armv7PmuIrqHandler(VOID)
Definition: armv7_pmu.c:292
VOID HalIrqSetAffinity(UINT32 vector, UINT32 cpuMask)
Definition: gic_v2.c:63
LITE_OS_SEC_TEXT_INIT UINT32 LOS_HwiCreate(HWI_HANDLE_T hwiNum, HWI_PRIOR_T hwiPrio, HWI_MODE_T hwiMode, HWI_PROC_FUNC hwiHandler, HwiIrqParam *irqParam)
创建一个硬中断 中断创建,注册中断号、中断触发模式、中断优先级、中断处理程序。中断被触发时, handleIrq会调用该中断处理程序
Definition: los_hwi.c:429
unsigned int UINT32
Definition: los_typedef.h:57
UINT32 OsPerfHwInit(HwPmu *hwPmu)
Definition: perf_hw_pmu.c:169
函数调用图:
这是这个函数的调用关系图:

◆ OsPerfHwInit()

UINT32 OsPerfHwInit ( HwPmu hwPmu)

在文件 perf_hw_pmu.c169 行定义.

170{
171 UINT32 ret;
172 if (hwPmu == NULL) {
173 return LOS_NOK;
174 }
175
176 hwPmu->pmu.type = PERF_EVENT_TYPE_HW;
177 hwPmu->pmu.config = OsPerfHwConfig;
178 hwPmu->pmu.start = OsPerfHwStart;
179 hwPmu->pmu.stop = OsPerfHwStop;
181
182 (VOID)memset_s(&hwPmu->pmu.events, sizeof(PerfEvent), 0, sizeof(PerfEvent));
183 ret = OsPerfPmuRegister(&hwPmu->pmu);
184
186 return ret;
187}
@ PERF_EVENT_TYPE_HW
Definition: perf.h:57
STATIC UINT32 OsPerfHwConfig(VOID)
Definition: perf_hw_pmu.c:53
STATIC UINT32 OsPerfHwStart(VOID)
Definition: perf_hw_pmu.c:106
STATIC UINT32 OsPerfHwStop(VOID)
Definition: perf_hw_pmu.c:128
STATIC CHAR * OsPerfGetEventName(Event *event)
Definition: perf_hw_pmu.c:157
STATIC Pmu * g_perfHw
Definition: perf_hw_pmu.c:34
Pmu * OsPerfPmuGet(UINT32 type)
Definition: perf_pmu.c:52
UINT32 OsPerfPmuRegister(Pmu *pmu)
Definition: perf_pmu.c:36
Pmu pmu
Definition: perf_pmu_pri.h:48
UINT32(* start)(VOID)
Definition: los_perf_pri.h:104
PerfEvent events
Definition: los_perf_pri.h:102
UINT32(* config)(VOID)
Definition: los_perf_pri.h:103
enum PerfEventType type
Definition: los_perf_pri.h:101
UINT32(* stop)(VOID)
Definition: los_perf_pri.h:105
CHAR *(* getName)(Event *event)
Definition: los_perf_pri.h:106
函数调用图:
这是这个函数的调用关系图:

◆ OsPerfPmuGet()

Pmu * OsPerfPmuGet ( UINT32  type)

在文件 perf_pmu.c52 行定义.

53{
54 if (type >= PERF_EVENT_TYPE_MAX) {
55 return NULL;
56 }
57
58 if (type == PERF_EVENT_TYPE_RAW) { /* process hardware raw events with hard pmu */
59 type = PERF_EVENT_TYPE_HW;
60 }
61 return g_pmuMgr[type];
62}
@ PERF_EVENT_TYPE_MAX
Definition: perf.h:62
@ PERF_EVENT_TYPE_RAW
Definition: perf.h:60
STATIC Pmu * g_pmuMgr[PERF_EVENT_TYPE_MAX]
Definition: perf_pmu.c:34
这是这个函数的调用关系图:

◆ OsPerfPmuRegister()

UINT32 OsPerfPmuRegister ( Pmu pmu)

在文件 perf_pmu.c36 行定义.

37{
38 UINT32 type;
39
40 if ((pmu == NULL) || (pmu->type >= PERF_EVENT_TYPE_MAX)) {
41 return LOS_NOK;
42 }
43
44 type = pmu->type;
45 if (g_pmuMgr[type] == NULL) {
46 g_pmuMgr[type] = pmu;
47 return LOS_OK;
48 }
49 return LOS_NOK;
50}
这是这个函数的调用关系图:

◆ OsPerfPmuRm()

VOID OsPerfPmuRm ( UINT32  type)

在文件 perf_pmu.c64 行定义.

65{
66 if (type >= PERF_EVENT_TYPE_MAX) {
67 return;
68 }
69 g_pmuMgr[type] = NULL;
70}

◆ OsSwPmuInit()

UINT32 OsSwPmuInit ( VOID  )

在文件 perf_sw_pmu.c153 行定义.

154{
155 g_perfSw.pmu = (Pmu) {
157 .config = OsPerfSwConfig,
158 .start = OsPerfSwStart,
159 .stop = OsPerfSwStop,
160 .getName = OsPerfGetEventName,
161 };
162
163 g_perfSw.enable = FALSE;
164
166
167 (VOID)memset_s(&g_perfSw.pmu.events, sizeof(PerfEvent), 0, sizeof(PerfEvent));
169}
@ PERF_EVENT_TYPE_SW
Definition: perf.h:59
STATIC VOID OsPerfCnvInit(VOID)
Definition: perf_sw_pmu.c:97
STATIC UINT32 OsPerfSwStop(VOID)
Definition: perf_sw_pmu.c:138
STATIC SwPmu g_perfSw
Definition: perf_sw_pmu.c:35
STATIC UINT32 OsPerfSwConfig(VOID)
Definition: perf_sw_pmu.c:105
STATIC CHAR * OsPerfGetEventName(Event *event)
Definition: perf_sw_pmu.c:144
STATIC UINT32 OsPerfSwStart(VOID)
Definition: perf_sw_pmu.c:122
Pmu pmu
Definition: perf_pmu_pri.h:62
BOOL enable
Definition: perf_pmu_pri.h:65
函数调用图:
这是这个函数的调用关系图:

◆ OsTimedPmuInit()

UINT32 OsTimedPmuInit ( VOID  )

在文件 perf_timed_pmu.c150 行定义.

151{
152 UINT32 ret;
153
154 g_perfTimed.time = (union ktime) {
155 .tv.sec = 0,
156 .tv.usec = HRTIMER_DEFAULT_PERIOD_US,
157 };
158
159 hrtimer_init(&g_perfTimed.hrtimer, 1, HRTIMER_MODE_REL);
160
161 ret = hrtimer_create(&g_perfTimed.hrtimer, g_perfTimed.time, OsPerfHrtimer);
162 if (ret != LOS_OK) {
163 return ret;
164 }
165
166 g_perfTimed.pmu = (Pmu) {
168 .config = OsPerfTimedConfig,
169 .start = OsPerfTimedStart,
170 .stop = OsPerfTimedStop,
171 .getName = OsPerfGetEventName,
172 };
173
174 (VOID)memset_s(&g_perfTimed.pmu.events, sizeof(PerfEvent), 0, sizeof(PerfEvent));
176 return ret;
177}
@ PERF_EVENT_TYPE_TIMED
Definition: perf.h:58
STATIC enum hrtimer_restart OsPerfHrtimer(struct hrtimer *hrtimer)
STATIC SwPmu g_perfTimed
STATIC UINT32 OsPerfTimedConfig(VOID)
STATIC UINT32 OsPerfTimedStop(VOID)
STATIC UINT32 OsPerfTimedStart(VOID)
STATIC CHAR * OsPerfGetEventName(Event *event)
struct hrtimer hrtimer
Definition: perf_pmu_pri.h:69
union ktime time
Definition: perf_pmu_pri.h:70
函数调用图:
这是这个函数的调用关系图: