xref: /utopia/UTPA2-700.0.x/modules/msos/utopia_core/utopia_adp.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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