/* * Copyright (c) 2009-2022 Huawei Technologies Co., Ltd. All rights reserved. * * UniProton is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: * http://license.coscl.org.cn/MulanPSL2 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. * See the Mulan PSL v2 for more details. * Create: 2009-12-22 * Description: CPU占用率模块对外头文件。 */ #ifndef PRT_CPUP_H #define PRT_CPUP_H #include "prt_buildef.h" #include "prt_module.h" #include "prt_errno.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif /* __cpluscplus */ #endif /* __cpluscplus */ /* * CPUP错误码:参数(CPUP告警阈值)设定不在规定范围(0,10000]。 * * 值: 0x02000601 * * 解决方案: CPUP告警阈值设定在规定范围(0,10000]内。 */ #define OS_ERRNO_CPUP_INTERVAL_NOT_SUITED OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x01) /* * CPUP错误码:指针参数为NULL。 * * 值: 0x02000602 * * 解决方案: 传入非0的有效地址。 */ #define OS_ERRNO_CPUP_PTR_NULL OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x02) /* * CPUP错误码:恢复阈值设定不小于告警阈值。 * * 值: 0x02000603 * * 解决方案: 恢复阈值小于告警阈值。 */ #define OS_ERRNO_CPUP_RESUME_NOT_SUITED OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x03) /* * CPUP错误码:CPUP初始化申请内存失败。 * * 值: 0x02000604 * * 解决方案: 确认缺省静态内存是否足够,以及采样个数(参见配置宏OS_CPUP_SAMPLE_RECORD_NUM)是否过大。 */ #define OS_ERRNO_CPUP_NO_MEMORY OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x04) /* * CPUP错误码:在osStart之前调用CPUP模块相关功能接口。 * * 值: 0x02000605 * * 解决方案: 调用CPUP模块功能接口时,请查看是否在osStart之后。 */ #define OS_ERRNO_CPUP_OS_NOT_STARTED OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x05) /* * CPUP错误码:CPUP采样时间间隔为0。 * * 值: 0x02000606 * * 解决方案: 系统级CPUP设置采样时间间隔必须大于0,当CPUP告警功能打开时,线程级CPUP采样时间间隔也必须大于0。 */ #define OS_ERRNO_CPUP_SAMPLE_TIME_ZERO OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x06) /* * CPUP错误码:CPUP功能开关未打开或者未初始化时,获取CPUP、设置告警阈值或者补偿IDLE钩子执行时间。 * * 值: 0x02000607 * * 解决方案: 需保证在打开功能开关,在osStart之后才能获取CPUP、设置告警阈值或者补偿IDLE钩子执行时间。 */ #define OS_ERRNO_CPUP_NOT_INITED OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x07) /* * CPUP错误码:使用获取线程级所有线程的CPUP接口时,输入的线程数为0。 * * 值: 0x02000608 * * 解决方案: 使用获取线程级所有线程的CPUP接口时,输入的线程数必须大于0 */ #define OS_ERRNO_CPUP_THREAD_INNUM_INVALID OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x08) /* * CPUP错误码:CPUP告警恢复及CPUP告警阈值配置错误。 * * 值: 0x02000609 * * 解决方案: CPUP告警阈值设定应该小于CPUP告警恢复阈值。 */ #define OS_ERRNO_CPUP_RESUME_VALUE_ERROR OS_ERRNO_BUILD_ERROR(OS_MID_CPUP, 0x09) /* * CPU占用率告警标志。 */ #define CPUP_INFO_TYPE_OVERLOAD 0x01 /* * CPU占用率恢复告警标志。 */ #define CPUP_INFO_TYPE_RECONVERT 0x02 /* * 设置cpu占用率的注册信息结构体。 */ struct CpupModInfo { /* CPUP告警标志 */ bool cpupWarnFlag; /* 采样间隔,单位tick */ U32 sampleTime; /* CPU占用率告警阈值 */ U32 warn; /* CPU占用率告警恢复阈值 */ U32 resume; }; /* * CPUP告警信息。 */ struct CpupWarnInfo { /* CPU占用率告警信息类型 */ U16 type; /* 保留 */ U16 reserve; }; /* * @brief CPUP告警回调函数类型定义。 * * @par 描述 * 通过该回调函数的类型定义回调函数钩子。 * @attention 无 * * @param #struct CpupWarnInfo* [IN] 类型#struct CpupWarnInfo*,CPUP告警信息。 * * @retval 无。 * @par 依赖 *