这个是关于消息建立的问题。
时间:10-02
整理:3721RD
点击:
看源码知道首先建立了这样一个消息结构体
typedef struct
{
void *next;
uint16 len;
uint8 dest_id;
} osal_msg_hdr_t;消息结构体这个消息结构体相当于这个消息的一些属性,比如目的任务,消息长度,next是指向下一个消息,因为消息列表是通过链表管理的;这样的理解对吗?
若任务要创建一个消息则由osal_msg_allocate(len);创建,但是这个函数有我的第一个问题hdr = (osal_msg_hdr_t *) osal_mem_alloc( (short)(len + sizeof( osal_msg_hdr_t )) );这里的长度为什么要加长度len呢?
第二个问题是
#define OSAL_MSG_ID(msg_ptr) ((osal_msg_hdr_t *) (msg_ptr) - 1)->dest_id 获得msg_ptr指针减1结构体的目标任务id,我就不懂了为什么要减一呢?你要获得msg_ptr的目标任务id直接((osal_msg_hdr_t*)(msg_ptr)->dest_id)就可以的。
这些是我看消息api那块遇到的问题。
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/p/79726/245334.aspx#245334
