133 #ifndef ti_ipc_MessageQ__include
134 #define ti_ipc_MessageQ__include
138 #if defined (__cplusplus)
150 #define MessageQ_S_BUSY (2)
155 #define MessageQ_S_ALREADYSETUP (1)
160 #define MessageQ_S_SUCCESS (0)
165 #define MessageQ_E_FAIL (-1)
170 #define MessageQ_E_INVALIDARG (-2)
175 #define MessageQ_E_MEMORY (-3)
180 #define MessageQ_E_ALREADYEXISTS (-4)
185 #define MessageQ_E_NOTFOUND (-5)
190 #define MessageQ_E_TIMEOUT (-6)
195 #define MessageQ_E_INVALIDSTATE (-7)
200 #define MessageQ_E_OSFAILURE (-8)
205 #define MessageQ_E_RESOURCE (-9)
210 #define MessageQ_E_RESTART (-10)
215 #define MessageQ_E_INVALIDMSG (-11)
220 #define MessageQ_E_NOTOWNER (-12)
225 #define MessageQ_E_REMOTEACTIVE (-13)
230 #define MessageQ_E_INVALIDHEAPID (-14)
235 #define MessageQ_E_INVALIDPROCID (-15)
240 #define MessageQ_E_MAXREACHED (-16)
245 #define MessageQ_E_UNREGISTEREDHEAPID (-17)
250 #define MessageQ_E_CANNOTFREESTATICMSG (-18)
255 #define MessageQ_E_UNBLOCKED (-19)
260 #define MessageQ_E_SHUTDOWN (-20)
270 #define MessageQ_FOREVER (~(0))
275 #define MessageQ_INVALIDMSGID (0xffff)
280 #define MessageQ_INVALIDMESSAGEQ (0xffff)
285 #define MessageQ_PRIORITYMASK (0x3)
297 #define MessageQ_PORTOFFSET (0x80)
324 #define MessageQ_getDstQueue(msg) \
325 (((MessageQ_Msg)(msg))->dstId == \
326 (MessageQ_QueueIndex)MessageQ_INVALIDMESSAGEQ) ? \
327 (MessageQ_QueueId)MessageQ_INVALIDMESSAGEQ : \
328 (((MessageQ_QueueId)((MessageQ_Msg)(msg))->dstProc << 16u) \
329 | (((MessageQ_Msg)(msg))->dstId))
346 #define MessageQ_getMsgId(msg) (((MessageQ_Msg) (msg))->msgId)
356 #define MessageQ_getMsgSize(msg) (((MessageQ_Msg) (msg))->msgSize)
365 #define MessageQ_getMsgPri(msg) \
366 ((((MessageQ_Msg) (msg))->flags & MessageQ_PRIORITYMASK))
378 #define MessageQ_getProcId(queueId) \
379 ((UInt16)((queueId) >> 16))
410 #define MessageQ_getQueueIndex(queueId) \
411 (((MessageQ_QueueIndex)((MessageQ_QueueId)0xFFFF & (queueId))) \
412 - MessageQ_PORTOFFSET)
431 #define MessageQ_getReplyQueue(msg) \
432 (MessageQ_QueueId)((((MessageQ_Msg) (msg))->replyProc << 16u) \
433 | ((MessageQ_Msg)(msg))->replyId)
443 #define MessageQ_getTransportId(msg) \
444 ((((MessageQ_Msg)(msg))->flags & (0x7 << 2)) >> 2)
458 #define MessageQ_setMsgId(msg, id) ((MessageQ_Msg) (msg))->msgId = (id)
466 #define MessageQ_setMsgPri(msg, priority) \
467 ((MessageQ_Msg)(msg))->flags = \
468 (((MessageQ_Msg)(msg))->flags & ~(MessageQ_PRIORITYMASK)) \
469 | ((priority) & MessageQ_PRIORITYMASK)
484 #define MessageQ_setTransportId(msg, tid) \
485 ((MessageQ_Msg)(msg))->flags = \
486 ((((MessageQ_Msg)(msg))->flags & ~(0x7 << 2)) | ((tid) << 2))
552 #define MessageQ_Params_VERSION_2 2
559 #define MessageQ_Params_VERSION MessageQ_Params_VERSION_2
638 #define MessageQ_ANY (Bits16)~(0)
661 #include <ti/ipc/interfaces/ITransport.h>
662 #include <ti/ipc/interfaces/IMessageQTransport.h>
664 #include <ti/sdo/ipc/interfaces/ITransport.h>
665 #include <ti/sdo/ipc/interfaces/IMessageQTransport.h>
669 UInt16 rprocId, UInt priority);
680 MessageQ_Handle MessageQ_getLocalHandle(MessageQ_QueueId queueId);
695 #ifndef MessageQ_internal
698 if (params != NULL) {
699 MessageQ_Params_init__S(params, MessageQ_Params_VERSION);
1066 Int
MessageQ_get(MessageQ_Handle handle, MessageQ_Msg *msg, UInt timeout);
1096 Int
MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg);
1205 #if defined (__cplusplus)
Int MessageQ_free(MessageQ_Msg msg)
Frees a message back to the heap.
Int MessageQ_get(MessageQ_Handle handle, MessageQ_Msg *msg, UInt timeout)
Gets a message from the message queue.
Void MessageQ_setFreeHookFxn(MessageQ_FreeHookFxn freeHookFxn)
Sets MessageQ's free hook function.
MessageQ_Priority
Message priority.
Definition: MessageQ.h:625
Structure defining parameters for MessageQ_create().
Definition: MessageQ.h:511
Int MessageQ_delete(MessageQ_Handle *handlePtr)
Delete a created MessageQ instance.
MessageQ_Handle MessageQ_create2(String name, const MessageQ_Params2 *params)
Create a MessageQ instance using the type MessageQ_Params2.
Int MessageQ_open(String name, MessageQ_QueueId *queueId)
Open a message queue.
Void MessageQ_unregisterTransport(UInt16 rprocId, UInt priority)
Definition: MessageQ.h:629
Int MessageQ_registerHeap(Ptr heap, UInt16 heapId)
Register a heap with MessageQ.
Definition: MessageQ.h:627
Void * synchronizer
Definition: MessageQ.h:519
Void(* MessageQ_PutHookFxn)(MessageQ_QueueId queueId, MessageQ_Msg msg)
Put hook function definition.
Definition: MessageQ.h:658
UInt32 MessageQ_getQueueId(MessageQ_Handle handle)
Returns the QueueId associated with the handle.
UInt16 MessageQ_QueueIndex
Local queue index.
Definition: MessageQ.h:501
Void(* MessageQ_FreeHookFxn)(Bits16 heapId, Bits16 msgId)
Free hook prototype.
Definition: MessageQ.h:646
MessageQ_MsgHeader * MessageQ_Msg
Typedef for ease of use.
Definition: MessageQ.h:620
Definition: MessageQ.h:626
Bool MessageQ_registerTransportId(UInt tid, ITransport_Handle inst)
Register a transport instance for the given ID.
struct MessageQ_Object * MessageQ_Handle
MessageQ_Handle type.
Definition: MessageQ.h:506
MessageQ_Msg MessageQ_alloc(UInt16 heapId, UInt32 size)
Allocates a message from the heap.
Int MessageQ_count(MessageQ_Handle handle)
Returns the number of messages in a message queue.
Void * synchronizer
Definition: MessageQ.h:572
Void MessageQ_setPutHookFxn(MessageQ_PutHookFxn putHookFxn)
Set the function hook for the MessageQ_put() method.
Void MessageQ_Params2_init(MessageQ_Params2 *params)
Initialize MessageQ_Params2.
Void MessageQ_unblock(MessageQ_Handle handle)
Unblocks a MessageQ.
UInt32 MessageQ_QueueId
A 32-bit value that uniquely identifies a message queue.
Definition: MessageQ.h:496
Int MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg)
Place a message onto a message queue.
MessageQ_QueueIndex queueIndex
Definition: MessageQ.h:581
Void MessageQ_shutdown(MessageQ_Handle handle)
Shuts down a MessageQ.
Structure defining parameters for MessageQ_create2().
Definition: MessageQ.h:571
Void MessageQ_unregisterTransportId(UInt tid)
Unregister the transport instance for the given ID.
Int MessageQ_unregisterHeap(UInt16 heapId)
Unregister a heap with MessageQ.
MessageQ_QueueIndex queueIndex
Definition: MessageQ.h:528
Definition: MessageQ.h:628
Int MessageQ_close(MessageQ_QueueId *queueId)
Close the opened handle.
MessageQ_QueueId MessageQ_openQueueId(UInt16 queueIndex, UInt16 procId)
Open a MessageQ given the queue index and processor ID.
Void MessageQ_setReplyQueue(MessageQ_Handle handle, MessageQ_Msg msg)
Embeds a source message queue into a message.
MessageQ_Handle MessageQ_create(String name, const MessageQ_Params *params)
Create a MessageQ instance.
Void MessageQ_staticMsgInit(MessageQ_Msg msg, UInt32 size)
Initializes a message not obtained from MessageQ_alloc()
Bool MessageQ_registerTransport(IMessageQTransport_Handle handle, UInt16 rprocId, UInt priority)
Void MessageQ_setMsgTrace(MessageQ_Msg msg, Bool traceFlag)
Sets the message tracing flag on a given message.