|
关于操作系统邮箱的相关概念在手册中以提到,在这里详细介绍一下如何创建消息包!
邮箱功能的消息内容放置在发送方和接收方的内存中,因此,实际发送和接收的只有位于这片内存的消息起始地址。消息的内容本身并不复制。uT/Kernel通过一个链表来管理消息队列中的消息。应用程序必须在消息发送开始时uT/Kernel使用的链表分配空间。这片空间被称为消息头。消息头和消息体一起称为一个消息包。当一个系统调用发送一条信息到邮箱中时,消息包的起始地址在参数中传递。当一个系统调用从邮箱中接收到一条消息时,消息包的起始地址在返回参数中传递。
消息(包括消息头在内,不含消息优先级)的数据包的结构如下:
typedef struct t_msg {
VP msgque[1];
} T_MSG;
实际的消息必须放置在消息头之后的区域中。不限制消息的大小,消息的长度可变。
自定义的消息包的结构如下:
typedef struct u_msg {
VP msgque[1]; /* Area for message queue,as same as T_MSG */
UB *usrmsg; /* Area for message pointer */
} U_MSG;
1、如何使用邮箱的发送API:
U_MSG sndmsg;
tk_snd_mbx(mbxid,(T_MSG*)&sndmsg);
2、如何使用邮箱的发送API:
U_MSG *pk_rcvmsg;
tk_rcv_mbx(mbxid,(T_MSG*)&pk_rcvmsg,-1);
|
|