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