1 /******************************************************************************
2 ###############################################################################
3 # Copyright (c) [2017-2020] [ICT/CAS] #
4 # Licensed under the ORAN Software License v1.0 (License) #
5 ###############################################################################
6 ******************************************************************************/
15 #endif /* __cplusplus */
21 #define VOS_QUEUE_MSG_SIZE 4
24 #define VOS_HAVE_MSG (VOS_QUEUE_MSG_SIZE * sizeof(ULONG))
26 /** 队列类型,linux中只支持 VOS_MSG_Q_FIFO 和 VOS_MSG_Q_PRIORITY 类型 */
28 VOS_MSG_Q_FIFO = 0, ///< first in first out queue
29 VOS_MSG_Q_PRIORITY = 1, ///< priority sorted queue
30 VOS_MSG_Q_PIPE = 2, ///< pipe queue
31 VOS_MSG_Q_ISOCK = 3, ///< ISOCK queue
36 MSG_PRI_NORMAL = 0, ///< 普通优先级
37 MSG_PRI_URGENT = 1, ///< 高优先级
43 * @param[in] lMaxMsgs 消息队列中最大消息数目
44 * @param[in] lOptions 选项,VOS_msgq_type_t 类型,linux中支持MSG_Q_FIFO和MSG_Q_PRIORITY
45 * @return 成功返回队列ID,失败则返回 0
47 ULONG VOS_QueCreate(LONG lMaxMsgs, LONG lOptions);
52 * @param[in] msgQId 消息队列ID
53 * @return 成功返回队列ID,失败则返回 0
55 LONG VOS_QueDelete(ULONG msgQId);
60 * @param[in] msgQId 消息队列ID
61 * @param[in] aulMsg 发送的消息,含有VOS_QUEUE_MSG_SIZE个ULONG的数组
62 * @param[in] lMsec 当队列满时,发送任务等待的时间,单位是毫秒。
63 * VOS_WAIT_FOREVER 表示永久等待。VOS_WAIT_NO_WAIT 表示不等待。
64 * @param[in] lPriority 消息的优先级。分为MSG_PRI_NORMAL和MSG_PRI_URGENT两种。
65 * @return VOS_OK - 成功,其他 - 失败
66 * @note WINDOWS中存在Bug,队列满了后,不能等待,只能返回失败
68 LONG VOS_QueSend(ULONG msgQId, ULONG aulMsg[VOS_QUEUE_MSG_SIZE], LONG lMsec, LONG lPriority);
73 * @param[in] msgQId 消息队列ID
74 * @param[in] aulMsg 接收的消息,含有VOS_QUEUE_MSG_SIZE个ULONG的数组
75 * @param[in] lMsec 当队列满时,发送任务等待的时间,单位是毫秒。
76 * VOS_WAIT_FOREVER 表示永久等待。VOS_WAIT_NO_WAIT 表示不等待。
77 * @return 失败为VOS_ERROR;成功时如果消息队列中消息数为0 则返回VOS_NO_MSG,
78 * 如果消息队列中消息数不为0 ,则返回VOS_HAVE_MSG。
79 * @note 一般任务的入口函数就阻塞在VOS_QueReceive。
81 LONG VOS_QueReceive(ULONG msgQId, ULONG aulMsg[VOS_QUEUE_MSG_SIZE], LONG lMsec);
85 * 将队列和任务绑定,用于队列管理,一般创建完队列和任务后调用
86 * @param[in] hTask 任务句柄
87 * @param[in] ulQId 消息队列ID
89 VOID VOS_QueBindTask(VOS_HANDLE hTask, ULONG ulQId);
94 * @param[in] msgQId 消息队列ID
95 * @return 成功则返回消息队列中消息的数目,失败则VOS_ERROR。
97 LONG VOS_QueNum(ULONG msgQId);
107 #endif /* __cplusplus */
109 #endif /* __VOS_QUE_H__ */