AvrX-MessageQueues
Aus LaborWiki
Related functions:
void AvrXSendMessage(pMessageQueue, pMessageControlBlock); void AvrXIntSendMessage(pMessageQueue, pMessageControlBlock); pMessageControlBlock AvrXWaitMessage(pMessageQueue);
[Bearbeiten] Description
Use MessageQueues to send arbitrary length messages between threads. Analog to FIFO. The Linked-List next pointer are part of the MessageControlBlock, so there are no additional dynamic memory requirements.
Its your job to allocate and free requered memory.
[Bearbeiten] Example
typedef struct {
MessageControlBlock mcb; // mandatory first member
char payload // actual payload
} QueueMsg;
[..]
void sender()
{
QueueMsqA *msg = malloc( sizeof(QueueMsgA) );
msg->payload = 0;
AvrXSendMessage( &msgQueue, (MessageControlBlock *)msg );
[..]
}
void reciever()
{
QueueMsg *msg;
msg = (QueueMsg *)AvrXWaitMessage( &msgQueue );
[..]
free(msg);
}