1 /* 2 * Copyright (c) 2009-2022 Huawei Technologies Co., Ltd. All rights reserved. 3 * 4 * UniProton is licensed under Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * http://license.coscl.org.cn/MulanPSL2 8 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 9 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 10 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 11 * See the Mulan PSL v2 for more details. 12 * Create: 2009-12-22 13 * Description: Tick中断的对外头文件。 14 */ 15 #ifndef PRT_TICK_H 16 #define PRT_TICK_H 17 18 #include "prt_module.h" 19 #include "prt_errno.h" 20 21 #ifdef __cplusplus 22 #if __cplusplus 23 extern "C" { 24 #endif /* __cpluscplus */ 25 #endif /* __cpluscplus */ 26 27 /* 28 * Tick中断错误码:tick的周期错误 29 * 30 * 值: 0x02000501 31 * 32 * 解决方案:确认经过转换后的tick周期(多少cycle/tick)是否区间(0,0x00FFFFFF]内。 33 */ 34 #define OS_ERRNO_TICK_PERIOD OS_ERRNO_BUILD_ERROR(OS_MID_TICK, 0x01) 35 36 /* 37 * Tick中断错误码:每秒的Tick中断计数配置不合法。 38 * 39 * 值: 0x02000502 40 * 41 * 解决方案:确保配置的每秒Tick中断计数小于系统时钟数,并且不等于0。 42 */ 43 #define OS_ERRNO_TICK_PER_SECOND_ERROR OS_ERRNO_BUILD_ERROR(OS_MID_TICK, 0x02) 44 45 /* 46 * Tick中断模块配置信息的结构体定义。 47 * 48 * 保存Tick中断模块的配置项信息。 49 */ 50 struct TickModInfo { 51 /* Tick中断的优先级配置 */ 52 U32 tickPriority; 53 /* 每秒产生的TICK中断数 */ 54 U32 tickPerSecond; 55 }; 56 57 /* 58 * @brief Tick中断用户钩子函数。 59 * 60 * @par 描述 61 * Tick中断处理函数。 62 * 63 * @attention 64 * <ul> 65 * <li>用户调用的Tick中断处理钩子。</li> 66 * <li>Tick模块裁剪开关未打开,调用此接口无效。</li> 67 * </ul> 68 * 69 * @param 无。 70 * 71 * @retval 无。 72 * @par 依赖 73 * <ul><li>prt_tick.h:该接口声明所在的头文件。</li></ul> 74 * @see 无 75 */ 76 typedef void (*TickHandleFunc)(void); 77 78 /* 79 * @brief 获取每秒钟对应的Tick数。 80 * 81 * @par 描述 82 * 获取当前的tick计数。 83 * 84 * @attention 无 85 * 86 * @param 无。 87 * 88 * @retval [0,0xFFFFFFFFFFFFFFFF] 当前的tick计数。 89 * @par 依赖 90 * <ul><li>prt_tick.h:该接口声明所在的头文件。</li></ul> 91 * @see 无 92 */ 93 extern U64 PRT_TickGetCount(void); 94 95 #ifdef __cplusplus 96 #if __cplusplus 97 } 98 #endif /* __cpluscplus */ 99 #endif /* __cpluscplus */ 100 101 #endif /* PRT_TICK_H */ 102