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: 背景任务模块的对外头文件。 14 */ 15 #ifndef PRT_IDLE_H 16 #define PRT_IDLE_H 17 18 #include "prt_typedef.h" 19 20 #ifdef __cplusplus 21 #if __cplusplus 22 extern "C" { 23 #endif /* __cpluscplus */ 24 #endif /* __cpluscplus */ 25 26 /* 27 * @brief IDLE循环钩子的类型定义。 28 * 29 * @par 描述 30 * 用户通过IDLE循环钩子的函数类型定义函数,系统在进入IDLE循环之前调用该钩子。 31 * 32 * @attention 无。 33 * 34 * @param 无。 35 * 36 * @retval 无 37 * @par 依赖 38 * <ul><li>prt_idle.h:该接口声明所在的头文件。</li></ul> 39 * @see 无。 40 */ 41 typedef void (*IdleHook)(void); 42 43 /* 44 * @brief 注册IDLE循环进入前调用的钩子。 45 * 46 * @par 描述 47 * 为本核注册IDLE循环进入前调用的钩子,该钩子只会被调用一次。 48 * 49 * @attention 50 * <ul> 51 * <li>注册的钩子只在进入IDLE循环前执行一次。</li> 52 * <li>若任务未裁剪,则作用的是任务IDLE循环。</li> 53 * <li>IDLE任务钩子中使用矢量寄存器需要在前置钩子中调用#PRT_TaskCpSaveCfg接口设置矢量操作上下文保护区。</li> 54 * </ul> 55 * 56 * @param hook [IN] 类型#IdleHook,钩子函数。 57 * 58 * @retval #OS_OK 0x00000000,操作成功。 59 * 60 * @par 依赖 61 * <ul><li>prt_idle.h:该接口声明所在的头文件。</li></ul> 62 * @see PRT_IdleAddHook 63 */ 64 extern U32 PRT_IdleAddPrefixHook(IdleHook hook); 65 66 /* 67 * @brief 注册IDLE循环中调用的钩子 68 * 69 * @par 描述 70 * 注册在IDLE任务中调用的钩子函数。 71 * 72 * @attention 73 * <ul> 74 * <li>钩子中不能调用引起任务阻塞或切换的函数。</li> 75 * </ul> 76 * 77 * @param hook [OUT] 类型#IdleHook,IDLE钩子函数,该参数不能为空。 78 * 79 * @retval #OS_OK 0x00000000,操作成功。 80 * @retval #其它值,操作失败。 81 * 82 * @par 依赖 83 * <ul><li>prt_idle.h:该接口声明所在的头文件。</li></ul> 84 * @see PRT_IdleDelHook 85 */ 86 extern U32 PRT_IdleAddHook(IdleHook hook); 87 88 /* 89 * @brief 删除IDLE循环中调用的钩子 90 * 91 * @par 描述 92 * 删除在IDLE任务中调用的钩子函数。 93 * 94 * @attention 95 * <ul> 96 * 无 97 * </ul> 98 * 99 * @param hook [OUT] 类型#IdleHook,IDLE钩子函数,该参数不能为空。 100 * 101 * @par 依赖 102 * <ul><li>prt_idle.h:该接口声明所在的头文件。</li></ul> 103 * @see PRT_IdleAddHook 104 */ 105 extern U32 PRT_IdleDelHook(IdleHook hook); 106 107 #ifdef __cplusplus 108 #if __cplusplus 109 } 110 #endif /* __cpluscplus */ 111 #endif /* __cpluscplus */ 112 113 #endif /* PRT_IDLE_H */