Message Queues
6-18
Wherever possible, the MSGQ APIs have been written to have a
deterministic execution time. This allows application designers to be certain
that messaging will not consume an unknown number of cycles.
In addition, the MSGQ functions support use of message queues from all
types of DSP/BIOS threads: HWIs, SWIs, and TSKs. That is, calls that may
be synchronous (blocking) have an asynchronous (non-blocking) alternative.
6.5.2 Static Configuration
In order to use the MSGQ module and the allocators it depends upon, you
must statically configure the following:
❏ MSGQ_config variable in application code (see below)
❏ ENABLEMSGQ property of the MSGQ module in the .tcf file
❏ PROCID property of the GBL module in the .tcf file
❏ ENABLEPOOL property of the POOL module in the .tcf file
❏ POOL_config variable in application code
See the DSP/BIOS Application Programming Interface Guide for your
platform for information about setting the properties mentioned in this list.
An application must provide a filled in MSGQ_config variable in order to use
the MSGQ module.
MSGQ_Config MSGQ_config;
The MSGQ_Config type has the following structure:
typedef struct MSGQ_Config {
MSGQ_Obj *msgqQueues; /* Array of message queue handles */
MSGQ_TransportObj *transports; /* Array of transports */
Uint16 numMsgqQueues; /* Number of message queue handles*/
Uint16 numProcessors; /* Number of processors */
Uint16 startUninitialized; /* First msgq to init */
MSGQ_Queue errorQueue; /* Receives async transport errors*/
Uint16 errorPoolId; /* Alloc error msgs from poolId */
} MSGQ_Config;
The fields in the MSGQ_Config structure are described in the following table:
Field Type Description
msgqQueues MSGQ_Obj * Array of message queue objects. The fields of each object do
not need to be initialized.