aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/pvr/services4/srvkm/include/pdump_km.h')
-rw-r--r--drivers/gpu/pvr/services4/srvkm/include/pdump_km.h446
1 files changed, 446 insertions, 0 deletions
diff --git a/drivers/gpu/pvr/services4/srvkm/include/pdump_km.h b/drivers/gpu/pvr/services4/srvkm/include/pdump_km.h
new file mode 100644
index 000000000000..4d62154fb66f
--- /dev/null
+++ b/drivers/gpu/pvr/services4/srvkm/include/pdump_km.h
@@ -0,0 +1,446 @@
1/*************************************************************************/ /*!
2@Title pdump functions
3@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
4@Description Main APIs for pdump functions
5@License Dual MIT/GPLv2
6
7The contents of this file are subject to the MIT license as set out below.
8
9Permission is hereby granted, free of charge, to any person obtaining a copy
10of this software and associated documentation files (the "Software"), to deal
11in the Software without restriction, including without limitation the rights
12to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13copies of the Software, and to permit persons to whom the Software is
14furnished to do so, subject to the following conditions:
15
16The above copyright notice and this permission notice shall be included in
17all copies or substantial portions of the Software.
18
19Alternatively, the contents of this file may be used under the terms of
20the GNU General Public License Version 2 ("GPL") in which case the provisions
21of GPL are applicable instead of those above.
22
23If you wish to allow use of your version of this file only under the terms of
24GPL, and not to allow others to use your version of this file under the terms
25of the MIT license, indicate your decision by deleting the provisions above
26and replace them with the notice and other provisions required by GPL as set
27out in the file called "GPL-COPYING" included in this distribution. If you do
28not delete the provisions above, a recipient may use your version of this file
29under the terms of either the MIT license or GPL.
30
31This License is also included in this distribution in the file called
32"MIT-COPYING".
33
34EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
35PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
36BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
37PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
38COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
39IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
40CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41*/ /**************************************************************************/
42#ifndef _PDUMP_KM_H_
43#define _PDUMP_KM_H_
44
45
46/*
47 * Include the OS abstraction APIs
48 */
49#include "pdump_osfunc.h"
50
51#if defined(__cplusplus)
52extern "C" {
53#endif
54
55/*
56 * Pull in pdump flags from services include
57 */
58#include "pdump.h"
59
60#define PDUMP_PD_UNIQUETAG (IMG_HANDLE)0
61#define PDUMP_PT_UNIQUETAG (IMG_HANDLE)0
62
63/*
64 * PDump streams (common to all OSes)
65 */
66#define PDUMP_STREAM_PARAM2 0
67#define PDUMP_STREAM_SCRIPT2 1
68#define PDUMP_STREAM_DRIVERINFO 2
69#define PDUMP_NUM_STREAMS 3
70
71#if defined(PDUMP_DEBUG_OUTFILES)
72/* counter increments each time debug write is called */
73extern IMG_UINT32 g_ui32EveryLineCounter;
74#endif
75
76#ifndef PDUMP
77#define MAKEUNIQUETAG(hMemInfo) (0)
78#endif
79
80IMG_BOOL _PDumpIsProcessActive(IMG_VOID);
81
82IMG_BOOL PDumpWillCapture(IMG_UINT32 ui32Flags);
83
84#ifdef PDUMP
85
86#define MAKEUNIQUETAG(hMemInfo) (((BM_BUF *)(((PVRSRV_KERNEL_MEM_INFO *)(hMemInfo))->sMemBlk.hBuffer))->pMapping)
87
88 IMG_IMPORT PVRSRV_ERROR PDumpMemPolKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo,
89 IMG_UINT32 ui32Offset,
90 IMG_UINT32 ui32Value,
91 IMG_UINT32 ui32Mask,
92 PDUMP_POLL_OPERATOR eOperator,
93 IMG_UINT32 ui32Flags,
94 IMG_HANDLE hUniqueTag);
95
96 IMG_IMPORT PVRSRV_ERROR PDumpMemUM(PVRSRV_PER_PROCESS_DATA *psProcData,
97 IMG_PVOID pvAltLinAddr,
98 IMG_PVOID pvLinAddr,
99 PVRSRV_KERNEL_MEM_INFO *psMemInfo,
100 IMG_UINT32 ui32Offset,
101 IMG_UINT32 ui32Bytes,
102 IMG_UINT32 ui32Flags,
103 IMG_HANDLE hUniqueTag);
104
105 IMG_IMPORT PVRSRV_ERROR PDumpMemKM(IMG_PVOID pvAltLinAddr,
106 PVRSRV_KERNEL_MEM_INFO *psMemInfo,
107 IMG_UINT32 ui32Offset,
108 IMG_UINT32 ui32Bytes,
109 IMG_UINT32 ui32Flags,
110 IMG_HANDLE hUniqueTag);
111 PVRSRV_ERROR PDumpMemPagesKM(PVRSRV_DEVICE_IDENTIFIER *psDevID,
112 IMG_DEV_PHYADDR *pPages,
113 IMG_UINT32 ui32NumPages,
114 IMG_DEV_VIRTADDR sDevAddr,
115 IMG_UINT32 ui32Start,
116 IMG_UINT32 ui32Length,
117 IMG_UINT32 ui32Flags,
118 IMG_HANDLE hUniqueTag);
119
120 PVRSRV_ERROR PDumpMemPDEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib,
121 IMG_HANDLE hOSMemHandle,
122 IMG_CPU_VIRTADDR pvLinAddr,
123 IMG_UINT32 ui32Bytes,
124 IMG_UINT32 ui32Flags,
125 IMG_BOOL bInitialisePages,
126 IMG_HANDLE hUniqueTag1,
127 IMG_HANDLE hUniqueTag2);
128
129 PVRSRV_ERROR PDumpMemPTEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib,
130 IMG_HANDLE hOSMemHandle,
131 IMG_CPU_VIRTADDR pvLinAddr,
132 IMG_UINT32 ui32Bytes,
133 IMG_UINT32 ui32Flags,
134 IMG_BOOL bInitialisePages,
135 IMG_HANDLE hUniqueTag1,
136 IMG_HANDLE hUniqueTag2);
137 IMG_VOID PDumpInitCommon(IMG_VOID);
138 IMG_VOID PDumpDeInitCommon(IMG_VOID);
139 IMG_VOID PDumpInit(IMG_VOID);
140 IMG_VOID PDumpDeInit(IMG_VOID);
141 IMG_BOOL PDumpIsSuspended(IMG_VOID);
142 PVRSRV_ERROR PDumpStartInitPhaseKM(IMG_VOID);
143 PVRSRV_ERROR PDumpStopInitPhaseKM(IMG_VOID);
144 IMG_IMPORT PVRSRV_ERROR PDumpSetFrameKM(IMG_UINT32 ui32Frame);
145 IMG_IMPORT PVRSRV_ERROR PDumpCommentKM(IMG_CHAR *pszComment, IMG_UINT32 ui32Flags);
146 IMG_IMPORT PVRSRV_ERROR PDumpDriverInfoKM(IMG_CHAR *pszString, IMG_UINT32 ui32Flags);
147
148 PVRSRV_ERROR PDumpRegWithFlagsKM(IMG_CHAR *pszPDumpRegName,
149 IMG_UINT32 ui32RegAddr,
150 IMG_UINT32 ui32RegValue,
151 IMG_UINT32 ui32Flags);
152 PVRSRV_ERROR PDumpRegPolWithFlagsKM(IMG_CHAR *pszPDumpRegName,
153 IMG_UINT32 ui32RegAddr,
154 IMG_UINT32 ui32RegValue,
155 IMG_UINT32 ui32Mask,
156 IMG_UINT32 ui32Flags,
157 PDUMP_POLL_OPERATOR eOperator);
158 PVRSRV_ERROR PDumpRegPolKM(IMG_CHAR *pszPDumpRegName,
159 IMG_UINT32 ui32RegAddr,
160 IMG_UINT32 ui32RegValue,
161 IMG_UINT32 ui32Mask,
162 PDUMP_POLL_OPERATOR eOperator);
163
164 IMG_IMPORT PVRSRV_ERROR PDumpBitmapKM(PVRSRV_DEVICE_NODE *psDeviceNode,
165 IMG_CHAR *pszFileName,
166 IMG_UINT32 ui32FileOffset,
167 IMG_UINT32 ui32Width,
168 IMG_UINT32 ui32Height,
169 IMG_UINT32 ui32StrideInBytes,
170 IMG_DEV_VIRTADDR sDevBaseAddr,
171 IMG_HANDLE hDevMemContext,
172 IMG_UINT32 ui32Size,
173 PDUMP_PIXEL_FORMAT ePixelFormat,
174 PDUMP_MEM_FORMAT eMemFormat,
175 IMG_UINT32 ui32PDumpFlags);
176 IMG_IMPORT PVRSRV_ERROR PDumpReadRegKM(IMG_CHAR *pszPDumpRegName,
177 IMG_CHAR *pszFileName,
178 IMG_UINT32 ui32FileOffset,
179 IMG_UINT32 ui32Address,
180 IMG_UINT32 ui32Size,
181 IMG_UINT32 ui32PDumpFlags);
182
183 PVRSRV_ERROR PDumpRegKM(IMG_CHAR* pszPDumpRegName,
184 IMG_UINT32 dwReg,
185 IMG_UINT32 dwData);
186
187 PVRSRV_ERROR PDumpComment(IMG_CHAR* pszFormat, ...) IMG_FORMAT_PRINTF(1, 2);
188 PVRSRV_ERROR PDumpCommentWithFlags(IMG_UINT32 ui32Flags,
189 IMG_CHAR* pszFormat,
190 ...) IMG_FORMAT_PRINTF(2, 3);
191
192 PVRSRV_ERROR PDumpPDReg(PDUMP_MMU_ATTRIB *psMMUAttrib,
193 IMG_UINT32 ui32Reg,
194 IMG_UINT32 ui32dwData,
195 IMG_HANDLE hUniqueTag);
196 PVRSRV_ERROR PDumpPDRegWithFlags(PDUMP_MMU_ATTRIB *psMMUAttrib,
197 IMG_UINT32 ui32Reg,
198 IMG_UINT32 ui32Data,
199 IMG_UINT32 ui32Flags,
200 IMG_HANDLE hUniqueTag);
201
202 IMG_BOOL PDumpIsLastCaptureFrameKM(IMG_VOID);
203 IMG_IMPORT IMG_BOOL PDumpIsCaptureFrameKM(IMG_VOID);
204
205 IMG_VOID PDumpMallocPagesPhys(PVRSRV_DEVICE_IDENTIFIER *psDevID,
206 IMG_UINT32 ui32DevVAddr,
207 IMG_PUINT32 pui32PhysPages,
208 IMG_UINT32 ui32NumPages,
209 IMG_HANDLE hUniqueTag);
210 PVRSRV_ERROR PDumpSetMMUContext(PVRSRV_DEVICE_TYPE eDeviceType,
211 IMG_CHAR *pszMemSpace,
212 IMG_UINT32 *pui32MMUContextID,
213 IMG_UINT32 ui32MMUType,
214 IMG_HANDLE hUniqueTag1,
215 IMG_HANDLE hOSMemHandle,
216 IMG_VOID *pvPDCPUAddr);
217 PVRSRV_ERROR PDumpClearMMUContext(PVRSRV_DEVICE_TYPE eDeviceType,
218 IMG_CHAR *pszMemSpace,
219 IMG_UINT32 ui32MMUContextID,
220 IMG_UINT32 ui32MMUType);
221
222 PVRSRV_ERROR PDumpPDDevPAddrKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo,
223 IMG_UINT32 ui32Offset,
224 IMG_DEV_PHYADDR sPDDevPAddr,
225 IMG_HANDLE hUniqueTag1,
226 IMG_HANDLE hUniqueTag2);
227
228 IMG_BOOL PDumpTestNextFrame(IMG_UINT32 ui32CurrentFrame);
229
230 PVRSRV_ERROR PDumpSaveMemKM (PVRSRV_DEVICE_IDENTIFIER *psDevId,
231 IMG_CHAR *pszFileName,
232 IMG_UINT32 ui32FileOffset,
233 IMG_DEV_VIRTADDR sDevBaseAddr,
234 IMG_UINT32 ui32Size,
235 IMG_UINT32 ui32DataMaster,
236 IMG_UINT32 ui32PDumpFlags);
237
238 PVRSRV_ERROR PDumpTASignatureRegisters(PVRSRV_DEVICE_IDENTIFIER *psDevId,
239 IMG_UINT32 ui32DumpFrameNum,
240 IMG_UINT32 ui32TAKickCount,
241 IMG_BOOL bLastFrame,
242 IMG_UINT32 *pui32Registers,
243 IMG_UINT32 ui32NumRegisters);
244
245 PVRSRV_ERROR PDump3DSignatureRegisters(PVRSRV_DEVICE_IDENTIFIER *psDevId,
246 IMG_UINT32 ui32DumpFrameNum,
247 IMG_BOOL bLastFrame,
248 IMG_UINT32 *pui32Registers,
249 IMG_UINT32 ui32NumRegisters);
250
251 PVRSRV_ERROR PDumpCounterRegisters(PVRSRV_DEVICE_IDENTIFIER *psDevId,
252 IMG_UINT32 ui32DumpFrameNum,
253 IMG_BOOL bLastFrame,
254 IMG_UINT32 *pui32Registers,
255 IMG_UINT32 ui32NumRegisters);
256
257 PVRSRV_ERROR PDumpRegRead(IMG_CHAR *pszPDumpRegName,
258 const IMG_UINT32 dwRegOffset,
259 IMG_UINT32 ui32Flags);
260
261 PVRSRV_ERROR PDumpCycleCountRegRead(PVRSRV_DEVICE_IDENTIFIER *psDevId,
262 const IMG_UINT32 dwRegOffset,
263 IMG_BOOL bLastFrame);
264
265 PVRSRV_ERROR PDumpIDLWithFlags(IMG_UINT32 ui32Clocks, IMG_UINT32 ui32Flags);
266 PVRSRV_ERROR PDumpIDL(IMG_UINT32 ui32Clocks);
267
268 PVRSRV_ERROR PDumpMallocPages(PVRSRV_DEVICE_IDENTIFIER *psDevID,
269 IMG_UINT32 ui32DevVAddr,
270 IMG_CPU_VIRTADDR pvLinAddr,
271 IMG_HANDLE hOSMemHandle,
272 IMG_UINT32 ui32NumBytes,
273 IMG_UINT32 ui32PageSize,
274 IMG_HANDLE hUniqueTag,
275 IMG_UINT32 ui32Flags);
276 PVRSRV_ERROR PDumpMallocPageTable(PVRSRV_DEVICE_IDENTIFIER *psDevId,
277 IMG_HANDLE hOSMemHandle,
278 IMG_UINT32 ui32Offset,
279 IMG_CPU_VIRTADDR pvLinAddr,
280 IMG_UINT32 ui32NumBytes,
281 IMG_UINT32 ui32Flags,
282 IMG_HANDLE hUniqueTag);
283 PVRSRV_ERROR PDumpFreePages(struct _BM_HEAP_ *psBMHeap,
284 IMG_DEV_VIRTADDR sDevVAddr,
285 IMG_UINT32 ui32NumBytes,
286 IMG_UINT32 ui32PageSize,
287 IMG_HANDLE hUniqueTag,
288 IMG_BOOL bInterleaved,
289 IMG_BOOL bSparse,
290 IMG_UINT32 ui32Flags);
291 PVRSRV_ERROR PDumpFreePageTable(PVRSRV_DEVICE_IDENTIFIER *psDevID,
292 IMG_HANDLE hOSMemHandle,
293 IMG_CPU_VIRTADDR pvLinAddr,
294 IMG_UINT32 ui32NumBytes,
295 IMG_UINT32 ui32Flags,
296 IMG_HANDLE hUniqueTag);
297
298 IMG_IMPORT PVRSRV_ERROR PDumpHWPerfCBKM(PVRSRV_DEVICE_IDENTIFIER *psDevId,
299 IMG_CHAR *pszFileName,
300 IMG_UINT32 ui32FileOffset,
301 IMG_DEV_VIRTADDR sDevBaseAddr,
302 IMG_UINT32 ui32Size,
303 IMG_UINT32 ui32MMUContextID,
304 IMG_UINT32 ui32PDumpFlags);
305
306 PVRSRV_ERROR PDumpSignatureBuffer(PVRSRV_DEVICE_IDENTIFIER *psDevId,
307 IMG_CHAR *pszFileName,
308 IMG_CHAR *pszBufferType,
309 IMG_UINT32 ui32FileOffset,
310 IMG_DEV_VIRTADDR sDevBaseAddr,
311 IMG_UINT32 ui32Size,
312 IMG_UINT32 ui32MMUContextID,
313 IMG_UINT32 ui32PDumpFlags);
314
315 PVRSRV_ERROR PDumpCBP(PPVRSRV_KERNEL_MEM_INFO psROffMemInfo,
316 IMG_UINT32 ui32ROffOffset,
317 IMG_UINT32 ui32WPosVal,
318 IMG_UINT32 ui32PacketSize,
319 IMG_UINT32 ui32BufferSize,
320 IMG_UINT32 ui32Flags,
321 IMG_HANDLE hUniqueTag);
322
323 PVRSRV_ERROR PDumpRegBasedCBP(IMG_CHAR *pszPDumpRegName,
324 IMG_UINT32 ui32RegOffset,
325 IMG_UINT32 ui32WPosVal,
326 IMG_UINT32 ui32PacketSize,
327 IMG_UINT32 ui32BufferSize,
328 IMG_UINT32 ui32Flags);
329
330 IMG_VOID PDumpVGXMemToFile(IMG_CHAR *pszFileName,
331 IMG_UINT32 ui32FileOffset,
332 PVRSRV_KERNEL_MEM_INFO *psMemInfo,
333 IMG_UINT32 uiAddr,
334 IMG_UINT32 ui32Size,
335 IMG_UINT32 ui32PDumpFlags,
336 IMG_HANDLE hUniqueTag);
337
338 IMG_VOID PDumpSuspendKM(IMG_VOID);
339 IMG_VOID PDumpResumeKM(IMG_VOID);
340
341 /* New pdump common functions */
342 PVRSRV_ERROR PDumpStoreMemToFile(PDUMP_MMU_ATTRIB *psMMUAttrib,
343 IMG_CHAR *pszFileName,
344 IMG_UINT32 ui32FileOffset,
345 PVRSRV_KERNEL_MEM_INFO *psMemInfo,
346 IMG_UINT32 uiAddr,
347 IMG_UINT32 ui32Size,
348 IMG_UINT32 ui32PDumpFlags,
349 IMG_HANDLE hUniqueTag);
350
351 #define PDUMPMEMPOL PDumpMemPolKM
352 #define PDUMPMEM PDumpMemKM
353 #define PDUMPMEMPTENTRIES PDumpMemPTEntriesKM
354 #define PDUMPPDENTRIES PDumpMemPDEntriesKM
355 #define PDUMPMEMUM PDumpMemUM
356 #define PDUMPINIT PDumpInitCommon
357 #define PDUMPDEINIT PDumpDeInitCommon
358 #define PDUMPISLASTFRAME PDumpIsLastCaptureFrameKM
359 #define PDUMPTESTFRAME PDumpIsCaptureFrameKM
360 #define PDUMPTESTNEXTFRAME PDumpTestNextFrame
361 #define PDUMPREGWITHFLAGS PDumpRegWithFlagsKM
362 #define PDUMPREG PDumpRegKM
363 #define PDUMPCOMMENT PDumpComment
364 #define PDUMPCOMMENTWITHFLAGS PDumpCommentWithFlags
365 #define PDUMPREGPOL PDumpRegPolKM
366 #define PDUMPREGPOLWITHFLAGS PDumpRegPolWithFlagsKM
367 #define PDUMPMALLOCPAGES PDumpMallocPages
368 #define PDUMPMALLOCPAGETABLE PDumpMallocPageTable
369 #define PDUMPSETMMUCONTEXT PDumpSetMMUContext
370 #define PDUMPCLEARMMUCONTEXT PDumpClearMMUContext
371 #define PDUMPPDDEVPADDR PDumpPDDevPAddrKM
372 #define PDUMPFREEPAGES PDumpFreePages
373 #define PDUMPFREEPAGETABLE PDumpFreePageTable
374 #define PDUMPPDREG PDumpPDReg
375 #define PDUMPPDREGWITHFLAGS PDumpPDRegWithFlags
376 #define PDUMPCBP PDumpCBP
377 #define PDUMPREGBASEDCBP PDumpRegBasedCBP
378 #define PDUMPMALLOCPAGESPHYS PDumpMallocPagesPhys
379 #define PDUMPENDINITPHASE PDumpStopInitPhaseKM
380 #define PDUMPBITMAPKM PDumpBitmapKM
381 #define PDUMPDRIVERINFO PDumpDriverInfoKM
382 #define PDUMPIDLWITHFLAGS PDumpIDLWithFlags
383 #define PDUMPIDL PDumpIDL
384 #define PDUMPSUSPEND PDumpSuspendKM
385 #define PDUMPRESUME PDumpResumeKM
386
387#else
388#if defined LINUX || defined (__QNXNTO__) || defined GCC_IA32 || defined GCC_ARM
389 #define PDUMPMEMPOL(args...)
390 #define PDUMPMEM(args...)
391 #define PDUMPMEMPTENTRIES(args...)
392 #define PDUMPPDENTRIES(args...)
393 #define PDUMPMEMUM(args...)
394 #define PDUMPINIT(args...)
395 #define PDUMPDEINIT(args...)
396 #define PDUMPISLASTFRAME(args...)
397 #define PDUMPTESTFRAME(args...)
398 #define PDUMPTESTNEXTFRAME(args...)
399 #define PDUMPREGWITHFLAGS(args...)
400 #define PDUMPREG(args...)
401 #define PDUMPCOMMENT(args...)
402 #define PDUMPREGPOL(args...)
403 #define PDUMPREGPOLWITHFLAGS(args...)
404 #define PDUMPMALLOCPAGES(args...)
405 #define PDUMPMALLOCPAGETABLE(args...)
406 #define PDUMPSETMMUCONTEXT(args...)
407 #define PDUMPCLEARMMUCONTEXT(args...)
408 #define PDUMPPDDEVPADDR(args...)
409 #define PDUMPFREEPAGES(args...)
410 #define PDUMPFREEPAGETABLE(args...)
411 #define PDUMPPDREG(args...)
412 #define PDUMPPDREGWITHFLAGS(args...)
413 #define PDUMPSYNC(args...)
414 #define PDUMPCOPYTOMEM(args...)
415 #define PDUMPWRITE(args...)
416 #define PDUMPCBP(args...)
417 #define PDUMPREGBASEDCBP(args...)
418 #define PDUMPCOMMENTWITHFLAGS(args...)
419 #define PDUMPMALLOCPAGESPHYS(args...)
420 #define PDUMPENDINITPHASE(args...)
421 #define PDUMPMSVDXREG(args...)
422 #define PDUMPMSVDXREGWRITE(args...)
423 #define PDUMPMSVDXREGREAD(args...)
424 #define PDUMPMSVDXPOLEQ(args...)
425 #define PDUMPMSVDXPOL(args...)
426 #define PDUMPBITMAPKM(args...)
427 #define PDUMPDRIVERINFO(args...)
428 #define PDUMPIDLWITHFLAGS(args...)
429 #define PDUMPIDL(args...)
430 #define PDUMPSUSPEND(args...)
431 #define PDUMPRESUME(args...)
432 #define PDUMPMSVDXWRITEREF(args...)
433 #else
434 #error Compiler not specified
435 #endif
436#endif
437
438#if defined (__cplusplus)
439}
440#endif
441
442#endif /* _PDUMP_KM_H_ */
443
444/******************************************************************************
445 End of file (pdump_km.h)
446******************************************************************************/