?? ixqmgr.h
字號:
*/#define ixQMgrDispatcherLoopRun ixQMgrDispatcherLoopRunA0/** * * @ingroup IxQMgrAPI * * @def IX_QMGR_QUEUE * * @brief Definition of AQM queue numbers * */#define IX_QMGR_QUEUE_0 (0) /**< Queue Number 0 */#define IX_QMGR_QUEUE_1 (1) /**< Queue Number 1 */#define IX_QMGR_QUEUE_2 (2) /**< Queue Number 2 */#define IX_QMGR_QUEUE_3 (3) /**< Queue Number 3 */#define IX_QMGR_QUEUE_4 (4) /**< Queue Number 4 */#define IX_QMGR_QUEUE_5 (5) /**< Queue Number 5 */#define IX_QMGR_QUEUE_6 (6) /**< Queue Number 6 */#define IX_QMGR_QUEUE_7 (7) /**< Queue Number 7 */#define IX_QMGR_QUEUE_8 (8) /**< Queue Number 8 */#define IX_QMGR_QUEUE_9 (9) /**< Queue Number 9 */#define IX_QMGR_QUEUE_10 (10) /**< Queue Number 10 */#define IX_QMGR_QUEUE_11 (11) /**< Queue Number 11 */#define IX_QMGR_QUEUE_12 (12) /**< Queue Number 12 */#define IX_QMGR_QUEUE_13 (13) /**< Queue Number 13 */#define IX_QMGR_QUEUE_14 (14) /**< Queue Number 14 */#define IX_QMGR_QUEUE_15 (15) /**< Queue Number 15 */#define IX_QMGR_QUEUE_16 (16) /**< Queue Number 16 */#define IX_QMGR_QUEUE_17 (17) /**< Queue Number 17 */#define IX_QMGR_QUEUE_18 (18) /**< Queue Number 18 */#define IX_QMGR_QUEUE_19 (19) /**< Queue Number 19 */#define IX_QMGR_QUEUE_20 (20) /**< Queue Number 20 */#define IX_QMGR_QUEUE_21 (21) /**< Queue Number 21 */#define IX_QMGR_QUEUE_22 (22) /**< Queue Number 22 */#define IX_QMGR_QUEUE_23 (23) /**< Queue Number 23 */#define IX_QMGR_QUEUE_24 (24) /**< Queue Number 24 */#define IX_QMGR_QUEUE_25 (25) /**< Queue Number 25 */#define IX_QMGR_QUEUE_26 (26) /**< Queue Number 26 */#define IX_QMGR_QUEUE_27 (27) /**< Queue Number 27 */#define IX_QMGR_QUEUE_28 (28) /**< Queue Number 28 */#define IX_QMGR_QUEUE_29 (29) /**< Queue Number 29 */#define IX_QMGR_QUEUE_30 (30) /**< Queue Number 30 */#define IX_QMGR_QUEUE_31 (31) /**< Queue Number 31 */#define IX_QMGR_QUEUE_32 (32) /**< Queue Number 32 */#define IX_QMGR_QUEUE_33 (33) /**< Queue Number 33 */#define IX_QMGR_QUEUE_34 (34) /**< Queue Number 34 */#define IX_QMGR_QUEUE_35 (35) /**< Queue Number 35 */#define IX_QMGR_QUEUE_36 (36) /**< Queue Number 36 */#define IX_QMGR_QUEUE_37 (37) /**< Queue Number 37 */#define IX_QMGR_QUEUE_38 (38) /**< Queue Number 38 */#define IX_QMGR_QUEUE_39 (39) /**< Queue Number 39 */#define IX_QMGR_QUEUE_40 (40) /**< Queue Number 40 */#define IX_QMGR_QUEUE_41 (41) /**< Queue Number 41 */#define IX_QMGR_QUEUE_42 (42) /**< Queue Number 42 */#define IX_QMGR_QUEUE_43 (43) /**< Queue Number 43 */#define IX_QMGR_QUEUE_44 (44) /**< Queue Number 44 */#define IX_QMGR_QUEUE_45 (45) /**< Queue Number 45 */#define IX_QMGR_QUEUE_46 (46) /**< Queue Number 46 */#define IX_QMGR_QUEUE_47 (47) /**< Queue Number 47 */#define IX_QMGR_QUEUE_48 (48) /**< Queue Number 48 */#define IX_QMGR_QUEUE_49 (49) /**< Queue Number 49 */#define IX_QMGR_QUEUE_50 (50) /**< Queue Number 50 */#define IX_QMGR_QUEUE_51 (51) /**< Queue Number 51 */#define IX_QMGR_QUEUE_52 (52) /**< Queue Number 52 */#define IX_QMGR_QUEUE_53 (53) /**< Queue Number 53 */#define IX_QMGR_QUEUE_54 (54) /**< Queue Number 54 */#define IX_QMGR_QUEUE_55 (55) /**< Queue Number 55 */#define IX_QMGR_QUEUE_56 (56) /**< Queue Number 56 */#define IX_QMGR_QUEUE_57 (57) /**< Queue Number 57 */#define IX_QMGR_QUEUE_58 (58) /**< Queue Number 58 */#define IX_QMGR_QUEUE_59 (59) /**< Queue Number 59 */#define IX_QMGR_QUEUE_60 (60) /**< Queue Number 60 */#define IX_QMGR_QUEUE_61 (61) /**< Queue Number 61 */#define IX_QMGR_QUEUE_62 (62) /**< Queue Number 62 */#define IX_QMGR_QUEUE_63 (63) /**< Queue Number 63 */#define IX_QMGR_QUEUE_INVALID (64) /**< AQM Queue Number Delimiter *//* * Typedefs *//** * @typedef IxQMgrQId * * @ingroup IxQMgrAPI * * @brief Used in the API to identify the AQM queues. * */typedef int IxQMgrQId;/** * @typedef IxQMgrQStatus * * @ingroup IxQMgrAPI * * @brief Queue status. * * A queues status is defined by its relative fullness or relative emptiness. * Each of the queues 0-31 have Nearly Empty, Nearly Full, Empty, Full, * Underflow and Overflow status flags. Queues 32-63 have just Nearly Empty and * Full status flags. * The flags bit positions are outlined below: * * OF - bit-5<br> * UF - bit-4<br> * F - bit-3<br> * NF - bit-2<br> * NE - bit-1<br> * E - bit-0<br> * */typedef UINT32 IxQMgrQStatus;/** * @enum IxQMgrQStatusMask * * @ingroup IxQMgrAPI * * @brief Queue status mask. * * Masks for extracting the individual status flags from the IxQMgrStatus * word. * */typedef enum{ IX_QMGR_Q_STATUS_E_BIT_MASK = 0x1, IX_QMGR_Q_STATUS_NE_BIT_MASK = 0x2, IX_QMGR_Q_STATUS_NF_BIT_MASK = 0x4, IX_QMGR_Q_STATUS_F_BIT_MASK = 0x8, IX_QMGR_Q_STATUS_UF_BIT_MASK = 0x10, IX_QMGR_Q_STATUS_OF_BIT_MASK = 0x20} IxQMgrQStatusMask;/** * @enum IxQMgrSourceId * * @ingroup IxQMgrAPI * * @brief Queue interrupt source select. * * This enum defines the different source conditions on a queue that result in * an interupt being fired by the AQM. Interrupt source is configurable for * queues 0-31 only. The interrupt source for queues 32-63 is hardwired to the * NE(Nearly Empty) status flag. * */typedef enum{ IX_QMGR_Q_SOURCE_ID_E = 0, /**< Queue Empty due to last read */ IX_QMGR_Q_SOURCE_ID_NE, /**< Queue Nearly Empty due to last read */ IX_QMGR_Q_SOURCE_ID_NF, /**< Queue Nearly Full due to last write */ IX_QMGR_Q_SOURCE_ID_F, /**< Queue Full due to last write */ IX_QMGR_Q_SOURCE_ID_NOT_E, /**< Queue Not Empty due to last write */ IX_QMGR_Q_SOURCE_ID_NOT_NE, /**< Queue Not Nearly Empty due to last write */ IX_QMGR_Q_SOURCE_ID_NOT_NF, /**< Queue Not Nearly Full due to last read */ IX_QMGR_Q_SOURCE_ID_NOT_F /**< Queue Not Full due to last read */} IxQMgrSourceId;/** * @enum IxQMgrQEntrySizeInWords * * @ingroup IxQMgrAPI * * @brief QMgr queue entry sizes. * * The entry size of a queue specifies the size of a queues entry in words. * */typedef enum{ IX_QMGR_Q_ENTRY_SIZE1 = 1, /**< 1 word entry */ IX_QMGR_Q_ENTRY_SIZE2 = 2, /**< 2 word entry */ IX_QMGR_Q_ENTRY_SIZE4 = 4 /**< 4 word entry */} IxQMgrQEntrySizeInWords;/** * @enum IxQMgrQSizeInWords * * @ingroup IxQMgrAPI * * @brief QMgr queue sizes. * * These values define the allowed queue sizes for AQM queue. The sizes are * specified in words. * */typedef enum{ IX_QMGR_Q_SIZE16 = 16, /**< 16 word buffer */ IX_QMGR_Q_SIZE32 = 32, /**< 32 word buffer */ IX_QMGR_Q_SIZE64 = 64, /**< 64 word buffer */ IX_QMGR_Q_SIZE128 = 128, /**< 128 word buffer */ IX_QMGR_Q_SIZE_INVALID = 129 /**< Insure that this is greater than largest * queue size supported by the hardware */} IxQMgrQSizeInWords;/** * @enum IxQMgrWMLevel * * @ingroup IxQMgrAPI * * @brief QMgr watermark levels. * * These values define the valid watermark levels(in ENTRIES) for queues. Each * queue 0-63 have configurable Nearly full and Nearly empty watermarks. For * queues 32-63 the Nearly full watermark has NO EFFECT. * If the Nearly full watermark is set to IX_QMGR_Q_WM_LEVEL16 this means that * the nearly full flag will be set by the hardware when there are >= 16 empty * entries in the specified queue. * If the Nearly empty watermark is set to IX_QMGR_Q_WM_LEVEL16 this means that * the Nearly empty flag will be set by the hardware when there are <= 16 full * entries in the specified queue. */typedef enum{ IX_QMGR_Q_WM_LEVEL0 = 0, /**< 0 entry watermark */ IX_QMGR_Q_WM_LEVEL1 = 1, /**< 1 entry watermark */ IX_QMGR_Q_WM_LEVEL2 = 2, /**< 2 entry watermark */ IX_QMGR_Q_WM_LEVEL4 = 4, /**< 4 entry watermark */ IX_QMGR_Q_WM_LEVEL8 = 8, /**< 8 entry watermark */ IX_QMGR_Q_WM_LEVEL16 = 16, /**< 16 entry watermark */ IX_QMGR_Q_WM_LEVEL32 = 32, /**< 32 entry watermark */ IX_QMGR_Q_WM_LEVEL64 = 64 /**< 64 entry watermark */} IxQMgrWMLevel;/** * @ingroup IxQMgrAPI * * @enum IxQMgrDispatchGroup * * @brief QMgr dispatch group select identifiers. * * This enum defines the groups over which the dispatcher will process when * called. One of the enum values must be used as a input to * @a ixQMgrDispatcherLoopRunA0, @a ixQMgrDispatcherLoopRunB0 * or @a ixQMgrDispatcherLoopRunB0LLP. * */typedef enum{ IX_QMGR_QUELOW_GROUP = 0, /**< Queues 0-31 */ IX_QMGR_QUEUPP_GROUP /**< Queues 32-63 */} IxQMgrDispatchGroup;/** * @ingroup IxQMgrAPI * * @enum IxQMgrPriority * * @brief Dispatcher priority levels. * * This enum defines the different queue dispatch priority levels. * The lowest priority number (0) is the highest priority level. * */typedef enum{ IX_QMGR_Q_PRIORITY_0 = 0, /**< Priority level 0 */ IX_QMGR_Q_PRIORITY_1, /**< Priority level 1 */ IX_QMGR_Q_PRIORITY_2, /**< Priority level 2 */ IX_QMGR_Q_PRIORITY_INVALID /**< Invalid Priority level */} IxQMgrPriority;/** * @ingroup IxQMgrAPI * * @enum IxQMgrType * * @brief Callback types as used with livelock prevention * * This enum defines the different callback types. * These types are only used when Livelock prevention is enabled. * The default is IX_QMGR_TYPE_REALTIME_OTHER. * */typedef enum{ IX_QMGR_TYPE_REALTIME_OTHER = 0, /**< Real time callbacks-always allowed run*/ IX_QMGR_TYPE_REALTIME_PERIODIC, /**< Periodic callbacks-always allowed run */ IX_QMGR_TYPE_REALTIME_SPORADIC /**< Sporadic callbacks-only run if no periodic callbacks are in progress */} IxQMgrType;/** * @ingroup IxQMgrAPI * * @typedef IxQMgrCallbackId * * @brief Uniquely identifies a callback function. * * A unique callback identifier associated with each callback * registered by clients. * */typedef unsigned IxQMgrCallbackId;/** * @typedef IxQMgrCallback * * @brief QMgr notification callback type. * * This defines the interface to all client callback functions. * * @param qId @ref IxQMgrQId [in] - the queue identifier * @param cbId @ref IxQMgrCallbackId [in] - the callback identifier */typedef void (*IxQMgrCallback)(IxQMgrQId qId, IxQMgrCallbackId cbId);/** * @ingroup IxQMgrAPI * * @typedef IxQMgrDispatcherFuncPtr * * @brief QMgr Dispatcher Loop function pointer. * * This defines the interface for QMgr Dispather functions. * * @param group @ref IxQMgrDispatchGroup [in] - the group of the * queue of which the dispatcher will run */typedef void (*IxQMgrDispatcherFuncPtr)(IxQMgrDispatchGroup group);/* * Function Prototypes *//* ------------------------------------------------------------ Initialisation related functions ---------------------------------------------------------- *//** * * @ingroup IxQMgrAPI * * @fn ixQMgrInit (void) * * @brief Initialise the QMgr. * * This function must be called before and other QMgr function. It * sets up internal data structures. * * @return @li IX_SUCCESS, the IxQMgr successfully initialised * @return @li IX_FAIL, failed to initialize the Qmgr * */PUBLIC IX_STATUSixQMgrInit (void);/** * * @ingroup IxQMgrAPI * * @fn ixQMgrUnload (void) * * @brief Uninitialise the QMgr. * * This function will perform the tasks required to unload the QMgr component * cleanly. This includes unmapping kernel memory. * This should be called before a soft reboot or unloading of a kernel module. * * @pre It should only be called if @ref ixQMgrInit has already been called. * * @post No QMgr functions should be called until ixQMgrInit is called again. * * @return @li IX_SUCCESS, the IxQMgr successfully uninitialised * @return @li IX_FAIL, failed to uninitialize the Qmgr * */PUBLIC IX_STATUSixQMgrUnload (void);/** * * @ingroup IxQMgrAPI * * @fn ixQMgrShow (void) * * @brief Describe queue configuration and statistics for active queues. * * This function shows active queues, their configurations and statistics. * * @return @li void * */PUBLIC voidixQMgrShow (void);/** * * @ingroup IxQMgrAPI * * @fn ixQMgrQShow (IxQMgrQId qId) * * @brief Display aqueue configuration and statistics for a queue. * * This function shows queue configuration and statistics for a queue. * * @param qId @ref IxQMgrQId [in] - the queue identifier. * * @return @li IX_SUCCESS, success * @return @li IX_QMGR_Q_NOT_CONFIGURED, queue not configured for this QId * */PUBLIC IX_STATUSixQMgrQShow (IxQMgrQId qId);/* ------------------------------------------------------------ Configuration related functions ---------------------------------------------------------- *//** * * @ingroup IxQMgrAPI * * @fn ixQMgrQConfig (char *qName, IxQMgrQId qId,
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -