Files
m241Neelima/vxworks-6.9/target/h/hwif/pwr/pwrCpuMonLib.h
T
2026-07-30 11:19:44 +05:30

106 lines
3.9 KiB
C

/* pwrCpuMonLib.h - CPU load monitor library header file */
/*
* Copyright (c) 2011 Wind River Systems, Inc.
*
* The right to copy, distribute, modify or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
modification history
--------------------
01h,19oct11,sem WIND00312771 - Update timestamp API
01g,19sep11,jlv Add pwrCpuMonConfigGet API
01f,25aug11,sem WIND00295172 - Remove pwrCpuMonIdGet
01e,22aug11,jlv WIND00295172 - Remove CPU PowerId
01d,16aug11,sem WIND00255354 - Optimize for SMP
01c,10aug11,sem WIND00292261 - Update load monitor timestamping
01b,02aug11,sem Add support for sleep headroom - Reqt WIND00255354
01a,15jul11,sem created - Reqt WIND00255354
*/
#ifndef __INCpwrCpuMonLibh
#define __INCpwrCpuMonLibh
#include <vxWorks.h>
#include <vsbConfig.h>
#include <hwif/pwr/pwrPolicyLib.h>
#ifdef __cplusplus
extern "C" {
#endif
/* CPU monitor timestamp type */
#if (CPU_FAMILY == I80X86) && (CPU != PENTIUM)
typedef UINT64 PWR_CPU_MON_TIMESTAMP;
#else
typedef UINT32 PWR_CPU_MON_TIMESTAMP;
#endif /* ((CPU_FAMILY == I80X86) && (CPU != PENTIUM)) */
/* CPU monitor timestamp routine signatures */
typedef PWR_CPU_MON_TIMESTAMP (*pwrCpuMonTimestampGet_func)(void);
typedef void (*pwrCpuMonTimestampReset_func)(void);
/* CPU montitor event handler routine signature */
typedef void (*pwrCpuMonEventRtn) (UINT32 param, UINT32 cpuNum);
/* CPU monitor event handler routines and parameters */
typedef struct pwrCpuMonEventHandlers
{
pwrCpuMonEventRtn lowHeadroomAlarmRtn; /* callback routine for low headroom alarm events */
UINT32 lowHeadroomAlarmParam; /* callback parameter for low headroom alarm events */
pwrCpuMonEventRtn lowHeadroomRtn; /* callback routine for low headroom events */
UINT32 lowHeadroomParam; /* callback parameter for low headroom events */
pwrCpuMonEventRtn sleepHeadroomRtn; /* callback routine for sleep headroom events */
UINT32 sleepHeadroomParam; /* callback parameter for sleep headroom events */
pwrCpuMonEventRtn highHeadroomRtn; /* callback routine for high headroom events */
UINT32 highHeadroomParam; /* callback parameter for high headroom events */
} PWR_CPU_MON_EVENT_HANDLERS;
/* CPU monitor utilization handler routine signature */
typedef UINT32 (*pwrCpuMonUtilRtn) (UINT32 param, UINT32 cpuNum);
/* CPU monitor utilization handlers and parameters */
typedef struct pwrCpuMonUtilHandlers
{
pwrCpuMonUtilRtn utilRtn; /* callback routine for cpu utilization */
UINT32 utilParam; /* callback parameter for cpu utilization */
} PWR_CPU_MON_UTIL_HANDLERS;
/* CPU monitor metrics */
typedef struct pwrCpuMonMetrics
{
UINT32 util; /* utilization computed over last completed sample interval */
UINT32 sampleCnt; /* sample intervals completed */
UINT32 intrCnt; /* interrupt count from last completed sample interval */
} PWR_CPU_MON_METRICS;
/* timestamp functions */
extern pwrCpuMonTimestampGet_func pwrCpuMonTimestampGetFunc;
extern pwrCpuMonTimestampReset_func pwrCpuMonTimestampResetFunc;
extern STATUS pwrCpuMonLibInit (void);
extern STATUS pwrCpuMonReset (UINT32 cpuNum);
extern STATUS pwrCpuMonConfigure (UINT32 cpuNum, PWR_POLICY_CPU *cfg);
extern STATUS pwrCpuMonConfigGet (UINT32 cpuNum, PWR_POLICY_CPU *cfg);
extern STATUS pwrCpuMonEventRegister (UINT32 cpuNum, PWR_CPU_MON_EVENT_HANDLERS *handlers);
extern STATUS pwrCpuMonUtilRegister (UINT32 cpuNum, PWR_CPU_MON_UTIL_HANDLERS *handlers);
extern UINT32 pwrCpuMonUtilGet (UINT32 cpuNum);
extern STATUS pwrCpuMonMetricsGet (UINT32 cpuNum, PWR_CPU_MON_METRICS *metrics);
#ifdef __cplusplus
}
#endif
#endif /* __INCpwrCpuMonLibh */