1*53ee8cc1Swenshuai.xi #ifndef _UTOPIA_ADP_H_ 2*53ee8cc1Swenshuai.xi #define _UTOPIA_ADP_H_ 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi //Utopia Adaption layer 5*53ee8cc1Swenshuai.xi 6*53ee8cc1Swenshuai.xi //#include <linux/list.h> 7*53ee8cc1Swenshuai.xi #include "MsTypes.h" 8*53ee8cc1Swenshuai.xi 9*53ee8cc1Swenshuai.xi #define MODULE_NUM 5 10*53ee8cc1Swenshuai.xi 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi /* 13*53ee8cc1Swenshuai.xi * Utopia Adaption layer tools 14*53ee8cc1Swenshuai.xi */ 15*53ee8cc1Swenshuai.xi #define UADP_SPT_SELF_SIZE 1 16*53ee8cc1Swenshuai.xi #define UADP_SPT_POINTER_TO_NEXT 2 17*53ee8cc1Swenshuai.xi #define UADP_SPT_END 5 18*53ee8cc1Swenshuai.xi 19*53ee8cc1Swenshuai.xi #define UADP_SDT_SELF_SIZE 1 20*53ee8cc1Swenshuai.xi #define UADP_SDT_P2N 2 21*53ee8cc1Swenshuai.xi #define UADP_SDT_AT 3 22*53ee8cc1Swenshuai.xi #define UADP_SDT_ES 4 23*53ee8cc1Swenshuai.xi #define UADP_SDT_END 5 24*53ee8cc1Swenshuai.xi 25*53ee8cc1Swenshuai.xi typedef struct _UADP_STRUCT_POINTER_TABLE 26*53ee8cc1Swenshuai.xi { 27*53ee8cc1Swenshuai.xi unsigned int type; 28*53ee8cc1Swenshuai.xi unsigned int offset; 29*53ee8cc1Swenshuai.xi unsigned long size_or_next; //size of this structure or pointer to next structure 30*53ee8cc1Swenshuai.xi }UADP_STRUCT_POINTER_TABLE; 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi #define DEADBEEF 0xdeadbeef 33*53ee8cc1Swenshuai.xi typedef struct _SEQUNCE_MEMORY_MANAGE 34*53ee8cc1Swenshuai.xi { 35*53ee8cc1Swenshuai.xi unsigned int uFreeIndex;//0~uSlotTotal-1, upper layer also can check this value to know max memory usage 36*53ee8cc1Swenshuai.xi unsigned int uSlotTotal;//one slot = 4 byte 37*53ee8cc1Swenshuai.xi unsigned int uFlag;//bit 0: overflow 38*53ee8cc1Swenshuai.xi unsigned int pMemoryPool[1]; 39*53ee8cc1Swenshuai.xi }SEQUNCE_MEMORY_MANAGE; 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------------------------- 42*53ee8cc1Swenshuai.xi //STYLE 0 BASIC MACRO: You need take care most of your SPT description 43*53ee8cc1Swenshuai.xi #define UADP_SPT_BGN(TABLE_ELEMENT,SIZE) {UADPBypassSetSPT(TABLE_ELEMENT,UADP_SPT_SELF_SIZE,0, SIZE) 44*53ee8cc1Swenshuai.xi #define UADP_SPT_NXT(TABLE_ELEMENT,TYPE,MEMBER,NEXT_TABLE) UADPBypassSetSPT(TABLE_ELEMENT,UADP_SPT_POINTER_TO_NEXT,((unsigned long) &((TYPE *)0)->MEMBER), (unsigned long)NEXT_TABLE); 45*53ee8cc1Swenshuai.xi #define UADP_SPT_FIN(TABLE_ELEMENT) UADPBypassSetSPT(TABLE_ELEMENT,UADP_SPT_END , 0, 0);} 46*53ee8cc1Swenshuai.xi 47*53ee8cc1Swenshuai.xi #define UADP_SDT_BGN(TABLE_ELEMENT,SIZE) {UADPBypassSetSPT(TABLE_ELEMENT,UADP_SPT_SELF_SIZE,0, SIZE) 48*53ee8cc1Swenshuai.xi #define UADP_SDT_KIND(TABLE_ELEMENT,TYPE,KIND,MEMBER,NEXT_TABLE) UADPBypassSetSPT(TABLE_ELEMENT,KIND,((unsigned long) &((TYPE *)0)->MEMBER), (unsigned long)NEXT_TABLE); 49*53ee8cc1Swenshuai.xi #define UADP_SDT_FIN(TABLE_ELEMENT) UADPBypassSetSPT(TABLE_ELEMENT,UADP_SPT_END , 0, 0);} 50*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------------------------- 51*53ee8cc1Swenshuai.xi //STYLE 1 NAME-TYPE MACRO: You need take care "NAME", but don't need take care "TABLE_ELEMENTs" 52*53ee8cc1Swenshuai.xi #define UADP_SPT_NAMEnNXT_DEF(NAME,n) UADP_STRUCT_POINTER_TABLE spt_##NAME [2+n] 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME0NXT(NAME,TYPE) \ 55*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 56*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [1]); 57*53ee8cc1Swenshuai.xi 58*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME1NXT(NAME,TYPE,MB1,MB1NAME) \ 59*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 60*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 61*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [2]); 62*53ee8cc1Swenshuai.xi 63*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME2NXT(NAME,TYPE,MB1,MB1NAME,MB2,MB2NAME) \ 64*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 65*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 66*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [2],TYPE,MB2,spt_##MB2NAME); \ 67*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [3]); 68*53ee8cc1Swenshuai.xi 69*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME3NXT(NAME,TYPE,MB1,MB1NAME,MB2,MB2NAME,MB3,MB3NAME) \ 70*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 71*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 72*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [2],TYPE,MB2,spt_##MB2NAME); \ 73*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [3],TYPE,MB3,spt_##MB3NAME); \ 74*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [4]); 75*53ee8cc1Swenshuai.xi 76*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME4NXT(NAME,TYPE,MB1,MB1NAME,MB2,MB2NAME,MB3,MB3NAME,MB4,MB4NAME) \ 77*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 78*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 79*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [2],TYPE,MB2,spt_##MB2NAME); \ 80*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [3],TYPE,MB3,spt_##MB3NAME); \ 81*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [4],TYPE,MB4,spt_##MB4NAME); \ 82*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [5]); 83*53ee8cc1Swenshuai.xi 84*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME5NXT(NAME,TYPE,MB1,MB1NAME,MB2,MB2NAME,MB3,MB3NAME,MB4,MB4NAME,MB5,MB5NAME) \ 85*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 86*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 87*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [2],TYPE,MB2,spt_##MB2NAME); \ 88*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [3],TYPE,MB3,spt_##MB3NAME); \ 89*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [4],TYPE,MB4,spt_##MB4NAME); \ 90*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [5],TYPE,MB5,spt_##MB5NAME); \ 91*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [6]); 92*53ee8cc1Swenshuai.xi 93*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME6NXT(NAME,TYPE,MB1,MB1NAME,MB2,MB2NAME,MB3,MB3NAME,MB4,MB4NAME,MB5,MB5NAME,MB6,MB6NAME) \ 94*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 95*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 96*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [2],TYPE,MB2,spt_##MB2NAME); \ 97*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [3],TYPE,MB3,spt_##MB3NAME); \ 98*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [4],TYPE,MB4,spt_##MB4NAME); \ 99*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [5],TYPE,MB5,spt_##MB5NAME); \ 100*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [6],TYPE,MB6,spt_##MB6NAME); \ 101*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [7]); 102*53ee8cc1Swenshuai.xi 103*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME9NXT(NAME,TYPE,MB1,MB1NAME,MB2,MB2NAME,MB3,MB3NAME,MB4,MB4NAME,MB5,MB5NAME,MB6,MB6NAME,MB7,MB7NAME,MB8,MB8NAME,MB9,MB9NAME) \ 104*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 105*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 106*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [2],TYPE,MB2,spt_##MB2NAME); \ 107*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [3],TYPE,MB3,spt_##MB3NAME); \ 108*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [4],TYPE,MB4,spt_##MB4NAME); \ 109*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [5],TYPE,MB5,spt_##MB5NAME); \ 110*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [6],TYPE,MB6,spt_##MB6NAME); \ 111*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [7],TYPE,MB7,spt_##MB6NAME); \ 112*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [8],TYPE,MB8,spt_##MB6NAME); \ 113*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [9],TYPE,MB9,spt_##MB6NAME); \ 114*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [10]); 115*53ee8cc1Swenshuai.xi 116*53ee8cc1Swenshuai.xi #define UADP_SPT_NAME11NXT(NAME,TYPE,MB1,MB1NAME,MB2,MB2NAME,MB3,MB3NAME,MB4,MB4NAME,MB5,MB5NAME,MB6,MB6NAME,MB7,MB7NAME,MB8,MB8NAME,MB9,MB9NAME,MB10,MB10NAME,MB11,MB11NAME) \ 117*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 118*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [1],TYPE,MB1,spt_##MB1NAME); \ 119*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [2],TYPE,MB2,spt_##MB2NAME); \ 120*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [3],TYPE,MB3,spt_##MB3NAME); \ 121*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [4],TYPE,MB4,spt_##MB4NAME); \ 122*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [5],TYPE,MB5,spt_##MB5NAME); \ 123*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [6],TYPE,MB6,spt_##MB6NAME); \ 124*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [7],TYPE,MB7,spt_##MB6NAME); \ 125*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [8],TYPE,MB8,spt_##MB6NAME); \ 126*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [9],TYPE,MB9,spt_##MB6NAME); \ 127*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [10],TYPE,MB10,spt_##MB6NAME); \ 128*53ee8cc1Swenshuai.xi UADP_SPT_NXT(& spt_##NAME [11],TYPE,MB11,spt_##MB6NAME); \ 129*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [12]); 130*53ee8cc1Swenshuai.xi 131*53ee8cc1Swenshuai.xi 132*53ee8cc1Swenshuai.xi #define UADP_SDT_NAMEn_DEF(NAME,n) UADP_STRUCT_POINTER_TABLE spt_##NAME [2+n] 133*53ee8cc1Swenshuai.xi 134*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME0(NAME,TYPE) \ 135*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 136*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [1]); 137*53ee8cc1Swenshuai.xi 138*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME1(NAME,TYPE,MB1KIND,MB1,MB1NAME) \ 139*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 140*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 141*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [2]); 142*53ee8cc1Swenshuai.xi 143*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME2(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME) \ 144*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 145*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 146*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 147*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [3]); 148*53ee8cc1Swenshuai.xi 149*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME3(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME,MB3KIND,MB3,MB3NAME) \ 150*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 151*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 152*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 153*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [3],TYPE,MB3KIND,MB3,spt_##MB3NAME); \ 154*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [4]); 155*53ee8cc1Swenshuai.xi 156*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME4(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME,MB3KIND,MB3,MB3NAME,MB4KIND,MB4,MB4NAME) \ 157*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 158*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 159*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 160*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [3],TYPE,MB3KIND,MB3,spt_##MB3NAME); \ 161*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [4],TYPE,MB4KIND,MB4,spt_##MB4NAME); \ 162*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [5]); 163*53ee8cc1Swenshuai.xi 164*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME5(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME,MB3KIND,MB3,MB3NAME,MB4KIND,MB4,MB4NAME,MB5KIND,MB5,MB5NAME) \ 165*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 166*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 167*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 168*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [3],TYPE,MB3KIND,MB3,spt_##MB3NAME); \ 169*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [4],TYPE,MB4KIND,MB4,spt_##MB4NAME); \ 170*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [5],TYPE,MB5KIND,MB5,spt_##MB5NAME); \ 171*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [6]); 172*53ee8cc1Swenshuai.xi 173*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME6(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME,MB3KIND,MB3,MB3NAME,MB4KIND,MB4,MB4NAME,MB5KIND,MB5,MB5NAME,MB6KIND,MB6,MB6NAME) \ 174*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 175*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 176*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 177*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [3],TYPE,MB3KIND,MB3,spt_##MB3NAME); \ 178*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [4],TYPE,MB4KIND,MB4,spt_##MB4NAME); \ 179*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [5],TYPE,MB5KIND,MB5,spt_##MB5NAME); \ 180*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [6],TYPE,MB6KIND,MB6,spt_##MB6NAME); \ 181*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [7]); 182*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME7(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME,MB3KIND,MB3,MB3NAME,MB4KIND,MB4,MB4NAME,MB5KIND,MB5,MB5NAME,MB6KIND,MB6,MB6NAME,MB7KIND,MB7,MB7NAME) \ 183*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 184*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 185*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 186*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [3],TYPE,MB3KIND,MB3,spt_##MB3NAME); \ 187*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [4],TYPE,MB4KIND,MB4,spt_##MB4NAME); \ 188*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [5],TYPE,MB5KIND,MB5,spt_##MB5NAME); \ 189*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [6],TYPE,MB6KIND,MB6,spt_##MB6NAME); \ 190*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [7],TYPE,MB7KIND,MB7,spt_##MB7NAME); \ 191*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [8]); 192*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME8(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME,MB3KIND,MB3,MB3NAME,MB4KIND,MB4,MB4NAME,MB5KIND,MB5,MB5NAME,MB6KIND,MB6,MB6NAME,MB7KIND,MB7,MB7NAME,MB8KIND,MB8,MB8NAME) \ 193*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 194*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 195*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 196*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [3],TYPE,MB3KIND,MB3,spt_##MB3NAME); \ 197*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [4],TYPE,MB4KIND,MB4,spt_##MB4NAME); \ 198*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [5],TYPE,MB5KIND,MB5,spt_##MB5NAME); \ 199*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [6],TYPE,MB6KIND,MB6,spt_##MB6NAME); \ 200*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [7],TYPE,MB7KIND,MB7,spt_##MB7NAME); \ 201*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [8],TYPE,MB8KIND,MB8,spt_##MB8NAME); \ 202*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [9]); 203*53ee8cc1Swenshuai.xi 204*53ee8cc1Swenshuai.xi #define UADP_SDT_NAME16(NAME,TYPE,MB1KIND,MB1,MB1NAME,MB2KIND,MB2,MB2NAME,MB3KIND,MB3,MB3NAME,MB4KIND,MB4,MB4NAME,MB5KIND,MB5,MB5NAME,MB6KIND,MB6,MB6NAME,MB7KIND,MB7,MB7NAME,MB8KIND,MB8,MB8NAME,\ 205*53ee8cc1Swenshuai.xi MB9KIND,MB9,MB9NAME,MB10KIND,MB10,MB10NAME,MB11KIND,MB11,MB11NAME,MB12KIND,MB12,MB12NAME,MB13KIND,MB13,MB13NAME,MB14KIND,MB14,MB14NAME,MB15KIND,MB15,MB15NAME,MB16KIND,MB16,MB16NAME) \ 206*53ee8cc1Swenshuai.xi UADP_SPT_BGN(& spt_##NAME [0],sizeof(TYPE)); \ 207*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [1],TYPE,MB1KIND,MB1,spt_##MB1NAME); \ 208*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [2],TYPE,MB2KIND,MB2,spt_##MB2NAME); \ 209*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [3],TYPE,MB3KIND,MB3,spt_##MB3NAME); \ 210*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [4],TYPE,MB4KIND,MB4,spt_##MB4NAME); \ 211*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [5],TYPE,MB5KIND,MB5,spt_##MB5NAME); \ 212*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [6],TYPE,MB6KIND,MB6,spt_##MB6NAME); \ 213*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [7],TYPE,MB7KIND,MB7,spt_##MB7NAME); \ 214*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [8],TYPE,MB8KIND,MB8,spt_##MB8NAME); \ 215*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [9],TYPE,MB9KIND,MB9,spt_##MB9NAME); \ 216*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [10],TYPE,MB10KIND,MB10,spt_##MB10NAME); \ 217*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [11],TYPE,MB11KIND,MB11,spt_##MB11NAME); \ 218*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [12],TYPE,MB12KIND,MB12,spt_##MB12NAME); \ 219*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [13],TYPE,MB13KIND,MB13,spt_##MB13NAME); \ 220*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [14],TYPE,MB14KIND,MB14,spt_##MB14NAME); \ 221*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [15],TYPE,MB15KIND,MB15,spt_##MB15NAME); \ 222*53ee8cc1Swenshuai.xi UADP_SDT_KIND(& spt_##NAME [16],TYPE,MB16KIND,MB16,spt_##MB16NAME); \ 223*53ee8cc1Swenshuai.xi UADP_SPT_FIN(& spt_##NAME [17]); 224*53ee8cc1Swenshuai.xi //----------------------------------------------------------------------------------------------- 225*53ee8cc1Swenshuai.xi //STYLE 2 TYPE MACRO: You don't need take care "NAME", we will do it. 226*53ee8cc1Swenshuai.xi #define UADP_SPT_0NXT_DEF(TYPE) UADP_SPT_NAMEnNXT_DEF(TYPE,0) 227*53ee8cc1Swenshuai.xi #define UADP_SPT_1NXT_DEF(TYPE) UADP_SPT_NAMEnNXT_DEF(TYPE,1) 228*53ee8cc1Swenshuai.xi #define UADP_SPT_2NXT_DEF(TYPE) UADP_SPT_NAMEnNXT_DEF(TYPE,2) 229*53ee8cc1Swenshuai.xi #define UADP_SPT_3NXT_DEF(TYPE) UADP_SPT_NAMEnNXT_DEF(TYPE,3) 230*53ee8cc1Swenshuai.xi #define UADP_SPT_4NXT_DEF(TYPE) UADP_SPT_NAMEnNXT_DEF(TYPE,4) 231*53ee8cc1Swenshuai.xi #define UADP_SPT_5NXT_DEF(TYPE) UADP_SPT_NAMEnNXT_DEF(TYPE,5) 232*53ee8cc1Swenshuai.xi 233*53ee8cc1Swenshuai.xi #define UADP_SPT_0NXT(TYPE) UADP_SPT_NAME0NXT(TYPE,TYPE) 234*53ee8cc1Swenshuai.xi #define UADP_SPT_1NXT(TYPE,MB1,MB1TYPE) UADP_SPT_NAME1NXT(TYPE,TYPE,MB1,MB1TYPE) 235*53ee8cc1Swenshuai.xi #define UADP_SPT_2NXT(TYPE,MB1,MB1TYPE,MB2,MB2TYPE) UADP_SPT_NAME2NXT(TYPE,TYPE,MB1,MB1TYPE,MB2,MB2TYPE) 236*53ee8cc1Swenshuai.xi #define UADP_SPT_3NXT(TYPE,MB1,MB1TYPE,MB2,MB2TYPE,MB3,MB3TYPE) UADP_SPT_NAME3NXT(TYPE,TYPE,MB1,MB1TYPE,MB2,MB2TYPE,MB3,MB3TYPE) 237*53ee8cc1Swenshuai.xi #define UADP_SPT_4NXT(TYPE,MB1,MB1TYPE,MB2,MB2TYPE,MB3,MB3TYPE,MB4,MB4TYPE) UADP_SPT_NAME4NXT(TYPE,TYPE,MB1,MB1TYPE,MB2,MB2TYPE,MB3,MB3TYPE,MB4,MB4TYPE) 238*53ee8cc1Swenshuai.xi #define UADP_SPT_5NXT(TYPE,MB1,MB1TYPE,MB2,MB2TYPE,MB3,MB3TYPE,MB4,MB4TYPE,MB5,MB5TYPE) UADP_SPT_NAME5NXT(TYPE,TYPE,MB1,MB1TYPE,MB2,MB2TYPE,MB3,MB3TYPE,MB4,MB4TYPE,MB5,MB5TYPE) 239*53ee8cc1Swenshuai.xi 240*53ee8cc1Swenshuai.xi #define UADP_SDT_0_DEF(TYPE) UADP_SDT_NAMEn_DEF(TYPE,0) 241*53ee8cc1Swenshuai.xi #define UADP_SDT_1_DEF(TYPE) UADP_SDT_NAMEn_DEF(TYPE,1) 242*53ee8cc1Swenshuai.xi #define UADP_SDT_2_DEF(TYPE) UADP_SDT_NAMEn_DEF(TYPE,2) 243*53ee8cc1Swenshuai.xi #define UADP_SDT_3_DEF(TYPE) UADP_SDT_NAMEn_DEF(TYPE,3) 244*53ee8cc1Swenshuai.xi #define UADP_SDT_4_DEF(TYPE) UADP_SDT_NAMEn_DEF(TYPE,4) 245*53ee8cc1Swenshuai.xi #define UADP_SDT_5_DEF(TYPE) UADP_SDT_NAMEn_DEF(TYPE,5) 246*53ee8cc1Swenshuai.xi #define UADP_SDT_7_DEF(TYPE) UADP_SDT_NAMEn_DEF(TYPE,7) 247*53ee8cc1Swenshuai.xi 248*53ee8cc1Swenshuai.xi #define UADP_SDT_0(TYPE) UADP_SDT_NAME0(TYPE,TYPE) 249*53ee8cc1Swenshuai.xi #define UADP_SDT_1(TYPE,MB1KIND,MB1,MB1TYPE) UADP_SDT_NAME1(TYPE,TYPE,MB1KIND,MB1,MB1TYPE) 250*53ee8cc1Swenshuai.xi #define UADP_SDT_2(TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE) UADP_SDT_NAME2(TYPE,TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE) 251*53ee8cc1Swenshuai.xi #define UADP_SDT_3(TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE) UADP_SDT_NAME3(TYPE,TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE) 252*53ee8cc1Swenshuai.xi #define UADP_SDT_4(TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE,MB4KIND,MB4,MB4TYPE) UADP_SDT_NAME4(TYPE,TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE,MB4KIND,MB4,MB4TYPE) 253*53ee8cc1Swenshuai.xi #define UADP_SDT_5(TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE,MB4KIND,MB4,MB4TYPE,MB5KIND,MB5,MB5TYPE) UADP_SDT_NAME5(TYPE,TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE,MB4KIND,MB4,MB4TYPE,MB5KIND,MB5,MB5TYPE) 254*53ee8cc1Swenshuai.xi #define UADP_SDT_7(TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE,MB4KIND,MB4,MB4TYPE,MB5KIND,MB5,MB5TYPE,MB6KIND,MB6,MB6TYPE,MB7KIND,MB7,MB7TYPE) UADP_SDT_NAME7(TYPE,TYPE,MB1KIND,MB1,MB1TYPE,MB2KIND,MB2,MB2TYPE,MB3KIND,MB3,MB3TYPE,MB4KIND,MB4,MB4TYPE,MB5KIND,MB5,MB5TYPE,MB6KIND,MB6,MB6TYPE,MB7KIND,MB7,MB7TYPE) 255*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 256*53ee8cc1Swenshuai.xi 257*53ee8cc1Swenshuai.xi //in/out in kernel_argc, !!!!output need compatible into input structure!!!!!! 258*53ee8cc1Swenshuai.xi int UADPBypassIoctl(void* pInstance, unsigned int cmd, void* arg,const UADP_STRUCT_POINTER_TABLE *pInTable,const UADP_STRUCT_POINTER_TABLE *pOutTable, void* pWorkBuffer, int iWorkBufferSize); 259*53ee8cc1Swenshuai.xi int UADPBypassSetSPT(UADP_STRUCT_POINTER_TABLE* pSpt, unsigned int uiType, unsigned int uiOffset, unsigned long uiSizeOrNext); 260*53ee8cc1Swenshuai.xi 261*53ee8cc1Swenshuai.xi char* UADPKQueuePop(MS_U32 module_ID); 262*53ee8cc1Swenshuai.xi 263*53ee8cc1Swenshuai.xi void UADPKQueuePush(MS_U8 module_ID,char * pointer); 264*53ee8cc1Swenshuai.xi 265*53ee8cc1Swenshuai.xi int UADPKQueueWaitThreadNum(MS_U8 module_ID); 266*53ee8cc1Swenshuai.xi 267*53ee8cc1Swenshuai.xi int UADPKQueueDataNum(MS_U8 module_ID); 268*53ee8cc1Swenshuai.xi int UADPKQueueIsempty(MS_U8 module_ID); 269*53ee8cc1Swenshuai.xi 270*53ee8cc1Swenshuai.xi void UADPCreateKQueue(MS_U8 module_ID); 271*53ee8cc1Swenshuai.xi void UADPDeleteQueue(MS_U8 module_ID); 272*53ee8cc1Swenshuai.xi 273*53ee8cc1Swenshuai.xi #endif /* _UTOPIA_ADP_H_ */ 274*53ee8cc1Swenshuai.xi 275