1 /*
2  * dspbridge/mpu_api/inc/wcdioctl.h
3  *
4  * DSP-BIOS Bridge driver support functions for TI OMAP processors.
5  *
6  * Copyright (C) 2007 Texas Instruments, Inc.
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU Lesser General Public License as published
10  * by the Free Software Foundation version 2.1 of the License.
11  *
12  * This program is distributed .as is. WITHOUT ANY WARRANTY of any kind,
13  * whether express or implied; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  */
17 
18 
19 /*
20  *  ======== wcdioctl.h ========
21  *  Purpose:
22  *      Contains structures and commands that are used for interaction
23  *      between the DDSP API and class driver.
24  *
25  *! Revision History
26  *! ================
27  *! 19-Apr-2004 sb  Aligned DMM definitions with Symbian
28  *! 08-Mar-2004 sb  Added the Dynamic Memory Mapping structs & offsets
29  *! 15-Oct-2002 kc  Updated definitions for private PERF module.
30  *! 16-Aug-2002 map Added ARGS_MGR_REGISTEROBJECT & ARGS_MGR_UNREGISTEROBJECT
31  *!                 Added CMD_MGR_REGISTEROBJECT_OFFSET &
32  *!                 CMD_MGR_UNREGISTEROBJECT_OFFSET
33  *! 15-Jan-2002 ag  Added actaul bufSize to ARGS_STRM_[RECLAIM][ISSUE].
34  *! 15-Nov-2001 ag  change to STRMINFO in ARGS_STRM_GETINFO.
35  *! 11-Sep-2001 ag  ARGS_CMM_GETHANDLE defn uses DSP_HPROCESSOR.
36  *! 23-Apr-2001 jeh Added pStatus to NODE_TERMINATE args.
37  *! 13-Feb-2001 kc  DSP/BIOS Bridge name updates.
38  *! 22-Nov-2000 kc: Added CMD_MGR_GETPERF_DATA_OFFSET for acquiring PERF stats.
39  *! 27-Oct-2000 jeh Added timeouts to NODE_GETMESSAGE, NODE_PUTMESSAGE args.
40  *!                 Removed NODE_GETMESSAGESTRM args.
41  *! 11-Oct-2000 ag: Added SM mgr(CMM) args.
42  *! 27-Sep-2000 jeh Removed struct DSP_BUFFERATTR param from ARGS_STRM_ALLOCATEBUFFER.
43  *! 25-Sep-2000 rr: Updated to Version 0.9
44  *! 07-Sep-2000 jeh Changed HANDLE to DSP_HNOTIFICATION in RegisterNotify args.
45  *!                 Added DSP_STRMATTR to DSPNode_Connect args.
46  *! 04-Aug-2000 rr: MEM and UTIL added to RM.
47  *! 27-Jul-2000 rr: NODE, MGR,STRM and PROC added
48  *! 27-Jun-2000 rr: Modifed to Use either PM or DSP/BIOS Bridge
49  *!                 IFDEF to build for PM or DSP/BIOS Bridge
50  *! 28-Jan-2000 rr: NT_CMD_FROM_OFFSET moved out to dsptrap.h
51  *! 24-Jan-2000 rr: Merged with Scott's code.
52  *! 21-Jan-2000 sg: In ARGS_CHNL_GETMODE changed mode to be ULONG to be
53  *!                 consistent with chnldefs.h.
54  *! 11-Jan-2000 rr: CMD_CFG_GETCDVERSION_OFFSET added.
55  *! 12-Nov-1999 rr: CMD_BRD_MONITOR_OFFSET added
56  *! 09-Nov-1999 kc: Added MEMRY and enabled CMD_BRD_IOCTL_OFFSET.
57  *! 05-Nov-1999 ag: Added CHNL.
58  *! 02-Nov-1999 kc: Removed field from ARGS_UTIL_TESTDLL.
59  *! 29-Oct-1999 kc: Cleaned up for code review.
60  *! 08-Oct-1999 rr: Util control offsets added.
61  *! 13-Sep-1999 kc: Added ARGS_UTIL_TESTDLL for PM test infrastructure.
62  *! 19-Aug-1999 rr: Created from WSX. Minimal Implementaion of BRD_Start and BRD
63  *!                 and BRD_Stop. IOCTL Offsets and CTRL Code.
64  */
65 
66 #ifndef WCDIOCTL_
67 #define WCDIOCTL_
68 
69 #include <mem.h>
70 #include <cmm.h>
71 #include <strmdefs.h>
72 #include <dbdcd.h>
73 
74 typedef union {
75 
76 	/* MGR Module */
77 	struct {
78 		UINT uNode;
79 		struct DSP_NDBPROPS *pNDBProps;
80 		UINT uNDBPropsSize;
81 		UINT *puNumNodes;
82 	} ARGS_MGR_ENUMNODE_INFO;
83 
84 	struct {
85 		UINT uProcessor;
86 		struct DSP_PROCESSORINFO *pProcessorInfo;
87 		UINT uProcessorInfoSize;
88 		UINT *puNumProcs;
89 	} ARGS_MGR_ENUMPROC_INFO;
90 
91 	struct {
92 		struct DSP_UUID *pUuid;
93 		DSP_DCDOBJTYPE objType;
94 		CHAR *pszPathName;
95 	} ARGS_MGR_REGISTEROBJECT;
96 
97 	struct {
98 		struct DSP_UUID *pUuid;
99 		DSP_DCDOBJTYPE objType;
100 	} ARGS_MGR_UNREGISTEROBJECT;
101 
102 	struct {
103 		struct DSP_NOTIFICATION* *aNotifications;
104 		UINT uCount;
105 		UINT *puIndex;
106 		UINT uTimeout;
107 	} ARGS_MGR_WAIT;
108 
109 	/* PROC Module */
110 	struct {
111 		UINT uProcessor;
112 		struct DSP_PROCESSORATTRIN *pAttrIn;
113 		DSP_HPROCESSOR *phProcessor;
114 	} ARGS_PROC_ATTACH;
115 
116 	struct {
117 		DSP_HPROCESSOR hProcessor;
118 		ULONG dwCmd;
119 		struct DSP_CBDATA *pArgs;
120 	} ARGS_PROC_CTRL;
121 
122 	struct {
123 		DSP_HPROCESSOR hProcessor;
124 	} ARGS_PROC_DETACH;
125 
126 	struct {
127 		DSP_HPROCESSOR hProcessor;
128 		DSP_HNODE *aNodeTab;
129 		UINT uNodeTabSize;
130 		UINT *puNumNodes;
131 		UINT *puAllocated;
132 	} ARGS_PROC_ENUMNODE_INFO;
133 
134 	struct {
135 		DSP_HPROCESSOR hProcessor;
136 		UINT uResourceType;
137 		struct DSP_RESOURCEINFO *pResourceInfo;
138 		UINT uResourceInfoSize;
139 	} ARGS_PROC_ENUMRESOURCES;
140 
141 	struct {
142 		DSP_HPROCESSOR hProcessor;
143 		struct DSP_PROCESSORSTATE *pProcStatus;
144 		UINT uStateInfoSize;
145 	} ARGS_PROC_GETSTATE;
146 
147 	struct {
148 		DSP_HPROCESSOR hProcessor;
149 		BYTE *pBuf;
150 
151 	#ifndef RES_CLEANUP_DISABLE
152 	    BYTE *  pSize;
153     #endif
154 		UINT uMaxSize;
155 	} ARGS_PROC_GETTRACE;
156 
157 	struct {
158 		DSP_HPROCESSOR hProcessor;
159 		INT iArgc;
160 		CHAR **aArgv;
161 		CHAR **aEnvp;
162 	} ARGS_PROC_LOAD;
163 
164 	struct {
165 		DSP_HPROCESSOR hProcessor;
166 		UINT uEventMask;
167 		UINT uNotifyType;
168 		struct DSP_NOTIFICATION* hNotification;
169 	} ARGS_PROC_REGISTER_NOTIFY;
170 
171 	struct {
172 		DSP_HPROCESSOR hProcessor;
173 	} ARGS_PROC_START;
174 
175 	struct {
176 		DSP_HPROCESSOR hProcessor;
177 		ULONG ulSize;
178 		PVOID *ppRsvAddr;
179 	} ARGS_PROC_RSVMEM;
180 
181 	struct {
182 		DSP_HPROCESSOR hProcessor;
183 		ULONG ulSize;
184 		PVOID pRsvAddr;
185 	} ARGS_PROC_UNRSVMEM;
186 
187 	struct {
188 		DSP_HPROCESSOR hProcessor;
189 		PVOID pMpuAddr;
190 		ULONG ulSize;
191 		PVOID pReqAddr;
192 		PVOID *ppMapAddr;
193 		ULONG ulMapAttr;
194 	} ARGS_PROC_MAPMEM;
195 
196 	struct {
197 		DSP_HPROCESSOR hProcessor;
198 		ULONG ulSize;
199 		PVOID pMapAddr;
200 	} ARGS_PROC_UNMAPMEM;
201 
202 	struct {
203 		DSP_HPROCESSOR hProcessor;
204 		PVOID pMpuAddr;
205 		ULONG ulSize;
206 		ULONG ulFlags;
207 	} ARGS_PROC_FLUSHMEMORY;
208 
209 	struct {
210 		DSP_HPROCESSOR hProcessor;
211 	} ARGS_PROC_STOP;
212 
213 	struct {
214                 DSP_HPROCESSOR hProcessor;
215                 PVOID pMpuAddr;
216                 ULONG ulSize;
217         } ARGS_PROC_INVALIDATEMEMORY;
218 
219 
220 	/* NODE Module */
221 	struct {
222 		DSP_HPROCESSOR hProcessor;
223 		struct DSP_UUID *pNodeID;
224 		struct DSP_CBDATA *pArgs;
225 		struct DSP_NODEATTRIN *pAttrIn;
226 		DSP_HNODE *phNode;
227 	} ARGS_NODE_ALLOCATE;
228 
229 	struct {
230 		DSP_HNODE hNode;
231 		UINT uSize;
232 		struct DSP_BUFFERATTR *pAttr;
233 		BYTE **pBuffer;
234 	} ARGS_NODE_ALLOCMSGBUF;
235 
236 	struct {
237 		DSP_HNODE hNode;
238 		INT iPriority;
239 	} ARGS_NODE_CHANGEPRIORITY;
240 
241 	struct {
242 		DSP_HNODE hNode;
243 		UINT uStream;
244 		DSP_HNODE hOtherNode;
245 		UINT uOtherStream;
246 		struct DSP_STRMATTR *pAttrs;
247 		struct DSP_CBDATA *pConnParam;
248 	} ARGS_NODE_CONNECT;
249 
250 	struct {
251 		DSP_HNODE hNode;
252 	} ARGS_NODE_CREATE;
253 
254 	struct {
255 		DSP_HNODE hNode;
256 	} ARGS_NODE_DELETE;
257 
258 	struct {
259 		DSP_HNODE hNode;
260 		struct DSP_BUFFERATTR *pAttr;
261 		BYTE *pBuffer;
262 	} ARGS_NODE_FREEMSGBUF;
263 
264 	struct {
265 		DSP_HNODE hNode;
266 		struct DSP_NODEATTR *pAttr;
267 		UINT uAttrSize;
268 	} ARGS_NODE_GETATTR;
269 
270 	struct {
271 		DSP_HNODE hNode;
272 		struct DSP_MSG *pMessage;
273 		UINT uTimeout;
274 	} ARGS_NODE_GETMESSAGE;
275 
276 	struct {
277 		DSP_HNODE hNode;
278 	} ARGS_NODE_PAUSE;
279 
280 	struct {
281 		DSP_HNODE hNode;
282 		struct DSP_MSG *pMessage;
283 		UINT uTimeout;
284 	} ARGS_NODE_PUTMESSAGE;
285 
286 	struct {
287 		DSP_HNODE hNode;
288 		UINT uEventMask;
289 		UINT uNotifyType;
290 		struct DSP_NOTIFICATION* hNotification;
291 	} ARGS_NODE_REGISTERNOTIFY;
292 
293 	struct {
294 		DSP_HNODE hNode;
295 	} ARGS_NODE_RUN;
296 
297 	struct {
298 		DSP_HNODE hNode;
299 		DSP_STATUS *pStatus;
300 	} ARGS_NODE_TERMINATE;
301 
302 	struct {
303 		DSP_HPROCESSOR hProcessor;
304 		struct DSP_UUID *pNodeID;
305 		struct DSP_NDBPROPS *pNodeProps;
306 	} ARGS_NODE_GETUUIDPROPS;
307 
308         /* STRM module */
309 
310 	struct {
311 		DSP_HSTREAM hStream;
312 		UINT uSize;
313 		BYTE **apBuffer;
314 		UINT uNumBufs;
315 	} ARGS_STRM_ALLOCATEBUFFER;
316 
317 	struct {
318 		DSP_HSTREAM hStream;
319 	} ARGS_STRM_CLOSE;
320 
321 	struct {
322 		DSP_HSTREAM hStream;
323 		BYTE **apBuffer;
324 		UINT uNumBufs;
325 	} ARGS_STRM_FREEBUFFER;
326 
327 	struct {
328 		DSP_HSTREAM hStream;
329 		HANDLE *phEvent;
330 	} ARGS_STRM_GETEVENTHANDLE;
331 
332 	struct {
333 		DSP_HSTREAM hStream;
334 		struct STRM_INFO *pStreamInfo;
335 		UINT uStreamInfoSize;
336 	} ARGS_STRM_GETINFO;
337 
338 	struct {
339 		DSP_HSTREAM hStream;
340 		bool bFlush;
341 	} ARGS_STRM_IDLE;
342 
343 	struct {
344 		DSP_HSTREAM hStream;
345 		BYTE *pBuffer;
346 		ULONG dwBytes;
347 		ULONG dwBufSize;
348 		DWORD dwArg;
349 	} ARGS_STRM_ISSUE;
350 
351 	struct {
352 		DSP_HNODE hNode;
353 		UINT uDirection;
354 		UINT uIndex;
355 		struct STRM_ATTR *pAttrIn;
356 		DSP_HSTREAM *phStream;
357 	} ARGS_STRM_OPEN;
358 
359 	struct {
360 		DSP_HSTREAM hStream;
361 		BYTE **pBufPtr;
362 		ULONG *pBytes;
363 		ULONG *pBufSize;
364 		DWORD *pdwArg;
365 	} ARGS_STRM_RECLAIM;
366 
367 	struct {
368 		DSP_HSTREAM hStream;
369 		UINT uEventMask;
370 		UINT uNotifyType;
371 		struct DSP_NOTIFICATION* hNotification;
372 	} ARGS_STRM_REGISTERNOTIFY;
373 
374 	struct {
375 		DSP_HSTREAM *aStreamTab;
376 		UINT nStreams;
377 		UINT *pMask;
378 		UINT uTimeout;
379 	} ARGS_STRM_SELECT;
380 
381 	/* CMM Module */
382 	struct {
383 		struct CMM_OBJECT* hCmmMgr;
384 		UINT uSize;
385 		struct CMM_ATTRS *pAttrs;
386 		OUT PVOID *ppBufVA;
387 	} ARGS_CMM_ALLOCBUF;
388 
389 	struct {
390 		struct CMM_OBJECT* hCmmMgr;
391 		PVOID pBufPA;
392 		ULONG ulSegId;
393 	} ARGS_CMM_FREEBUF;
394 
395 	struct {
396 		DSP_HPROCESSOR hProcessor;
397 		struct CMM_OBJECT* *phCmmMgr;
398 	} ARGS_CMM_GETHANDLE;
399 
400 	struct {
401 		struct CMM_OBJECT* hCmmMgr;
402 		struct CMM_INFO *pCmmInfo;
403 	} ARGS_CMM_GETINFO;
404 
405 	/* MEM Module */
406 	struct {
407 		ULONG cBytes;
408 		MEM_POOLATTRS type;
409 		PVOID pMem;
410 	} ARGS_MEM_ALLOC;
411 
412 	struct {
413 		ULONG cBytes;
414 		MEM_POOLATTRS type;
415 		PVOID pMem;
416 	} ARGS_MEM_CALLOC;
417 
418 	struct {
419 		PVOID pMem;
420 	} ARGS_MEM_FREE;
421 
422 	struct {
423 		PVOID pBuffer;
424 		ULONG cSize;
425 		PVOID pLockedBuffer;
426 	} ARGS_MEM_PAGELOCK;
427 
428 	struct {
429 		PVOID pBuffer;
430 		ULONG cSize;
431 	} ARGS_MEM_PAGEUNLOCK;
432 
433 	/* UTIL module */
434 	struct {
435 		INT cArgc;
436 		CHAR **ppArgv;
437 	} ARGS_UTIL_TESTDLL;
438 
439 } Trapped_Args;
440 
441 #define CMD_BASE                    100
442 
443 /* MGR module offsets */
444 #define CMD_MGR_BASE_OFFSET             CMD_BASE
445 #define CMD_MGR_ENUMNODE_INFO_OFFSET    (CMD_MGR_BASE_OFFSET + 0)
446 #define CMD_MGR_ENUMPROC_INFO_OFFSET    (CMD_MGR_BASE_OFFSET + 1)
447 #define CMD_MGR_REGISTEROBJECT_OFFSET   (CMD_MGR_BASE_OFFSET + 2)
448 #define CMD_MGR_UNREGISTEROBJECT_OFFSET (CMD_MGR_BASE_OFFSET + 3)
449 #define CMD_MGR_WAIT_OFFSET             (CMD_MGR_BASE_OFFSET + 4)
450 
451 #ifndef RES_CLEANUP_DISABLE
452 #define CMD_MGR_RESOUCES_OFFSET         (CMD_MGR_BASE_OFFSET + 5)
453 #define CMD_MGR_END_OFFSET              CMD_MGR_RESOUCES_OFFSET
454 #else
455 #define CMD_MGR_END_OFFSET              CMD_MGR_WAIT_OFFSET
456 #endif
457 
458 #define CMD_PROC_BASE_OFFSET            (CMD_MGR_END_OFFSET + 1)
459 #define CMD_PROC_ATTACH_OFFSET          (CMD_PROC_BASE_OFFSET + 0)
460 #define CMD_PROC_CTRL_OFFSET            (CMD_PROC_BASE_OFFSET + 1)
461 #define CMD_PROC_DETACH_OFFSET          (CMD_PROC_BASE_OFFSET + 2)
462 #define CMD_PROC_ENUMNODE_OFFSET        (CMD_PROC_BASE_OFFSET + 3)
463 #define CMD_PROC_ENUMRESOURCES_OFFSET   (CMD_PROC_BASE_OFFSET + 4)
464 #define CMD_PROC_GETSTATE_OFFSET        (CMD_PROC_BASE_OFFSET + 5)
465 #define CMD_PROC_GETTRACE_OFFSET        (CMD_PROC_BASE_OFFSET + 6)
466 #define CMD_PROC_LOAD_OFFSET            (CMD_PROC_BASE_OFFSET + 7)
467 #define CMD_PROC_REGISTERNOTIFY_OFFSET  (CMD_PROC_BASE_OFFSET + 8)
468 #define CMD_PROC_START_OFFSET           (CMD_PROC_BASE_OFFSET + 9)
469 #define CMD_PROC_RSVMEM_OFFSET          (CMD_PROC_BASE_OFFSET + 10)
470 #define CMD_PROC_UNRSVMEM_OFFSET        (CMD_PROC_BASE_OFFSET + 11)
471 #define CMD_PROC_MAPMEM_OFFSET          (CMD_PROC_BASE_OFFSET + 12)
472 #define CMD_PROC_UNMAPMEM_OFFSET        (CMD_PROC_BASE_OFFSET + 13)
473 #define CMD_PROC_FLUSHMEMORY_OFFSET      (CMD_PROC_BASE_OFFSET + 14)
474 #define CMD_PROC_STOP_OFFSET            (CMD_PROC_BASE_OFFSET + 15)
475 #define CMD_PROC_INVALIDATEMEMORY_OFFSET (CMD_PROC_BASE_OFFSET + 16)
476 #define CMD_PROC_END_OFFSET             CMD_PROC_INVALIDATEMEMORY_OFFSET
477 
478 
479 #define CMD_NODE_BASE_OFFSET            (CMD_PROC_END_OFFSET + 1)
480 #define CMD_NODE_ALLOCATE_OFFSET        (CMD_NODE_BASE_OFFSET + 0)
481 #define CMD_NODE_ALLOCMSGBUF_OFFSET     (CMD_NODE_BASE_OFFSET + 1)
482 #define CMD_NODE_CHANGEPRIORITY_OFFSET  (CMD_NODE_BASE_OFFSET + 2)
483 #define CMD_NODE_CONNECT_OFFSET         (CMD_NODE_BASE_OFFSET + 3)
484 #define CMD_NODE_CREATE_OFFSET          (CMD_NODE_BASE_OFFSET + 4)
485 #define CMD_NODE_DELETE_OFFSET          (CMD_NODE_BASE_OFFSET + 5)
486 #define CMD_NODE_FREEMSGBUF_OFFSET      (CMD_NODE_BASE_OFFSET + 6)
487 #define CMD_NODE_GETATTR_OFFSET         (CMD_NODE_BASE_OFFSET + 7)
488 #define CMD_NODE_GETMESSAGE_OFFSET      (CMD_NODE_BASE_OFFSET + 8)
489 #define CMD_NODE_PAUSE_OFFSET           (CMD_NODE_BASE_OFFSET + 9)
490 #define CMD_NODE_PUTMESSAGE_OFFSET      (CMD_NODE_BASE_OFFSET + 10)
491 #define CMD_NODE_REGISTERNOTIFY_OFFSET  (CMD_NODE_BASE_OFFSET + 11)
492 #define CMD_NODE_RUN_OFFSET             (CMD_NODE_BASE_OFFSET + 12)
493 #define CMD_NODE_TERMINATE_OFFSET       (CMD_NODE_BASE_OFFSET + 13)
494 #define CMD_NODE_GETUUIDPROPS_OFFSET    (CMD_NODE_BASE_OFFSET + 14)
495 #define CMD_NODE_END_OFFSET             CMD_NODE_GETUUIDPROPS_OFFSET
496 
497 #define CMD_STRM_BASE_OFFSET            (CMD_NODE_END_OFFSET + 1)
498 #define CMD_STRM_ALLOCATEBUFFER_OFFSET  (CMD_STRM_BASE_OFFSET + 0)
499 #define CMD_STRM_CLOSE_OFFSET           (CMD_STRM_BASE_OFFSET + 1)
500 #define CMD_STRM_FREEBUFFER_OFFSET      (CMD_STRM_BASE_OFFSET + 2)
501 #define CMD_STRM_GETEVENTHANDLE_OFFSET  (CMD_STRM_BASE_OFFSET + 3)
502 #define CMD_STRM_GETINFO_OFFSET         (CMD_STRM_BASE_OFFSET + 4)
503 #define CMD_STRM_IDLE_OFFSET            (CMD_STRM_BASE_OFFSET + 5)
504 #define CMD_STRM_ISSUE_OFFSET           (CMD_STRM_BASE_OFFSET + 6)
505 #define CMD_STRM_OPEN_OFFSET            (CMD_STRM_BASE_OFFSET + 7)
506 #define CMD_STRM_RECLAIM_OFFSET         (CMD_STRM_BASE_OFFSET + 8)
507 #define CMD_STRM_REGISTERNOTIFY_OFFSET  (CMD_STRM_BASE_OFFSET + 9)
508 #define CMD_STRM_SELECT_OFFSET          (CMD_STRM_BASE_OFFSET + 10)
509 #define CMD_STRM_END_OFFSET             CMD_STRM_SELECT_OFFSET
510 
511 /* Communication Memory Manager (UCMM) */
512 #define CMD_CMM_BASE_OFFSET             (CMD_STRM_END_OFFSET + 1)
513 #define CMD_CMM_ALLOCBUF_OFFSET         (CMD_CMM_BASE_OFFSET + 0)
514 #define CMD_CMM_FREEBUF_OFFSET          (CMD_CMM_BASE_OFFSET + 1)
515 #define CMD_CMM_GETHANDLE_OFFSET        (CMD_CMM_BASE_OFFSET + 2)
516 #define CMD_CMM_GETINFO_OFFSET          (CMD_CMM_BASE_OFFSET + 3)
517 #define CMD_CMM_END_OFFSET              CMD_CMM_GETINFO_OFFSET
518 
519 /* MEMRY module offsets */
520 #define CMD_MEM_BASE_OFFSET             (CMD_CMM_END_OFFSET + 1)
521 #define CMD_MEM_ALLOC_OFFSET            (CMD_MEM_BASE_OFFSET + 0)
522 #define CMD_MEM_CALLOC_OFFSET           (CMD_MEM_BASE_OFFSET + 1)
523 #define CMD_MEM_FREE_OFFSET             (CMD_MEM_BASE_OFFSET + 2)
524 #define CMD_MEM_PAGELOCK_OFFSET         (CMD_MEM_BASE_OFFSET + 3)
525 #define CMD_MEM_PAGEUNLOCK_OFFSET       (CMD_MEM_BASE_OFFSET + 4)
526 #define CMD_MEM_END_OFFSET              CMD_MEM_PAGEUNLOCK_OFFSET
527 
528 /* UTIL module */
529 #define CMD_UTIL_BASE_OFFSET            (CMD_MEM_END_OFFSET + 1)
530 #define CMD_UTIL_TESTDLL_OFFSET         (CMD_UTIL_BASE_OFFSET + 0)
531 #define CMD_UTIL_END_OFFSET             CMD_UTIL_TESTDLL_OFFSET
532 
533 /* !!! place all command modules before CMD_BASE_END_OFFSET */
534 #define CMD_BASE_END_OFFSET             CMD_UTIL_END_OFFSET
535 
536 #endif				/* WCDIOCTL_ */
537