Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00136 #ifndef ti_ipc_MessageQ__include
00137 #define ti_ipc_MessageQ__include
00138
00139 #include <ti/ipc/MultiProc.h>
00140
00141 #if defined (__cplusplus)
00142 extern "C" {
00143 #endif
00144
00145
00146
00147
00148
00149
00154 #define MessageQ_S_BUSY 2
00155
00160 #define MessageQ_S_ALREADYSETUP 1
00161
00166 #define MessageQ_S_SUCCESS 0
00167
00172 #define MessageQ_E_FAIL -1
00173
00178 #define MessageQ_E_INVALIDARG -2
00179
00184 #define MessageQ_E_MEMORY -3
00185
00190 #define MessageQ_E_ALREADYEXISTS -4
00191
00196 #define MessageQ_E_NOTFOUND -5
00197
00202 #define MessageQ_E_TIMEOUT -6
00203
00208 #define MessageQ_E_INVALIDSTATE -7
00209
00214 #define MessageQ_E_OSFAILURE -8
00215
00220 #define MessageQ_E_RESOURCE -9
00221
00226 #define MessageQ_E_RESTART -10
00227
00232 #define MessageQ_E_INVALIDMSG -11
00233
00238 #define MessageQ_E_NOTOWNER -12
00239
00244 #define MessageQ_E_REMOTEACTIVE -13
00245
00250 #define MessageQ_E_INVALIDHEAPID -14
00251
00256 #define MessageQ_E_INVALIDPROCID -15
00257
00262 #define MessageQ_E_MAXREACHED -16
00263
00268 #define MessageQ_E_UNREGISTEREDHEAPID -17
00269
00274 #define MessageQ_E_CANNOTFREESTATICMSG -18
00275
00280 #define MessageQ_E_UNBLOCKED -19
00281
00282
00283
00284
00285
00286
00290 #define MessageQ_FOREVER ~(0)
00291
00295 #define MessageQ_INVALIDMSGID 0xffff
00296
00300 #define MessageQ_INVALIDMESSAGEQ 0xffff
00301
00305 #define MessageQ_PRIORITYMASK 0x3
00306
00317 #define MessageQ_getDstQueue(msg) \
00318 ((msg)->dstId == (MessageQ_QueueIndex)MessageQ_INVALIDMESSAGEQ) ? \
00319 (MessageQ_QueueId)MessageQ_INVALIDMESSAGEQ : \
00320 (MessageQ_QueueId)(((MessageQ_QueueId)MultiProc_self() << 16u) \
00321 | (((MessageQ_Msg)(msg))->dstId))
00322
00323
00338 #define MessageQ_getMsgId(msg) (((MessageQ_Msg) (msg))->msgId)
00339
00348 #define MessageQ_getMsgSize(msg) (((MessageQ_Msg) (msg))->msgSize)
00349
00357 #define MessageQ_getMsgPri(msg) \
00358 ((((MessageQ_Msg) (msg))->flags & MessageQ_PRIORITYMASK))
00359
00370 #define MessageQ_getProcId(queueId) \
00371 ((UInt16)((queueId) >> 16))
00372
00390 #define MessageQ_getReplyQueue(msg) \
00391 (MessageQ_QueueId)((((MessageQ_Msg) (msg))->replyProc << 16u) \
00392 | ((MessageQ_Msg)(msg))->replyId)
00393
00406 #define MessageQ_setMsgId(msg, id) ((MessageQ_Msg) (msg))->msgId = (id)
00407
00414 #define MessageQ_setMsgPri(msg, priority) \
00415 (((MessageQ_Msg) (msg))->flags = ((priority) & MessageQ_PRIORITYMASK))
00416
00417
00418
00419
00420
00421
00425 typedef UInt32 MessageQ_QueueId;
00426
00430 typedef UInt16 MessageQ_QueueIndex;
00431
00435 typedef struct MessageQ_Object *MessageQ_Handle;
00436
00440 typedef struct {
00441 Void *synchronizer;
00450 } MessageQ_Params;
00451
00455 typedef struct {
00456 Bits32 reserved0;
00457 Bits32 reserved1;
00458 Bits32 msgSize;
00459 Bits16 flags;
00460 Bits16 msgId;
00461 Bits16 dstId;
00462 Bits16 dstProc;
00463 Bits16 replyId;
00464 Bits16 replyProc;
00465 Bits16 srcProc;
00466 Bits16 heapId;
00467 Bits16 seqNum;
00468 Bits16 reserved;
00469 } MessageQ_MsgHeader;
00470
00474 typedef MessageQ_MsgHeader *MessageQ_Msg;
00475
00479 typedef enum {
00480 MessageQ_NORMALPRI = 0,
00481 MessageQ_HIGHPRI = 1,
00482 MessageQ_RESERVEDPRI = 2,
00483 MessageQ_URGENTPRI = 3
00484 } MessageQ_Priority;
00485
00486
00487
00488
00489
00490
00491
00497 Void MessageQ_Params_init(MessageQ_Params *params);
00498
00515 MessageQ_Handle MessageQ_create(String name, const MessageQ_Params *params);
00516
00530 Int MessageQ_delete(MessageQ_Handle *handlePtr);
00531
00549 Int MessageQ_open(String name, MessageQ_QueueId *queueId);
00550
00562 Int MessageQ_close(MessageQ_QueueId *queueId);
00563
00583 MessageQ_Msg MessageQ_alloc(UInt16 heapId, UInt32 size);
00584
00596 Int MessageQ_free(MessageQ_Msg msg);
00597
00625 Int MessageQ_registerHeap(Ptr heap, UInt16 heapId);
00626
00640 Int MessageQ_unregisterHeap(UInt16 heapId);
00641
00652 Void MessageQ_setMsgTrace(MessageQ_Msg msg, Bool traceFlag);
00653
00676 Void MessageQ_staticMsgInit(MessageQ_Msg msg, UInt32 size);
00677
00678
00679
00680
00681
00682
00711 Int MessageQ_get(MessageQ_Handle handle, MessageQ_Msg *msg, UInt timeout);
00712
00741 Int MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg);
00742
00752 Int MessageQ_count(MessageQ_Handle handle);
00753
00766 UInt32 MessageQ_getQueueId(MessageQ_Handle handle);
00767
00785 Void MessageQ_setReplyQueue(MessageQ_Handle handle, MessageQ_Msg msg);
00786
00813 Void MessageQ_unblock(MessageQ_Handle handle);
00814
00815 #if defined (__cplusplus)
00816 }
00817 #endif
00818 #endif
00819
00820
00821
00822
00823
00824
00825
00826
00827