• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 */