TX_WAIT_ERROR (0x04) 在非线程调用中指定了TX_NO_WAIT以外的等待选项
UINT tx_queue_front_send( TX_QUEUE *queue_ptr, VOID *source_ptr, ULONG wait_option); 5、获取消息队列信息描述
该服务检索有关指定消息队列的信息
参数(TX_NULL表示不需要获取该参数代表的信息)
queue_ptr 指向先前创建的消息队列的指针
name 指向目标的指针,用于指向队列名称
enqueued 指向目标的指针,表示当前队列中的消息数
available_storage 指向目标的指针,表示队列当前有空间容纳的消息数
first_suspended 指向目标的指针,该指针指向该队列的挂起列表中第一个线程
suspended_count 指向目标的指针,用于指示当前在此队列上挂起的线程数
next_queue 指向下一个创建队列的指针的目标的指针
返回值
TX_SUCCESS (0x00) 操作成功
TX_QUEUE_ERROR (0x09) 无效的消息队列指针
UINT tx_queue_info_get( TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue); 6、从队列获取消息描述
该服务从指定的消息队列中检索消息。 检索到的消息从队列复制到目标指针指定的存储区域。 然后将该消息从队列中删除
指定的目标存储区必须足够大以容纳消息。 也就是说,由destination_ptr 指向的消息目标必须至少与此队列的消息大小一样大。 否则,如果目标不够大,则会在存储区域中发生内存地址非法错误
参数
queue_ptr 指向先前创建的消息队列的指针
destination_ptr 指向储存消息的地址
wait_option 定义消息队列为空时服务的行为
TX_NO_WAIT (0x00000000) - 无论是否成功都立即返回(用于非线程调用,例如中断里面)
TX_WAIT_FOREVER (0xFFFFFFFF) - 一直等待直到有消息可以获取
0x00000001 ~ 0xFFFFFFFE- 指定具体等待心跳节拍数(如果心跳频率1KHZ,那么单位就是ms )
返回值
TX_SUCCESS (0x00) 操作成功
TX_DELETED (0x01) 线程挂起时删除了消息队列
TX_QUEUE_EMPTY (0x0A) 服务无法检索消息,因为队列在指定的等待时间段内为空
TX_WAIT_ABORTED (0x1A) 被另一个线程、计时器或ISR中断给中止
TX_QUEUE_ERROR (0x09) 无效的消息队列指针
TX_PTR_ERROR (0x03) 消息的目标指针无效
TX_WAIT_ERROR (0x04) 在非线程调用中指定了TX_NO_WAIT以外的等待选项
UINT tx_queue_receive( TX_QUEUE *queue_ptr, VOID *destination_ptr, ULONG wait_option); 7、向队列发送消息描述
此服务将消息发送到指定的消息队列。发送的消息将从源指针指定的内存区域复制到队列中。
参数
queue_ptr 指向先前创建的消息队列的指针
source_ptr 指向消息的指针
wait_option 定义消息队列已满时服务的行为
TX_NO_WAIT (0x00000000) - 无论是否成功都立即返回(用于非线程调用,例如中断里面)
TX_WAIT_FOREVER (0xFFFFFFFF) - 一直等待直到队列有空位可以放置消息
0x00000001 ~ 0xFFFFFFFE - 指定具体等待心跳节拍数(如果心跳频率1KHZ,那么单位就是ms )
返回值
TX_SUCCESS (0x00) 操作成功
TX_DELETED (0x01) 线程挂起时删除了消息队列
TX_QUEUE_FULL (0x0B) 服务无法发送消息,因为队列在指定的等待时间内已满
TX_WAIT_ABORTED (0x1A) 被另一个线程、计时器或ISR中断给中止
TX_QUEUE_ERROR (0x09) 无效的消息队列指针
TX_PTR_ERROR (0x03) 消息的目标指针无效