typedef struct os_msg
OS_MSG;
typedef struct os_msg_pool
OS_MSG_POOL;
typedef struct os_msg_q
OS_MSG_Q;
struct os_msg { /* MESSAGE CONTROL BLOCK */
OS_MSG *NextPtr; /* Pointer to next message */
void *MsgPtr; /* Actual message */
OS_MSG_SIZE MsgSize; /* Size of the message (in # bytes) */
CPU_TS MsgTS; /* Time stamp of when message was sent */
};
struct os_msg_pool { /* OS_MSG POOL */
OS_MSG
*NextPtr; /* Pointer to next message */
OS_MSG_QTY NbrFree; /* Number of messages available from this pool */
OS_MSG_QTY NbrUsed; /* Current number of messages used */
OS_MSG_QTY NbrUsedMax; /* Peak number of messages used */
};
struct os_msg_q { /* OS_MSG_Q */
OS_MSG *InPtr; /* Pointer to next OS_MSG to be inserted in the queue */
OS_MSG
*OutPtr; /* Pointer to next OS_MSG to be extracted from the queue */
OS_MSG_QTY NbrEntriesSize; /* Maximum allowable number of entries in the queue */
OS_MSG_QTY NbrEntries; /* Current number of entries in the queue */
OS_MSG_QTY NbrEntriesMax; /* Peak number of entries in the queue */
};
void OS_MsgPoolInit (OS_ERR *p_err):
初始化
OSMsgPool内的OS_MSGs,OS内部函数,OSInit()调用。
OS_MSG_QTY OS_MsgQFreeAll (OS_MSG_Q *p_msg_q):
将p_msg_q中的所有的OS_MSG放回到OSMsgPool中。
void OS_MsgQInit (OS_MSG_Q *p_msg_q,
OS_MSG_QTY size):
初始化p_msg_q->InPtr、OutPtr、
NbrEntriesSize、
NbrEntries、
NbrEntriesMax,OS内部函数。
void *OS_MsgQGet (OS_MSG_Q *p_msg_q,
OS_MSG_SIZE *p_msg_size,
CPU_TS *p_ts,
OS_ERR *p_err):
从p_msg_q中取出OS_MSG,获取里面的信息,放回到OSMsgPool中。
void OS_MsgQPut (OS_MSG_Q *p_msg_q,
void *p_void,
OS_MSG_SIZE msg_size,
OS_OPT opt,
CPU_TS ts,
OS_ERR *p_err):
将一个OS_MSG放入到p_msg_q中。