O-CU-UP
[scp/ocu/5gnr.git] / Include / vos_timer.h
1 /******************************************************************************
2 ###############################################################################
3 #   Copyright (c) [2017-2020] [ICT/CAS]                                        #
4 #   Licensed under the ORAN Software License v1.0 (License)             #
5 ###############################################################################
6 ******************************************************************************/
7
8
9 #ifndef __VOS_TIMER_H__
10 #define __VOS_TIMER_H__
11 #include "vos_types.h"
12
13 #ifdef    __cplusplus
14 extern "C"
15 {
16 #endif /* __cplusplus */
17
18
19 /** VOS Timer 类型枚举值 */
20 typedef enum
21 {
22     VOS_TIMER_LOOP,             ///< 循环执行的timer 
23     VOS_TIMER_NO_LOOP,          ///< 执行一次的timer 
24 }VOS_TIMER_TYPE_EN;
25
26
27 /** 
28  * 创建定时器
29  * @param[in]   ulModuleId         模块ID
30  * @param[in]   msgQId             如果pfTimerFunc非空则无效;如果pfTimerFunc为NULL,则向msgQId队列发送定时器超时消息
31  * @param[in]   lMillSec           定时器的时间,毫秒
32  * @param[in]   pfTimerFunc        超时回调函数
33  * @param[in]   pArg               回调函数参数
34  * @param[in]   enType             定时器类型
35  * @return      返回Timer ID,失败则返回VOS_ERROR
36  */
37 LONG VOS_TimerCreate(ULONG ulModuleId, ULONG msgQId, LONG lMillSec,
38     VOID  (*pfTimerFunc)(VOID *), VOID  *pArg, VOS_TIMER_TYPE_EN enType);
39
40
41 /** 
42 * 改变定时器时间,不能在超时回调函数中调用
43 * @param[in]   ulModuleId         模块ID
44 * @param[in]   ulTimerId          定时器Id
45 * @param[in]   lMillSec           定时器的时间,毫秒
46 * @return      成功返回VOS_OK,失败则返回VOS_ERROR
47 */
48 LONG VOS_TimerChange(ULONG ulModuleId, ULONG ulTimerId, LONG lMillSec);
49
50
51 /** 
52 * 删除定时器
53 * @param[in]   ulModuleId         模块ID
54 * @param[in]   ulTimerId          定时器Id
55 * @return      成功VOS_OK,失败则返回VOS_ERROR
56 */
57 LONG VOS_TimerDelete(ULONG ulModuleId, ULONG ulTimerId);
58
59
60 /** 
61  * 创建微秒定时器,必须绑核
62  * @param[in]   ulModuleId         模块ID
63  * @param[in]   luSec              定时器的时间,微妙
64  * @param[in]   pfTimerFunc        超时回调函数
65  * @param[in]   pArg               回调函数参数
66  * @param[in]   enType             定时器类型
67  * @param[in]   cpuNum             CPU个数
68  * @param[in]   cpus               CPU ID 数组
69  * @return      返回Timer ID,失败则返回VOS_ERROR
70  */
71 LONG VOS_usTimerCreate(ULONG ulModuleId,LONG luSec,VOID  (*pfTimerFunc)(VOID *), VOID  *pArg, VOS_TIMER_TYPE_EN enType,LONG cpuNum,LONG cpus[]);
72
73
74
75 /** 
76  * 创建微秒定时器,必须绑核
77  * @param[in]   ulModuleId         模块ID
78  * @param[in]   ulTimerId          Timer ID
79  * @return      成功VOS_OK,失败则返回VOS_ERROR
80  */
81 LONG VOS_usTimerDestroy(ULONG ulModuleId, ULONG ulTimerId);
82
83
84 #ifdef __cplusplus
85 }
86 #endif /* __cplusplus */
87 #endif /* __VOS_TIMER_H__ */