Home | History | Annotate | Download | only in Inc
      1 /****************************************************************************
      2 **+-----------------------------------------------------------------------+**
      3 **|                                                                       |**
      4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
      5 **| All rights reserved.                                                  |**
      6 **|                                                                       |**
      7 **| Redistribution and use in source and binary forms, with or without    |**
      8 **| modification, are permitted provided that the following conditions    |**
      9 **| are met:                                                              |**
     10 **|                                                                       |**
     11 **|  * Redistributions of source code must retain the above copyright     |**
     12 **|    notice, this list of conditions and the following disclaimer.      |**
     13 **|  * Redistributions in binary form must reproduce the above copyright  |**
     14 **|    notice, this list of conditions and the following disclaimer in    |**
     15 **|    the documentation and/or other materials provided with the         |**
     16 **|    distribution.                                                      |**
     17 **|  * Neither the name Texas Instruments nor the names of its            |**
     18 **|    contributors may be used to endorse or promote products derived    |**
     19 **|    from this software without specific prior written permission.      |**
     20 **|                                                                       |**
     21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
     22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
     23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
     24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
     25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
     26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
     27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
     28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
     29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
     30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
     31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
     32 **|                                                                       |**
     33 **+-----------------------------------------------------------------------+**
     34 ****************************************************************************/
     35 
     36 
     37 #ifndef TNETWARB_H
     38 #define TNETWARB_H
     39 
     40 #include "osTIType.h"
     41 
     42 
     43 
     44 /*----------------------------------------------------------------------*/
     45 /*                      GKI Definitions                                 */
     46 /*----------------------------------------------------------------------*/
     47 
     48 
     49 /* Define the total number of buffer pools supported, fixed and dynamic.
     50 */
     51 #define NUM_TNETWARB_TOTAL_BUF_POOLS			3
     52 
     53 
     54 /* Set this flag to non zero if you want to do buffer ownership checks.
     55 ** Note that to do these checks, you should have all tasks that free
     56 ** buffers as GKI tasks.
     57 */
     58 #define TNETWARB_ENABLE_OWNER_CHECK			0
     59 
     60 
     61 /* Set this flag to non zero if you want to do buffer corruption checks.
     62 ** If set, GKI will check buffer tail corruption every time it processes
     63 ** a buffer. This is very useful for debug, and is minimal overhead in
     64 ** a running system.
     65 */
     66 #define TNETWARB_ENABLE_BUF_CORRUPTION_CHECK  0
     67 
     68 
     69 /* Set this flag to non zero if you want to do pool id checks.
     70 ** If set, GKI will check if pool id exceeds the number of pools.
     71 ** This is useful for debug, but not for release version.
     72 */
     73 #define TNETWARB_ENABLE_POOL_ID_CHECK		 0
     74 
     75 
     76 /***********************************************************************
     77 ** This queue is a general purpose buffer queue, for application use.
     78 *************************************************************************/
     79 typedef struct
     80 {
     81     void    *p_first;
     82     void    *p_last;
     83     UINT16  count;
     84 } BUFFER_Q;
     85 
     86 #define TNETWARB_IS_QUEUE_EMPTY(p_q) (p_q.count == 0)
     87 
     88 /* Define the value that create pool will return if it fails
     89 */
     90 #define TNETWARB_INVALID_POOL 0xFF
     91 
     92 
     93 /********************************************************************/
     94 /**  Buffer Management Data Structures                             **/
     95 /********************************************************************/
     96 
     97 typedef struct _buffer_hdr
     98 {
     99 	struct _buffer_hdr *p_next;
    100 	UINT8   q_id;
    101     UINT8   status;
    102 
    103 } BUFFER_HDR_T;
    104 
    105 
    106 /* Buffer related defines
    107 */
    108 #define BUFFER_HDR_SIZE		 (sizeof(BUFFER_HDR_T))
    109 #define MAGIC_NO			 0xAA55AA55
    110 
    111 
    112 #define BUF_STATUS_UNLINKED				0
    113 #define BUF_STATUS_FREE				    1
    114 #define BUF_STATUS_QUEUED				2
    115 
    116 
    117 
    118 /***********************************************************************
    119 ** Function prototypes
    120 */
    121 
    122 #ifdef __cplusplus
    123 extern "C" {
    124 #endif
    125 
    126 
    127 /* To get and release buffers, change owner and get size
    128 */
    129 
    130 void	TNETWArb_buffer_init(UINT8 *pTNETWArb_Client_Array);
    131 void	*TNETWArb_getpoolbuf (TI_HANDLE hTNETWArb,UINT8 module_id);
    132 void	TNETWArb_freebuf(void *bptr);
    133 
    134 /* User buffer queue management
    135 */
    136  void    TNETWArb_init_q (BUFFER_Q *p_q);
    137  void    TNETWArb_Enqueue (BUFFER_Q *p_q, void *p_buf);
    138  void    TNETWArb_Enqueue_head (BUFFER_Q *p_q, void *p_buf);
    139  void   *TNETWArb_Dequeue  (BUFFER_Q *p_q);
    140  void   *TNETWArb_remove_from_queue (BUFFER_Q *p_q, void *p_buf);
    141  void   *TNETWArb_getfirst (BUFFER_Q *p_q);
    142  void   *TNETWArb_getnext (void *p_buf);
    143 
    144 
    145 #ifdef __cplusplus
    146 }
    147 #endif /* of __cplusplus */
    148 
    149 
    150 #endif /* of GKI_H */
    151