diff options
Diffstat (limited to 'pvr-source/tools/intern')
-rwxr-xr-x | pvr-source/tools/intern/debug/client/linuxsrv.h | 64 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/Kbuild.mk | 51 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/Linux.mk | 45 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.c | 2883 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.h | 155 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv_ioctl.h | 57 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/handle.c | 141 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/hostfunc.h | 82 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/hotkey.c | 199 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/hotkey.h | 82 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/common/ioctl.c | 827 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/linux/hostfunc.c | 395 | ||||
-rwxr-xr-x | pvr-source/tools/intern/debug/dbgdriv/linux/main.c | 355 |
13 files changed, 0 insertions, 5336 deletions
diff --git a/pvr-source/tools/intern/debug/client/linuxsrv.h b/pvr-source/tools/intern/debug/client/linuxsrv.h deleted file mode 100755 index d9fd825..0000000 --- a/pvr-source/tools/intern/debug/client/linuxsrv.h +++ /dev/null @@ -1,64 +0,0 @@ -/*************************************************************************/ /*! -@File linuxsrv.h -@Title Module defs for pvr core drivers. -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#ifndef _LINUXSRV_H__ -#define _LINUXSRV_H__ - -typedef struct tagIOCTL_PACKAGE -{ - IMG_UINT32 ui32Cmd; // ioctl command - IMG_UINT32 ui32Size; // needs to be correctly set - IMG_VOID *pInBuffer; // input data buffer - IMG_UINT32 ui32InBufferSize; // size of input data buffer - IMG_VOID *pOutBuffer; // output data buffer - IMG_UINT32 ui32OutBufferSize; // size of output data buffer -} IOCTL_PACKAGE; - -IMG_UINT32 DeviceIoControl(IMG_UINT32 hDevice, - IMG_UINT32 ui32ControlCode, - IMG_VOID *pInBuffer, - IMG_UINT32 ui32InBufferSize, - IMG_VOID *pOutBuffer, - IMG_UINT32 ui32OutBufferSize, - IMG_UINT32 *pui32BytesReturned); - -#endif /* _LINUXSRV_H__*/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/Kbuild.mk b/pvr-source/tools/intern/debug/dbgdriv/Kbuild.mk deleted file mode 100755 index e1e8868..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/Kbuild.mk +++ /dev/null @@ -1,51 +0,0 @@ -########################################################################### ### -#@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -#@License Dual MIT/GPLv2 -# -# The contents of this file are subject to the MIT license as set out below. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# Alternatively, the contents of this file may be used under the terms of -# the GNU General Public License Version 2 ("GPL") in which case the provisions -# of GPL are applicable instead of those above. -# -# If you wish to allow use of your version of this file only under the terms of -# GPL, and not to allow others to use your version of this file under the terms -# of the MIT license, indicate your decision by deleting the provisions above -# and replace them with the notice and other provisions required by GPL as set -# out in the file called "GPL-COPYING" included in this distribution. If you do -# not delete the provisions above, a recipient may use your version of this file -# under the terms of either the MIT license or GPL. -# -# This License is also included in this distribution in the file called -# "MIT-COPYING". -# -# EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -# PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -# PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -### ########################################################################### - -ccflags-y += \ - -I$(TOP)/tools/intern/debug/dbgdriv/common \ - -I$(TOP)/tools/intern/debug/client - -dbgdrv-y += \ - tools/intern/debug/dbgdriv/common/dbgdriv.o \ - tools/intern/debug/dbgdriv/common/ioctl.o \ - tools/intern/debug/dbgdriv/common/handle.o \ - tools/intern/debug/dbgdriv/common/hotkey.o \ - tools/intern/debug/dbgdriv/linux/main.o \ - tools/intern/debug/dbgdriv/linux/hostfunc.o diff --git a/pvr-source/tools/intern/debug/dbgdriv/Linux.mk b/pvr-source/tools/intern/debug/dbgdriv/Linux.mk deleted file mode 100755 index e050879..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/Linux.mk +++ /dev/null @@ -1,45 +0,0 @@ -########################################################################### ### -#@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -#@License Dual MIT/GPLv2 -# -# The contents of this file are subject to the MIT license as set out below. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# Alternatively, the contents of this file may be used under the terms of -# the GNU General Public License Version 2 ("GPL") in which case the provisions -# of GPL are applicable instead of those above. -# -# If you wish to allow use of your version of this file only under the terms of -# GPL, and not to allow others to use your version of this file under the terms -# of the MIT license, indicate your decision by deleting the provisions above -# and replace them with the notice and other provisions required by GPL as set -# out in the file called "GPL-COPYING" included in this distribution. If you do -# not delete the provisions above, a recipient may use your version of this file -# under the terms of either the MIT license or GPL. -# -# This License is also included in this distribution in the file called -# "MIT-COPYING". -# -# EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -# PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -# BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -# PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -### ########################################################################### - -modules := dbgdrv - -dbgdrv_type := kernel_module -dbgdrv_target := dbgdrv.ko -dbgdrv_makefile := $(THIS_DIR)/Kbuild.mk diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.c b/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.c deleted file mode 100755 index 0b8d445..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.c +++ /dev/null @@ -1,2883 +0,0 @@ -/*************************************************************************/ /*! -@Title Debug Driver -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@Description 32 Bit kernel mode debug driver -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#ifdef LINUX -#include <linux/string.h> -#endif -#ifdef __QNXNTO__ -#include <string.h> -#endif - -#include "img_types.h" -#include "pvr_debug.h" -#include "dbgdrvif.h" -#include "dbgdriv.h" -#include "hotkey.h" -#include "hostfunc.h" -#include "pvr_debug.h" - - - - -#define LAST_FRAME_BUF_SIZE 1024 - -typedef struct _DBG_LASTFRAME_BUFFER_ -{ - PDBG_STREAM psStream; - IMG_UINT8 ui8Buffer[LAST_FRAME_BUF_SIZE]; - IMG_UINT32 ui32BufLen; - struct _DBG_LASTFRAME_BUFFER_ *psNext; -} *PDBG_LASTFRAME_BUFFER; - -/****************************************************************************** - Global vars -******************************************************************************/ - -static PDBG_STREAM g_psStreamList = 0; -static PDBG_LASTFRAME_BUFFER g_psLFBufferList; - -static IMG_UINT32 g_ui32LOff = 0; -static IMG_UINT32 g_ui32Line = 0; -static IMG_UINT32 g_ui32MonoLines = 25; - -static IMG_BOOL g_bHotkeyMiddump = IMG_FALSE; -static IMG_UINT32 g_ui32HotkeyMiddumpStart = 0xffffffff; -static IMG_UINT32 g_ui32HotkeyMiddumpEnd = 0xffffffff; - -IMG_VOID * g_pvAPIMutex=IMG_NULL; - -extern IMG_UINT32 g_ui32HotKeyFrame; -extern IMG_BOOL g_bHotKeyPressed; -extern IMG_BOOL g_bHotKeyRegistered; - -IMG_BOOL gbDumpThisFrame = IMG_FALSE; - - -IMG_UINT32 SpaceInStream(PDBG_STREAM psStream); -IMG_BOOL ExpandStreamBuffer(PDBG_STREAM psStream, IMG_UINT32 ui32NewSize); -PDBG_LASTFRAME_BUFFER FindLFBuf(PDBG_STREAM psStream); - -/*************************************************************************** - Declare kernel mode service table. -***************************************************************************/ -DBGKM_SERVICE_TABLE g_sDBGKMServices = -{ - sizeof (DBGKM_SERVICE_TABLE), - ExtDBGDrivCreateStream, - ExtDBGDrivDestroyStream, - ExtDBGDrivFindStream, - ExtDBGDrivWriteString, - ExtDBGDrivReadString, - ExtDBGDrivWrite, - ExtDBGDrivRead, - ExtDBGDrivSetCaptureMode, - ExtDBGDrivSetOutputMode, - ExtDBGDrivSetDebugLevel, - ExtDBGDrivSetFrame, - ExtDBGDrivGetFrame, - ExtDBGDrivOverrideMode, - ExtDBGDrivDefaultMode, - ExtDBGDrivWrite2, - ExtDBGDrivWriteStringCM, - ExtDBGDrivWriteCM, - ExtDBGDrivSetMarker, - ExtDBGDrivGetMarker, - ExtDBGDrivStartInitPhase, - ExtDBGDrivStopInitPhase, - ExtDBGDrivIsCaptureFrame, - ExtDBGDrivWriteLF, - ExtDBGDrivReadLF, - ExtDBGDrivGetStreamOffset, - ExtDBGDrivSetStreamOffset, - ExtDBGDrivIsLastCaptureFrame, - ExtDBGDrivWaitForEvent, - ExtDBGDrivSetConnectNotifier, - ExtDBGDrivWritePersist -}; - - -/* Static function declarations */ -static IMG_UINT32 DBGDrivWritePersist(PDBG_STREAM psMainStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); -static IMG_VOID InvalidateAllStreams(IMG_VOID); - -/***************************************************************************** - Code -*****************************************************************************/ - - - -DBGKM_CONNECT_NOTIFIER g_fnDBGKMNotifier; - -/*! - @name ExtDBGDrivSetConnectNotifier - @brief Registers one or more services callback functions which are called on events in the dbg driver - @param fn_notifier - services callbacks - @return none - */ -IMG_VOID IMG_CALLCONV ExtDBGDrivSetConnectNotifier(DBGKM_CONNECT_NOTIFIER fn_notifier) -{ - /* Set the callback function which enables the debug driver to - * communicate to services KM when pdump is connected. - */ - g_fnDBGKMNotifier = fn_notifier; -} - -/*! - @name ExtDBGDrivCreateStream - */ -IMG_VOID * IMG_CALLCONV ExtDBGDrivCreateStream(IMG_CHAR * pszName, IMG_UINT32 ui32CapMode, IMG_UINT32 ui32OutMode, IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size) -{ - IMG_VOID * pvRet; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - pvRet=DBGDrivCreateStream(pszName, ui32CapMode, ui32OutMode, ui32Flags, ui32Size); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return pvRet; -} - -/*! - @name ExtDBGDrivDestroyStream - */ -void IMG_CALLCONV ExtDBGDrivDestroyStream(PDBG_STREAM psStream) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivDestroyStream(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivFindStream - */ -IMG_VOID * IMG_CALLCONV ExtDBGDrivFindStream(IMG_CHAR * pszName, IMG_BOOL bResetStream) -{ - IMG_VOID * pvRet; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - pvRet=DBGDrivFindStream(pszName, bResetStream); - if(g_fnDBGKMNotifier.pfnConnectNotifier) - { - g_fnDBGKMNotifier.pfnConnectNotifier(); - } - else - { - PVR_DPF((PVR_DBG_ERROR, "pfnConnectNotifier not initialised.\n")); - } - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return pvRet; -} - -/*! - @name ExtDBGDrivWriteString - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivWriteString(psStream, pszString, ui32Level); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivReadString - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivReadString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Limit) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivReadString(psStream, pszString, ui32Limit); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivWrite - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWrite(PDBG_STREAM psStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivWrite(psStream, pui8InBuf, ui32InBuffSize, ui32Level); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivRead - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivRead(PDBG_STREAM psStream, IMG_BOOL bReadInitBuffer, IMG_UINT32 ui32OutBuffSize,IMG_UINT8 * pui8OutBuf) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivRead(psStream, bReadInitBuffer, ui32OutBuffSize, pui8OutBuf); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivSetCaptureMode - */ -void IMG_CALLCONV ExtDBGDrivSetCaptureMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode,IMG_UINT32 ui32Start,IMG_UINT32 ui32End,IMG_UINT32 ui32SampleRate) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivSetCaptureMode(psStream, ui32Mode, ui32Start, ui32End, ui32SampleRate); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivSetOutputMode - */ -void IMG_CALLCONV ExtDBGDrivSetOutputMode(PDBG_STREAM psStream,IMG_UINT32 ui32OutMode) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivSetOutputMode(psStream, ui32OutMode); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivSetDebugLevel - */ -void IMG_CALLCONV ExtDBGDrivSetDebugLevel(PDBG_STREAM psStream,IMG_UINT32 ui32DebugLevel) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivSetDebugLevel(psStream, ui32DebugLevel); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivSetFrame - */ -void IMG_CALLCONV ExtDBGDrivSetFrame(PDBG_STREAM psStream,IMG_UINT32 ui32Frame) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivSetFrame(psStream, ui32Frame); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivGetFrame - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivGetFrame(PDBG_STREAM psStream) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivGetFrame(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivIsLastCaptureFrame - */ -IMG_BOOL IMG_CALLCONV ExtDBGDrivIsLastCaptureFrame(PDBG_STREAM psStream) -{ - IMG_BOOL bRet; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - bRet = DBGDrivIsLastCaptureFrame(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return bRet; -} - -/*! - @name ExtDBGDrivIsCaptureFrame - */ -IMG_BOOL IMG_CALLCONV ExtDBGDrivIsCaptureFrame(PDBG_STREAM psStream, IMG_BOOL bCheckPreviousFrame) -{ - IMG_BOOL bRet; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - bRet = DBGDrivIsCaptureFrame(psStream, bCheckPreviousFrame); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return bRet; -} - -/*! - @name ExtDBGDrivOverrideMode - */ -void IMG_CALLCONV ExtDBGDrivOverrideMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivOverrideMode(psStream, ui32Mode); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivDefaultMode - */ -void IMG_CALLCONV ExtDBGDrivDefaultMode(PDBG_STREAM psStream) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivDefaultMode(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivWrite2 - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWrite2(PDBG_STREAM psStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivWrite2(psStream, pui8InBuf, ui32InBuffSize, ui32Level); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivWritePersist - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWritePersist(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivWritePersist(psStream, pui8InBuf, ui32InBuffSize, ui32Level); - if(ui32Ret==0xFFFFFFFFU) - { - PVR_DPF((PVR_DBG_ERROR, "An error occurred in DBGDrivWritePersist.")); - } - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivWriteStringCM - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteStringCM(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivWriteStringCM(psStream, pszString, ui32Level); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivWriteCM - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteCM(PDBG_STREAM psStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret=DBGDrivWriteCM(psStream, pui8InBuf, ui32InBuffSize, ui32Level); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivSetMarker - */ -void IMG_CALLCONV ExtDBGDrivSetMarker(PDBG_STREAM psStream, IMG_UINT32 ui32Marker) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivSetMarker(psStream, ui32Marker); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivGetMarker - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivGetMarker(PDBG_STREAM psStream) -{ - IMG_UINT32 ui32Marker; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Marker = DBGDrivGetMarker(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Marker; -} - -/*! - @name ExtDBGDrivWriteLF - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteLF(PDBG_STREAM psStream, IMG_UINT8 * pui8InBuf, IMG_UINT32 ui32InBuffSize, IMG_UINT32 ui32Level, IMG_UINT32 ui32Flags) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret = DBGDrivWriteLF(psStream, pui8InBuf, ui32InBuffSize, ui32Level, ui32Flags); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivReadLF - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivReadLF(PDBG_STREAM psStream, IMG_UINT32 ui32OutBuffSize, IMG_UINT8 * pui8OutBuf) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret = DBGDrivReadLF(psStream, ui32OutBuffSize, pui8OutBuf); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - - -/*! - @name ExtDBGDrivStartInitPhase - */ -IMG_VOID IMG_CALLCONV ExtDBGDrivStartInitPhase(PDBG_STREAM psStream) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivStartInitPhase(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivStopInitPhase - */ -IMG_VOID IMG_CALLCONV ExtDBGDrivStopInitPhase(PDBG_STREAM psStream) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivStopInitPhase(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return; -} - -/*! - @name ExtDBGDrivGetStreamOffset - */ -IMG_UINT32 IMG_CALLCONV ExtDBGDrivGetStreamOffset(PDBG_STREAM psStream) -{ - IMG_UINT32 ui32Ret; - - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - ui32Ret = DBGDrivGetStreamOffset(psStream); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); - - return ui32Ret; -} - -/*! - @name ExtDBGDrivSetStreamOffset - */ -IMG_VOID IMG_CALLCONV ExtDBGDrivSetStreamOffset(PDBG_STREAM psStream, IMG_UINT32 ui32StreamOffset) -{ - /* Aquire API Mutex */ - HostAquireMutex(g_pvAPIMutex); - - DBGDrivSetStreamOffset(psStream, ui32StreamOffset); - - /* Release API Mutex */ - HostReleaseMutex(g_pvAPIMutex); -} - -/*! - @name ExtDBGDrivWaitForEvent - */ -IMG_VOID IMG_CALLCONV ExtDBGDrivWaitForEvent(DBG_EVENT eEvent) -{ -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - DBGDrivWaitForEvent(eEvent); -#else /* defined(SUPPORT_DBGDRV_EVENT_OBJECTS) */ - PVR_UNREFERENCED_PARAMETER(eEvent); /* PRQA S 3358 */ -#endif /* defined(SUPPORT_DBGDRV_EVENT_OBJECTS) */ -} - -/*!**************************************************************************** - @name AtoI - @brief Returns the integer value of a decimal string - @param szIn - String with hexadecimal value - @return IMG_UINT32 integer value, 0 if string is null or not valid - Based on Max`s one, now copes with (only) hex ui32ords, upper or lower case a-f. -*****************************************************************************/ -IMG_UINT32 AtoI(IMG_CHAR *szIn) -{ - IMG_INT iLen = 0; - IMG_UINT32 ui32Value = 0; - IMG_UINT32 ui32Digit=1; - IMG_UINT32 ui32Base=10; - IMG_INT iPos; - IMG_CHAR bc; - - //get len of string - while (szIn[iLen] > 0) - { - iLen ++; - } - - //nothing to do - if (iLen == 0) - { - return (0); - } - - /* See if we have an 'x' or 'X' before the number to make it a hex number */ - iPos=0; - while (szIn[iPos] == '0') - { - iPos++; - } - if (szIn[iPos] == '\0') - { - return 0; - } - if (szIn[iPos] == 'x' || szIn[iPos] == 'X') - { - ui32Base=16; - szIn[iPos]='0'; - } - - //go through string from right (least significant) to left - for (iPos = iLen - 1; iPos >= 0; iPos --) - { - bc = szIn[iPos]; - - if ( (bc >= 'a') && (bc <= 'f') && ui32Base == 16) //handle lower case a-f - { - bc -= 'a' - 0xa; - } - else - if ( (bc >= 'A') && (bc <= 'F') && ui32Base == 16) //handle upper case A-F - { - bc -= 'A' - 0xa; - } - else - if ((bc >= '0') && (bc <= '9')) //if char out of range, return 0 - { - bc -= '0'; - } - else - return (0); - - ui32Value += (IMG_UINT32)bc * ui32Digit; - - ui32Digit = ui32Digit * ui32Base; - } - return (ui32Value); -} - - -/*!**************************************************************************** - @name StreamValid - @brief Validates supplied debug buffer. - @param psStream - debug stream - @return true if valid -*****************************************************************************/ -static IMG_BOOL StreamValid(PDBG_STREAM psStream) -{ - PDBG_STREAM psThis; - - psThis = g_psStreamList; - - while (psThis) - { - if (psStream && (psThis == psStream) ) - { - return(IMG_TRUE); - } - else - { - psThis = psThis->psNext; - } - } - - return(IMG_FALSE); -} - - -/*!**************************************************************************** - @name StreamValidForRead - @brief Validates supplied debug buffer for read op. - @param psStream - debug stream - @return true if readable -*****************************************************************************/ -static IMG_BOOL StreamValidForRead(PDBG_STREAM psStream) -{ - if( StreamValid(psStream) && - ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_WRITEONLY) == 0) ) - { - return(IMG_TRUE); - } - - return(IMG_FALSE); -} - -/*!**************************************************************************** - @name StreamValidForWrite - @brief Validates supplied debug buffer for write op. - @param psStream - debug stream - @return true if writable -*****************************************************************************/ -static IMG_BOOL StreamValidForWrite(PDBG_STREAM psStream) -{ - if( StreamValid(psStream) && - ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_READONLY) == 0) ) - { - return(IMG_TRUE); - } - - return(IMG_FALSE); -} - - -/*!**************************************************************************** - @name Write - @brief Copies data from a buffer into selected stream. Stream size is fixed. - @param psStream - stream for output - @param pui8Data - input buffer - @param ui32InBuffSize - size of input - @return none -*****************************************************************************/ -static void Write(PDBG_STREAM psStream,IMG_PUINT8 pui8Data,IMG_UINT32 ui32InBuffSize) -{ - /* - Split copy into two bits as necessary (if we're allowed to wrap). - */ - if (!psStream->bCircularAllowed) - { - //PVR_ASSERT( (psStream->ui32WPtr + ui32InBuffSize) < psStream->ui32Size ); - } - - if ((psStream->ui32WPtr + ui32InBuffSize) > psStream->ui32Size) - { - /* Yes we need two bits, calculate their sizes */ - IMG_UINT32 ui32B1 = psStream->ui32Size - psStream->ui32WPtr; - IMG_UINT32 ui32B2 = ui32InBuffSize - ui32B1; - - /* Copy first block to current location */ - HostMemCopy((IMG_PVOID)((IMG_UINTPTR_T)psStream->pvBase + psStream->ui32WPtr), - (IMG_PVOID) pui8Data, - ui32B1); - - /* Copy second block to start of buffer */ - HostMemCopy(psStream->pvBase, - (IMG_PVOID)(pui8Data + ui32B1), - ui32B2); - - /* Set pointer to be the new end point */ - psStream->ui32WPtr = ui32B2; - } - else - { /* Can fit block in single chunk */ - HostMemCopy((IMG_PVOID)((IMG_UINTPTR_T)psStream->pvBase + psStream->ui32WPtr), - (IMG_PVOID) pui8Data, - ui32InBuffSize); - - psStream->ui32WPtr += ui32InBuffSize; - - if (psStream->ui32WPtr == psStream->ui32Size) - { - psStream->ui32WPtr = 0; - } - } - psStream->ui32DataWritten += ui32InBuffSize; -} - - -/*!**************************************************************************** - @name MonoOut - @brief Output data to mono display. [Possibly deprecated] - @param pszString - input - @param bNewLine - line wrapping - @return none -*****************************************************************************/ -void MonoOut(IMG_CHAR * pszString,IMG_BOOL bNewLine) -{ -#if defined (_WIN64) - PVR_UNREFERENCED_PARAMETER(pszString); - PVR_UNREFERENCED_PARAMETER(bNewLine); - -#else - IMG_UINT32 i; - IMG_CHAR * pScreen; - - pScreen = (IMG_CHAR *) DBGDRIV_MONOBASE; - - pScreen += g_ui32Line * 160; - - /* - Write the string. - */ - i=0; - do - { - pScreen[g_ui32LOff + (i*2)] = pszString[i]; - pScreen[g_ui32LOff + (i*2)+1] = 127; - i++; - } - while ((pszString[i] != 0) && (i < 4096)); - - g_ui32LOff += i * 2; - - if (bNewLine) - { - g_ui32LOff = 0; - g_ui32Line++; - } - - /* - Scroll if necssary. - */ - if (g_ui32Line == g_ui32MonoLines) - { - g_ui32Line = g_ui32MonoLines - 1; - - HostMemCopy((IMG_VOID *)DBGDRIV_MONOBASE,(IMG_VOID *)(DBGDRIV_MONOBASE + 160),160 * (g_ui32MonoLines - 1)); - - HostMemSet((IMG_VOID *)(DBGDRIV_MONOBASE + (160 * (g_ui32MonoLines - 1))),0,160); - } -#endif -} - -/*!**************************************************************************** - @name WriteExpandingBuffer - @brief Copies data from a buffer into selected stream. Stream size may be expandable. - @param psStream - stream for output - @param pui8InBuf - input buffer - @param ui32InBuffSize - size of input - @return bytes copied -*****************************************************************************/ -static IMG_UINT32 WriteExpandingBuffer(PDBG_STREAM psStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize) -{ - IMG_UINT ui32Space; - - /* - How much space have we got in the buffer ? - */ - ui32Space = SpaceInStream(psStream); - - /* - Don't copy anything if we don't have space or buffers not enabled. - */ - if ((psStream->psCtrl->ui32OutMode & DEBUG_OUTMODE_STREAMENABLE) == 0) - { - PVR_DPF((PVR_DBG_ERROR, "WriteExpandingBuffer: buffer %x is disabled", (IMG_UINTPTR_T) psStream)); - return(0); - } - - /* - Check if we can expand the buffer - */ - if (psStream->psCtrl->ui32Flags & DEBUG_FLAGS_NO_BUF_EXPANDSION) - { - /* - Don't do anything if we've got less that 32 ui8tes of space and - we're not allowing expansion of buffer space... - */ - if (ui32Space < 32) - { - PVR_DPF((PVR_DBG_ERROR, "WriteExpandingBuffer: buffer %x is full and isn't expandable", (IMG_UINTPTR_T) psStream)); - return(0); - } - } - else - { - if ((ui32Space < 32) || (ui32Space <= (ui32InBuffSize + 4))) - { - IMG_UINT32 ui32NewBufSize; - - /* - Find new buffer size - */ - ui32NewBufSize = 2 * psStream->ui32Size; - - PVR_DPF((PVR_DBGDRIV_MESSAGE, "Expanding buffer size = %x, new size = %x", - psStream->ui32Size, ui32NewBufSize)); - - if (ui32InBuffSize > psStream->ui32Size) - { - ui32NewBufSize += ui32InBuffSize; - } - - /* - Attempt to expand the buffer - */ - if (!ExpandStreamBuffer(psStream,ui32NewBufSize)) - { - if (ui32Space < 32) - { - if(psStream->bCircularAllowed) - { - return(0); - } - else - { - /* out of memory */ - PVR_DPF((PVR_DBG_ERROR, "WriteExpandingBuffer: Unable to expand %x. Out of memory.", (IMG_UINTPTR_T) psStream)); - InvalidateAllStreams(); - return (0xFFFFFFFFUL); - } - } - } - - /* - Recalc the space in the buffer - */ - ui32Space = SpaceInStream(psStream); - PVR_DPF((PVR_DBGDRIV_MESSAGE, "Expanded buffer, free space = %x", - ui32Space)); - } - } - - /* - Only copy what we can.. - */ - if (ui32Space <= (ui32InBuffSize + 4)) - { - ui32InBuffSize = ui32Space - 4; - } - - /* - Write the stuff... - */ - Write(psStream,pui8InBuf,ui32InBuffSize); - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - if (ui32InBuffSize) - { - HostSignalEvent(DBG_EVENT_STREAM_DATA); - } -#endif - return(ui32InBuffSize); -} - -/***************************************************************************** -****************************************************************************** -****************************************************************************** - THE ACTUAL FUNCTIONS -****************************************************************************** -****************************************************************************** -*****************************************************************************/ - -/*!**************************************************************************** - @name DBGDrivCreateStream - @brief Creates a pdump/debug stream - @param pszName - stream name - @param ui32CapMode - capture mode (framed, continuous, hotkey) - @param ui32OutMode - output mode (see dbgdrvif.h) - @param ui32Flags - output flags, text stream bit is set for pdumping - @param ui32Size - size of stream buffer in pages - @return none -*****************************************************************************/ -IMG_VOID * IMG_CALLCONV DBGDrivCreateStream(IMG_CHAR * pszName, - IMG_UINT32 ui32CapMode, - IMG_UINT32 ui32OutMode, - IMG_UINT32 ui32Flags, - IMG_UINT32 ui32Size) -{ - PDBG_STREAM psStream; - PDBG_STREAM psInitStream; - PDBG_LASTFRAME_BUFFER psLFBuffer; - PDBG_STREAM_CONTROL psCtrl; - IMG_UINT32 ui32Off; - IMG_VOID * pvBase; - static IMG_CHAR pszNameInitSuffix[] = "_Init"; - IMG_UINT32 ui32OffSuffix; - - /* - If we already have a buffer using this name just return - its handle. - */ - psStream = (PDBG_STREAM) DBGDrivFindStream(pszName, IMG_FALSE); - - if (psStream) - { - return ((IMG_VOID *) psStream); - } - - /* - Allocate memory for control structures - */ - psStream = HostNonPageablePageAlloc(1); - psInitStream = HostNonPageablePageAlloc(1); - psLFBuffer = HostNonPageablePageAlloc(1); - psCtrl = HostNonPageablePageAlloc(1); - if ( - (!psStream) || - (!psInitStream) || - (!psLFBuffer) || - (!psCtrl) - ) - { - PVR_DPF((PVR_DBG_ERROR,"DBGDriv: Couldn't alloc control structs\n\r")); - return((IMG_VOID *) 0); - } - - /* Allocate memory for buffer */ - if ((ui32Flags & DEBUG_FLAGS_USE_NONPAGED_MEM) != 0) - { - pvBase = HostNonPageablePageAlloc(ui32Size); - } - else - { - pvBase = HostPageablePageAlloc(ui32Size); - } - - if (!pvBase) - { - PVR_DPF((PVR_DBG_ERROR,"DBGDriv: Couldn't alloc Stream buffer\n\r")); - HostNonPageablePageFree(psStream); - return((IMG_VOID *) 0); - } - - /* Setup control state */ - psCtrl->ui32Flags = ui32Flags; - psCtrl->ui32CapMode = ui32CapMode; - psCtrl->ui32OutMode = ui32OutMode; - psCtrl->ui32DebugLevel = DEBUG_LEVEL_0; - psCtrl->ui32DefaultMode = ui32CapMode; - psCtrl->ui32Start = 0; - psCtrl->ui32End = 0; - psCtrl->ui32Current = 0; - psCtrl->ui32SampleRate = 1; - psCtrl->bInitPhaseComplete = IMG_FALSE; - - /* - Setup internal debug buffer state. - */ - psStream->psNext = 0; - psStream->pvBase = pvBase; - psStream->psCtrl = psCtrl; - psStream->ui32Size = ui32Size * 4096UL; - psStream->ui32RPtr = 0; - psStream->ui32WPtr = 0; - psStream->ui32DataWritten = 0; - psStream->ui32Marker = 0; - psStream->bCircularAllowed = IMG_TRUE; - psStream->ui32InitPhaseWOff = 0; - - /* Allocate memory for buffer */ - if ((ui32Flags & DEBUG_FLAGS_USE_NONPAGED_MEM) != 0) - { - pvBase = HostNonPageablePageAlloc(ui32Size); - } - else - { - pvBase = HostPageablePageAlloc(ui32Size); - } - - if (!pvBase) - { - PVR_DPF((PVR_DBG_ERROR,"DBGDriv: Couldn't alloc InitStream buffer\n\r")); - - if ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_USE_NONPAGED_MEM) != 0) - { - HostNonPageablePageFree(psStream->pvBase); - } - else - { - HostPageablePageFree(psStream->pvBase); - } - HostNonPageablePageFree(psStream); - return((IMG_VOID *) 0); - } - - /* Initialise the stream for the init phase */ - psInitStream->psNext = 0; - psInitStream->pvBase = pvBase; - psInitStream->psCtrl = psCtrl; - psInitStream->ui32Size = ui32Size * 4096UL; - psInitStream->ui32RPtr = 0; - psInitStream->ui32WPtr = 0; - psInitStream->ui32DataWritten = 0; - psInitStream->ui32Marker = 0; - psInitStream->bCircularAllowed = IMG_FALSE; - psInitStream->ui32InitPhaseWOff = 0; - psStream->psInitStream = psInitStream; - - /* Setup last frame buffer */ - psLFBuffer->psStream = psStream; - psLFBuffer->ui32BufLen = 0UL; - - g_bHotkeyMiddump = IMG_FALSE; - g_ui32HotkeyMiddumpStart = 0xffffffffUL; - g_ui32HotkeyMiddumpEnd = 0xffffffffUL; - - /* - Copy buffer name. - */ - ui32Off = 0; - - do - { - psStream->szName[ui32Off] = pszName[ui32Off]; - psInitStream->szName[ui32Off] = pszName[ui32Off]; - ui32Off++; - } - while ((pszName[ui32Off] != 0) && (ui32Off < (4096UL - sizeof(DBG_STREAM)))); - psStream->szName[ui32Off] = pszName[ui32Off]; /* PRQA S 3689 */ - - /* - Append suffix to init phase name - */ - ui32OffSuffix = 0; - do - { - psInitStream->szName[ui32Off] = pszNameInitSuffix[ui32OffSuffix]; - ui32Off++; - ui32OffSuffix++; - } - while ( (pszNameInitSuffix[ui32OffSuffix] != 0) && - (ui32Off < (4096UL - sizeof(DBG_STREAM)))); - psInitStream->szName[ui32Off] = pszNameInitSuffix[ui32OffSuffix]; /* PRQA S 3689 */ - - /* - Insert into list. - */ - psStream->psNext = g_psStreamList; - g_psStreamList = psStream; - - psLFBuffer->psNext = g_psLFBufferList; - g_psLFBufferList = psLFBuffer; - - AddSIDEntry(psStream); - - return((IMG_VOID *) psStream); -} - -/*!**************************************************************************** - @name DBGDrivDestroyStream - @brief Delete a stream and free its memory - @param psStream - stream to be removed - @return none -*****************************************************************************/ -void IMG_CALLCONV DBGDrivDestroyStream(PDBG_STREAM psStream) -{ - PDBG_STREAM psStreamThis; - PDBG_STREAM psStreamPrev; - PDBG_LASTFRAME_BUFFER psLFBuffer; - PDBG_LASTFRAME_BUFFER psLFThis; - PDBG_LASTFRAME_BUFFER psLFPrev; - - PVR_DPF((PVR_DBG_MESSAGE, "DBGDriv: Destroying stream %s\r\n", psStream->szName )); - - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return; - } - - RemoveSIDEntry(psStream); - - psLFBuffer = FindLFBuf(psStream); - - /* - Remove from linked list. - */ - psStreamThis = g_psStreamList; - psStreamPrev = 0; - - while (psStreamThis) - { - if (psStreamThis == psStream) - { - if (psStreamPrev) - { - psStreamPrev->psNext = psStreamThis->psNext; - } - else - { - g_psStreamList = psStreamThis->psNext; - } - - psStreamThis = 0; - } - else - { - psStreamPrev = psStreamThis; - psStreamThis = psStreamThis->psNext; - } - } - - psLFThis = g_psLFBufferList; - psLFPrev = 0; - - while (psLFThis) - { - if (psLFThis == psLFBuffer) - { - if (psLFPrev) - { - psLFPrev->psNext = psLFThis->psNext; - } - else - { - g_psLFBufferList = psLFThis->psNext; - } - - psLFThis = 0; - } - else - { - psLFPrev = psLFThis; - psLFThis = psLFThis->psNext; - } - } - /* - Dectivate hotkey it the stream is of this type. - */ - if (psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_HOTKEY) - { - DeactivateHotKeys(); - } - - /* - And free its memory. - */ - if ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_USE_NONPAGED_MEM) != 0) - { - HostNonPageablePageFree(psStream->psCtrl); - HostNonPageablePageFree(psStream->pvBase); - HostNonPageablePageFree(psStream->psInitStream->pvBase); - } - else - { - HostNonPageablePageFree(psStream->psCtrl); - HostPageablePageFree(psStream->pvBase); - HostPageablePageFree(psStream->psInitStream->pvBase); - } - - HostNonPageablePageFree(psStream->psInitStream); - HostNonPageablePageFree(psStream); - HostNonPageablePageFree(psLFBuffer); - - if (g_psStreamList == 0) - { - PVR_DPF((PVR_DBG_MESSAGE,"DBGDriv: Stream list now empty" )); - } - - return; -} - -/*!**************************************************************************** - @name DBGDrivFindStream - @brief Finds/resets a named stream - @param pszName - stream name - @param bResetStream - whether to reset the stream, e.g. to end pdump init phase - @return none -*****************************************************************************/ -IMG_VOID * IMG_CALLCONV DBGDrivFindStream(IMG_CHAR * pszName, IMG_BOOL bResetStream) -{ - PDBG_STREAM psStream; - PDBG_STREAM psThis; - IMG_UINT32 ui32Off; - IMG_BOOL bAreSame; - - psStream = 0; - - PVR_DPF((PVR_DBGDRIV_MESSAGE, "PDump client connecting to %s %s", - pszName, - (bResetStream == IMG_TRUE) ? "with reset" : "no reset")); - - /* - Scan buffer names for supplied one. - */ - for (psThis = g_psStreamList; psThis != IMG_NULL; psThis = psThis->psNext) - { - bAreSame = IMG_TRUE; - ui32Off = 0; - - if (strlen(psThis->szName) == strlen(pszName)) - { - while ((psThis->szName[ui32Off] != 0) && (pszName[ui32Off] != 0) && (ui32Off < 128) && bAreSame) - { - if (psThis->szName[ui32Off] != pszName[ui32Off]) - { - bAreSame = IMG_FALSE; - } - - ui32Off++; - } - } - else - { - bAreSame = IMG_FALSE; - } - - if (bAreSame) - { - psStream = psThis; - break; - } - } - - if(bResetStream && psStream) - { - static IMG_CHAR szComment[] = "-- Init phase terminated\r\n"; - psStream->psInitStream->ui32RPtr = 0; - psStream->ui32RPtr = 0; - psStream->ui32WPtr = 0; - psStream->ui32DataWritten = psStream->psInitStream->ui32DataWritten; - if (psStream->psCtrl->bInitPhaseComplete == IMG_FALSE) - { - if (psStream->psCtrl->ui32Flags & DEBUG_FLAGS_TEXTSTREAM) - { - DBGDrivWrite2(psStream, (IMG_UINT8 *)szComment, sizeof(szComment) - 1, 0x01); - } - psStream->psCtrl->bInitPhaseComplete = IMG_TRUE; - } - - { - /* mark init stream to prevent further reading by pdump client */ - psStream->psInitStream->ui32InitPhaseWOff = psStream->psInitStream->ui32WPtr; - PVR_DPF((PVR_DBGDRIV_MESSAGE, "Set %s client marker bo %x, total bw %x", - psStream->szName, - psStream->psInitStream->ui32InitPhaseWOff, - psStream->psInitStream->ui32DataWritten )); - } - } - - return((IMG_VOID *) psStream); -} - -static void IMG_CALLCONV DBGDrivInvalidateStream(PDBG_STREAM psStream) -{ - IMG_CHAR pszErrorMsg[] = "**OUTOFMEM\n"; - IMG_UINT32 ui32Space; - IMG_UINT32 ui32Off = 0; - IMG_UINT32 ui32WPtr = psStream->ui32WPtr; - IMG_PUINT8 pui8Buffer = (IMG_UINT8 *) psStream->pvBase; - - PVR_DPF((PVR_DBG_ERROR, "DBGDrivInvalidateStream: An error occurred for stream %s\r\n", psStream->szName )); - - /* - Validate buffer. - */ - /* - if (!StreamValid(psStream)) - { - return; - } -*/ - /* Write what we can of the error message */ - ui32Space = SpaceInStream(psStream); - - /* Make sure there's space for termination character */ - if(ui32Space > 0) - { - ui32Space--; - } - else - { - PVR_DPF((PVR_DBG_ERROR, "DBGDrivInvalidateStream: Buffer full.")); - } - - while((pszErrorMsg[ui32Off] != 0) && (ui32Off < ui32Space)) - { - pui8Buffer[ui32WPtr] = (IMG_UINT8)pszErrorMsg[ui32Off]; - ui32Off++; - ui32WPtr++; - } - pui8Buffer[ui32WPtr++] = '\0'; - psStream->ui32WPtr = ui32WPtr; - - /* Buffer will accept no more params from Services/client driver */ - psStream->psCtrl->ui32Flags |= DEBUG_FLAGS_READONLY; -} - -/*!**************************************************************************** - @name InvalidateAllStreams - @brief invalidate all streams in list - @return none -*****************************************************************************/ -static IMG_VOID InvalidateAllStreams(IMG_VOID) -{ - PDBG_STREAM psStream = g_psStreamList; - while (psStream != IMG_NULL) - { - DBGDrivInvalidateStream(psStream); - psStream = psStream->psNext; - } - return; -} - - - -/*!**************************************************************************** - @name DBGDrivWriteStringCM - @brief Write capture mode data, wraps DBGDrivWriteString - @param psStream - stream - @param pszString - input buffer - @param ui32Level - debug level -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivWriteStringCM(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level) -{ - /* - Validate buffer. - */ - if (!StreamValidForWrite(psStream)) - { - return(0xFFFFFFFFUL); - } - - /* - Only write string if debug capture mode adds up... - */ - if (psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_FRAMED) - { - if ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_ENABLESAMPLE) == 0) - { - return(0); - } - } - else - { - if (psStream->psCtrl->ui32CapMode == DEBUG_CAPMODE_HOTKEY) - { - if ((psStream->psCtrl->ui32Current != g_ui32HotKeyFrame) || (g_bHotKeyPressed == IMG_FALSE)) - { - return(0); - } - } - } - - return(DBGDrivWriteString(psStream,pszString,ui32Level)); - -} - -/*!**************************************************************************** - @name DBGDrivWriteString - @brief Write string to stream (note stream buffer size is assumed fixed) - @param psStream - stream - @param pszString - string to write - @param ui32Level - verbosity level - @return -1; invalid stream - 0; other error (e.g. stream not enabled) - else number of characters written -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivWriteString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Len; - IMG_UINT32 ui32Space; - IMG_UINT32 ui32WPtr; - IMG_UINT8 * pui8Buffer; - - /* - Validate buffer. - */ - if (!StreamValidForWrite(psStream)) - { - return(0xFFFFFFFFUL); - } - - /* - Check debug level. - */ - if ((psStream->psCtrl->ui32DebugLevel & ui32Level) == 0) - { - return(0xFFFFFFFFUL); - } - - /* - Output to standard debug out ? (don't if async out - flag is set). - */ - if ((psStream->psCtrl->ui32OutMode & DEBUG_OUTMODE_ASYNC) == 0) - { - if (psStream->psCtrl->ui32OutMode & DEBUG_OUTMODE_STANDARDDBG) - { - PVR_DPF((PVR_DBG_MESSAGE,"%s: %s\r\n",psStream->szName, pszString)); - } - - /* - Output to mono monitor ? - */ - if (psStream->psCtrl->ui32OutMode & DEBUG_OUTMODE_MONO) - { - MonoOut(psStream->szName,IMG_FALSE); - MonoOut(": ",IMG_FALSE); - MonoOut(pszString,IMG_TRUE); - } - } - - /* - Don't bother writing the string if it's not flagged - */ - if ( - !( - ((psStream->psCtrl->ui32OutMode & DEBUG_OUTMODE_STREAMENABLE) != 0) || - ((psStream->psCtrl->ui32OutMode & DEBUG_OUTMODE_ASYNC) != 0) - ) - ) - { - return(0xFFFFFFFFUL); - } - - /* - How much space have we got in the buffer ? - */ - ui32Space=SpaceInStream(psStream); - - /* Make sure there's space for termination character */ - if(ui32Space > 0) - { - ui32Space--; - } - - ui32Len = 0; - ui32WPtr = psStream->ui32WPtr; - pui8Buffer = (IMG_UINT8 *) psStream->pvBase; - - while((pszString[ui32Len] != 0) && (ui32Len < ui32Space)) - { - pui8Buffer[ui32WPtr] = (IMG_UINT8)pszString[ui32Len]; - ui32Len++; - ui32WPtr++; - if (ui32WPtr == psStream->ui32Size) - { - ui32WPtr = 0; - } - } - - if (ui32Len < ui32Space) - { - /* copy terminator */ - pui8Buffer[ui32WPtr] = (IMG_UINT8)pszString[ui32Len]; - ui32Len++; - ui32WPtr++; - if (ui32WPtr == psStream->ui32Size) - { - ui32WPtr = 0; - } - - /* Write pointer, and length */ - psStream->ui32WPtr = ui32WPtr; - psStream->ui32DataWritten+= ui32Len; - } else - { - ui32Len = 0; - } - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - if (ui32Len) - { - HostSignalEvent(DBG_EVENT_STREAM_DATA); - } -#endif - - return(ui32Len); -} - -/*!**************************************************************************** - @name DBGDrivReadString - @brief Reads string from debug stream - @param psStream - stream - @param pszString - string to read - @param ui32Limit - max size to read - @return -1; invalid stream - 0; other error (e.g. stream not enabled) - else number of characters read -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivReadString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Limit) -{ - IMG_UINT32 ui32OutLen; - IMG_UINT32 ui32Len; - IMG_UINT32 ui32Offset; - IMG_UINT8 *pui8Buff; - - /* - Validate buffer. - */ - if (!StreamValidForRead(psStream)) - { - return(0); - } - - /* - Stream appears to be in list so carry on. - */ - pui8Buff = (IMG_UINT8 *)psStream->pvBase; - ui32Offset = psStream->ui32RPtr; - - if (psStream->ui32RPtr == psStream->ui32WPtr) - { - return(0); - } - - /* - Find length of string. - */ - ui32Len = 0; - while((pui8Buff[ui32Offset] != 0) && (ui32Offset != psStream->ui32WPtr)) - { - ui32Offset++; - ui32Len++; - - /* - Reset offset if buffer wrapped. - */ - if (ui32Offset == psStream->ui32Size) - { - ui32Offset = 0; - } - } - - ui32OutLen = ui32Len + 1; - - /* - Only copy string if target has enough space. - */ - if (ui32Len > ui32Limit) - { - return(0); - } - - /* - Copy it. - */ - ui32Offset = psStream->ui32RPtr; - ui32Len = 0; - - while ((pui8Buff[ui32Offset] != 0) && (ui32Len < ui32Limit)) - { - pszString[ui32Len] = (IMG_CHAR)pui8Buff[ui32Offset]; - ui32Offset++; - ui32Len++; - - /* - If wrap as necessary - */ - if (ui32Offset == psStream->ui32Size) - { - ui32Offset = 0; - } - } - - pszString[ui32Len] = (IMG_CHAR)pui8Buff[ui32Offset]; - - psStream->ui32RPtr = ui32Offset + 1; - - if (psStream->ui32RPtr == psStream->ui32Size) - { - psStream->ui32RPtr = 0; - } - - return(ui32OutLen); -} - -/*!**************************************************************************** - @name DBGDrivWrite - @brief Write binary buffer to stream (fixed size) - @param psStream - stream - @param pui8InBuf - buffer to write - @param ui32InBuffSize - size - @param ui32Level - verbosity level - @return bytes written, 0 if recoverable error, -1 if unrecoverable error -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivWrite(PDBG_STREAM psMainStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - IMG_UINT32 ui32Space; - DBG_STREAM *psStream; - - /* - Validate buffer. - */ - if (!StreamValidForWrite(psMainStream)) - { - return(0xFFFFFFFFUL); - } - - /* - Check debug level. - */ - if ((psMainStream->psCtrl->ui32DebugLevel & ui32Level) == 0) - { - return(0xFFFFFFFFUL); - } - - /* - Only write data if debug mode adds up... - */ - if (psMainStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_FRAMED) - { - if ((psMainStream->psCtrl->ui32Flags & DEBUG_FLAGS_ENABLESAMPLE) == 0) - { - /* throw away non-capturing data */ - return(ui32InBuffSize); - } - } - else if (psMainStream->psCtrl->ui32CapMode == DEBUG_CAPMODE_HOTKEY) - { - if ((psMainStream->psCtrl->ui32Current != g_ui32HotKeyFrame) || (g_bHotKeyPressed == IMG_FALSE)) - { - /* throw away non-capturing data */ - return(ui32InBuffSize); - } - } - - if(psMainStream->psCtrl->bInitPhaseComplete) - { - psStream = psMainStream; - } - else - { - psStream = psMainStream->psInitStream; - } - - /* - How much space have we got in the buffer ? - */ - ui32Space=SpaceInStream(psStream); - - PVR_DPF((PVR_DBGDRIV_MESSAGE, "Recv %d b for %s: Roff = %x, WOff = %x", - ui32InBuffSize, - psStream->szName, - psStream->ui32RPtr, - psStream->ui32WPtr)); - - /* - Don't copy anything if we don't have space or buffers not enabled. - */ - if ((psStream->psCtrl->ui32OutMode & DEBUG_OUTMODE_STREAMENABLE) == 0) - { - PVR_DPF((PVR_DBG_ERROR, "DBGDrivWrite: buffer %x is disabled", (IMG_UINTPTR_T) psStream)); - return(0); - } - - if (ui32Space < 8) - { - PVR_DPF((PVR_DBG_ERROR, "DBGDrivWrite: buffer %x is full", (IMG_UINTPTR_T) psStream)); - return(0); - } - - /* - Only copy what we can.. - */ - if (ui32Space <= (ui32InBuffSize + 4)) - { - ui32InBuffSize = ui32Space - 8; - } - - /* - Write the stuff... - */ - Write(psStream,(IMG_UINT8 *) &ui32InBuffSize,4); - Write(psStream,pui8InBuf,ui32InBuffSize); - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - if (ui32InBuffSize) - { - HostSignalEvent(DBG_EVENT_STREAM_DATA); - } -#endif - return(ui32InBuffSize); -} - -/*!**************************************************************************** - @name DBGDrivWriteCM - @brief Write capture mode data, wraps DBGDrivWrite - @param psStream - stream - @param pui8InBuf - input buffer - @param ui32InBuffSize - buffer size - @param ui32Level - verbosity level - @return bytes written, 0 if recoverable error, -1 if unrecoverable error -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivWriteCM(PDBG_STREAM psStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - /* - Validate buffer. - */ - if (!StreamValidForWrite(psStream)) - { - return(0xFFFFFFFFUL); - } - - /* - Only write data if debug mode adds up... - */ - if (psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_FRAMED) - { - if ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_ENABLESAMPLE) == 0) - { - /* throw away non-capturing data */ - return(ui32InBuffSize); - } - } - else - { - if (psStream->psCtrl->ui32CapMode == DEBUG_CAPMODE_HOTKEY) - { - if ((psStream->psCtrl->ui32Current != g_ui32HotKeyFrame) || (g_bHotKeyPressed == IMG_FALSE)) - { - /* throw away non-capturing data */ - return(ui32InBuffSize); - } - } - } - - return(DBGDrivWrite2(psStream,pui8InBuf,ui32InBuffSize,ui32Level)); -} - - -/*!**************************************************************************** - @name DBGDrivWritePersist - @brief Copies data from a buffer into selected stream's init phase. Stream size should be expandable. - @param psStream - stream for output - @param pui8InBuf - input buffer - @param ui32InBuffSize - size of input - @param ui32Level - not used - @return bytes copied, 0 if recoverable error, -1 if unrecoverable error -*****************************************************************************/ -static IMG_UINT32 DBGDrivWritePersist(PDBG_STREAM psMainStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - DBG_STREAM *psStream; - PVR_UNREFERENCED_PARAMETER(ui32Level); - - /* - Validate buffer. - */ - if (!StreamValidForWrite(psMainStream)) - { - return(0xFFFFFFFFUL); - } - - /* Always append persistent data to init phase so it's available on - * subsequent app runs. - */ - psStream = psMainStream->psInitStream; - if(psStream->bCircularAllowed == IMG_TRUE) - { - PVR_DPF((PVR_DBG_WARNING, "DBGDrivWritePersist: Init phase is a circular buffer, some data may be lost")); - } - - PVR_DPF((PVR_DBGDRIV_MESSAGE, "Append %x b to %s: Roff = %x, WOff = %x [bw = %x]", - ui32InBuffSize, - psStream->szName, - psStream->ui32RPtr, - psStream->ui32WPtr, - psStream->ui32DataWritten)); - - return( WriteExpandingBuffer(psStream, pui8InBuf, ui32InBuffSize) ); -} - -/*!**************************************************************************** - @name DBGDrivWrite2 - @brief Copies data from a buffer into selected (expandable) stream. - @param psMainStream - stream for output - @param pui8InBuf - input buffer - @param ui32InBuffSize - size of input - @param ui32Level - debug level of input - @return bytes copied, 0 if recoverable error, -1 if unrecoverable error -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivWrite2(PDBG_STREAM psMainStream,IMG_UINT8 * pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level) -{ - DBG_STREAM *psStream; - - /* - Validate buffer. - */ - if (!StreamValidForWrite(psMainStream)) - { - PVR_DPF((PVR_DBG_ERROR, "DBGDrivWrite2: stream not valid")); - return(0xFFFFFFFFUL); - } - - /* - Check debug level. - */ - if ((psMainStream->psCtrl->ui32DebugLevel & ui32Level) == 0) - { - return(0); - } - - if(psMainStream->psCtrl->bInitPhaseComplete) - { - psStream = psMainStream; - } - else - { - psStream = psMainStream->psInitStream; - } - - PVR_DPF((PVR_DBGDRIV_MESSAGE, "Recv(exp) %d b for %s: Roff = %x, WOff = %x", - ui32InBuffSize, - psStream->szName, - psStream->ui32RPtr, - psStream->ui32WPtr)); - - return( WriteExpandingBuffer(psStream, pui8InBuf, ui32InBuffSize) ); -} - -/*!**************************************************************************** - @name DBGDrivRead - @brief Read from debug driver buffers - @param psMainStream - stream - @param bReadInitBuffer - whether to read from the init stream or the main stream - @param ui32OutBuffSize - available space in client buffer - @param pui8OutBuf - output buffer - @return bytes read, 0 if failure occurred -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivRead(PDBG_STREAM psMainStream, IMG_BOOL bReadInitBuffer, IMG_UINT32 ui32OutBuffSize,IMG_UINT8 * pui8OutBuf) -{ - IMG_UINT32 ui32Data; - DBG_STREAM *psStream; - - /* - Validate buffer. - */ - if (!StreamValidForRead(psMainStream)) - { - PVR_DPF((PVR_DBG_ERROR, "DBGDrivRead: buffer %x is invalid", (IMG_UINTPTR_T) psMainStream)); - return(0); - } - - if(bReadInitBuffer) - { - psStream = psMainStream->psInitStream; - } - else - { - psStream = psMainStream; - } - - /* Don't read beyond the init phase marker point */ - if (psStream->ui32RPtr == psStream->ui32WPtr || - ((psStream->ui32InitPhaseWOff > 0) && - (psStream->ui32RPtr >= psStream->ui32InitPhaseWOff)) ) - { - return(0); - } - - /* - Get amount of data in buffer. - */ - if (psStream->ui32RPtr <= psStream->ui32WPtr) - { - ui32Data = psStream->ui32WPtr - psStream->ui32RPtr; - } - else - { - ui32Data = psStream->ui32WPtr + (psStream->ui32Size - psStream->ui32RPtr); - } - - /* - Don't read beyond the init phase marker point - */ - if ((psStream->ui32InitPhaseWOff > 0) && - (psStream->ui32InitPhaseWOff < psStream->ui32WPtr)) - { - ui32Data = psStream->ui32InitPhaseWOff - psStream->ui32RPtr; - } - - /* - Only transfer what target buffer can handle. - */ - if (ui32Data > ui32OutBuffSize) - { - ui32Data = ui32OutBuffSize; - } - - PVR_DPF((PVR_DBGDRIV_MESSAGE, "Send %x b from %s: Roff = %x, WOff = %x", - ui32Data, - psStream->szName, - psStream->ui32RPtr, - psStream->ui32WPtr)); - - /* - Split copy into two bits as necessay. - */ - if ((psStream->ui32RPtr + ui32Data) > psStream->ui32Size) - { /* Calc block 1 and block 2 sizes */ - IMG_UINT32 ui32B1 = psStream->ui32Size - psStream->ui32RPtr; - IMG_UINT32 ui32B2 = ui32Data - ui32B1; - - /* Copy up to end of circular buffer */ - HostMemCopy((IMG_VOID *) pui8OutBuf, - (IMG_VOID *)((IMG_UINTPTR_T)psStream->pvBase + psStream->ui32RPtr), - ui32B1); - - /* Copy from start of circular buffer */ - HostMemCopy((IMG_VOID *)(pui8OutBuf + ui32B1), - psStream->pvBase, - ui32B2); - - /* Update read pointer now that we've copied the data out */ - psStream->ui32RPtr = ui32B2; - } - else - { /* Copy data from wherever */ - HostMemCopy((IMG_VOID *) pui8OutBuf, - (IMG_VOID *)((IMG_UINTPTR_T)psStream->pvBase + psStream->ui32RPtr), - ui32Data); - - /* Update read pointer now that we've copied the data out */ - psStream->ui32RPtr += ui32Data; - - /* Check for wrapping */ - if (psStream->ui32RPtr == psStream->ui32Size) - { - psStream->ui32RPtr = 0; - } - } - - return(ui32Data); -} - -/*!**************************************************************************** - @name DBGDrivSetCaptureMode - @brief Set capture mode - @param psStream - stream - @param ui32Mode - capturing mode - @param ui32Start - start frame (frame mode only) - @param ui32End - end frame (frame mode) - @param ui32SampleRate - sampling frequency (frame mode) -*****************************************************************************/ -void IMG_CALLCONV DBGDrivSetCaptureMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode,IMG_UINT32 ui32Start,IMG_UINT32 ui32End,IMG_UINT32 ui32SampleRate) -{ - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->psCtrl->ui32CapMode = ui32Mode; - psStream->psCtrl->ui32DefaultMode = ui32Mode; - psStream->psCtrl->ui32Start = ui32Start; - psStream->psCtrl->ui32End = ui32End; - psStream->psCtrl->ui32SampleRate = ui32SampleRate; - - /* - Activate hotkey it the stream is of this type. - */ - if (psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_HOTKEY) - { - ActivateHotKeys(psStream); - } -} - -/*!**************************************************************************** - @name DBGDrivSetOutputMode - @brief Change output mode - @param psStream - stream - @param ui32OutMode - output mode - @return none -*****************************************************************************/ -void IMG_CALLCONV DBGDrivSetOutputMode(PDBG_STREAM psStream,IMG_UINT32 ui32OutMode) -{ - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->psCtrl->ui32OutMode = ui32OutMode; -} - -/*!**************************************************************************** - @name DBGDrivSetDebugLevel - @brief Change debug level - @param psStream - stream - @param ui32DebugLevel - verbosity level - @return none -*****************************************************************************/ -void IMG_CALLCONV DBGDrivSetDebugLevel(PDBG_STREAM psStream,IMG_UINT32 ui32DebugLevel) -{ - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->psCtrl->ui32DebugLevel = ui32DebugLevel; -} - -/*!**************************************************************************** - @name DBGDrivSetFrame - @brief Advance frame counter - @param psStream - stream - @param ui32Frame - frame number - @return none -*****************************************************************************/ -void IMG_CALLCONV DBGDrivSetFrame(PDBG_STREAM psStream,IMG_UINT32 ui32Frame) -{ - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->psCtrl->ui32Current = ui32Frame; - - if ((ui32Frame >= psStream->psCtrl->ui32Start) && - (ui32Frame <= psStream->psCtrl->ui32End) && - (((ui32Frame - psStream->psCtrl->ui32Start) % psStream->psCtrl->ui32SampleRate) == 0)) - { - psStream->psCtrl->ui32Flags |= DEBUG_FLAGS_ENABLESAMPLE; - } - else - { - psStream->psCtrl->ui32Flags &= ~DEBUG_FLAGS_ENABLESAMPLE; - } - - if (g_bHotkeyMiddump) - { - if ((ui32Frame >= g_ui32HotkeyMiddumpStart) && - (ui32Frame <= g_ui32HotkeyMiddumpEnd) && - (((ui32Frame - g_ui32HotkeyMiddumpStart) % psStream->psCtrl->ui32SampleRate) == 0)) - { - psStream->psCtrl->ui32Flags |= DEBUG_FLAGS_ENABLESAMPLE; - } - else - { - psStream->psCtrl->ui32Flags &= ~DEBUG_FLAGS_ENABLESAMPLE; - if (psStream->psCtrl->ui32Current > g_ui32HotkeyMiddumpEnd) - { - g_bHotkeyMiddump = IMG_FALSE; - } - } - } - - /* Check to see if hotkey press has been registered (from keyboard filter) */ - if (g_bHotKeyRegistered) - { - g_bHotKeyRegistered = IMG_FALSE; - - PVR_DPF((PVR_DBG_MESSAGE,"Hotkey pressed (%p)!\n",psStream)); - - if (!g_bHotKeyPressed) - { - /* - Capture the next frame. - */ - g_ui32HotKeyFrame = psStream->psCtrl->ui32Current + 2; - - /* - Do the flag. - */ - g_bHotKeyPressed = IMG_TRUE; - } - - /* - If in framed hotkey mode, then set start frame. - */ - if (((psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_FRAMED) != 0) && - ((psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_HOTKEY) != 0)) - { - if (!g_bHotkeyMiddump) - { - /* Turn on */ - g_ui32HotkeyMiddumpStart = g_ui32HotKeyFrame + 1; - g_ui32HotkeyMiddumpEnd = 0xffffffff; - g_bHotkeyMiddump = IMG_TRUE; - PVR_DPF((PVR_DBG_MESSAGE,"Sampling every %d frame(s)\n", psStream->psCtrl->ui32SampleRate)); - } - else - { - /* Turn off */ - g_ui32HotkeyMiddumpEnd = g_ui32HotKeyFrame; - PVR_DPF((PVR_DBG_MESSAGE,"Turning off sampling\n")); - } - } - - } - - /* - Clear the hotkey frame indicator when over that frame. - */ - if (psStream->psCtrl->ui32Current > g_ui32HotKeyFrame) - { - g_bHotKeyPressed = IMG_FALSE; - } -} - -/*!**************************************************************************** - @name DBGDrivGetFrame - @brief Retrieve current frame number - @param psStream - stream - @return frame number -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivGetFrame(PDBG_STREAM psStream) -{ - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return(0); - } - - return(psStream->psCtrl->ui32Current); -} - -/*!**************************************************************************** - @name DBGDrivIsLastCaptureFrame - @brief Is this the last frame to be captured? - @param psStream - stream - @return true if last capture frame, false otherwise -*****************************************************************************/ -IMG_BOOL IMG_CALLCONV DBGDrivIsLastCaptureFrame(PDBG_STREAM psStream) -{ - IMG_UINT32 ui32NextFrame; - - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return IMG_FALSE; - } - - if (psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_FRAMED) - { - ui32NextFrame = psStream->psCtrl->ui32Current + psStream->psCtrl->ui32SampleRate; - if (ui32NextFrame > psStream->psCtrl->ui32End) - { - return IMG_TRUE; - } - } - return IMG_FALSE; -} - -/*!**************************************************************************** - @name DBGDrivIsCaptureFrame - @brief Is this a capture frame? - @param psStream - stream - @param bCheckPreviousFrame - set if it needs to be 1 frame ahead - @return true if capturing this frame, false otherwise -*****************************************************************************/ -IMG_BOOL IMG_CALLCONV DBGDrivIsCaptureFrame(PDBG_STREAM psStream, IMG_BOOL bCheckPreviousFrame) -{ - IMG_UINT32 ui32FrameShift = bCheckPreviousFrame ? 1UL : 0UL; - - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return IMG_FALSE; - } - - if (psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_FRAMED) - { - /* Needs to be one frame ahead, so disppatch can turn everything on */ - if (g_bHotkeyMiddump) - { - if ((psStream->psCtrl->ui32Current >= (g_ui32HotkeyMiddumpStart - ui32FrameShift)) && - (psStream->psCtrl->ui32Current <= (g_ui32HotkeyMiddumpEnd - ui32FrameShift)) && - ((((psStream->psCtrl->ui32Current + ui32FrameShift) - g_ui32HotkeyMiddumpStart) % psStream->psCtrl->ui32SampleRate) == 0)) - { - return IMG_TRUE; - } - } - else - { - if ((psStream->psCtrl->ui32Current >= (psStream->psCtrl->ui32Start - ui32FrameShift)) && - (psStream->psCtrl->ui32Current <= (psStream->psCtrl->ui32End - ui32FrameShift)) && - ((((psStream->psCtrl->ui32Current + ui32FrameShift) - psStream->psCtrl->ui32Start) % psStream->psCtrl->ui32SampleRate) == 0)) - { - return IMG_TRUE; - } - } - } - else if (psStream->psCtrl->ui32CapMode == DEBUG_CAPMODE_HOTKEY) - { - if ((psStream->psCtrl->ui32Current == (g_ui32HotKeyFrame-ui32FrameShift)) && (g_bHotKeyPressed)) - { - return IMG_TRUE; - } - } - return IMG_FALSE; -} - -/*!**************************************************************************** - @name DBGDrivOverrideMode - @brief Override capture mode - @param psStream - stream - @param ui32Mode - capture mode - @return none -*****************************************************************************/ -void IMG_CALLCONV DBGDrivOverrideMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode) -{ - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->psCtrl->ui32CapMode = ui32Mode; -} - -/*!**************************************************************************** - @name DBGDrivDefaultMode - @param psStream - stream - @return none -*****************************************************************************/ -void IMG_CALLCONV DBGDrivDefaultMode(PDBG_STREAM psStream) -{ - /* - Validate buffer. - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->psCtrl->ui32CapMode = psStream->psCtrl->ui32DefaultMode; -} - -/*!**************************************************************************** - @name DBGDrivSetClientMarker - @brief Sets the marker to prevent reading initphase beyond data on behalf of previous app - @param psStream - stream - @param ui32Marker - byte offset in init buffer - @return nothing -*****************************************************************************/ -IMG_VOID IMG_CALLCONV DBGDrivSetClientMarker(PDBG_STREAM psStream, IMG_UINT32 ui32Marker) -{ - /* - Validate buffer - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->ui32InitPhaseWOff = ui32Marker; -} - -/*!**************************************************************************** - @name DBGDrivSetMarker - @brief Sets the marker in the stream to split output files - @param psStream, ui32Marker - @return nothing -*****************************************************************************/ -void IMG_CALLCONV DBGDrivSetMarker(PDBG_STREAM psStream, IMG_UINT32 ui32Marker) -{ - /* - Validate buffer - */ - if (!StreamValid(psStream)) - { - return; - } - - psStream->ui32Marker = ui32Marker; -} - -/*!**************************************************************************** - @name DBGDrivGetMarker - @brief Gets the marker in the stream to split output files - @param psStream - stream - @return marker offset -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivGetMarker(PDBG_STREAM psStream) -{ - /* - Validate buffer - */ - if (!StreamValid(psStream)) - { - return 0; - } - - return psStream->ui32Marker; -} - - -/*!**************************************************************************** - @name DBGDrivGetStreamOffset - @brief Gets the amount of data written to the stream - @param psMainStream - stream - @return bytes written -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivGetStreamOffset(PDBG_STREAM psMainStream) -{ - PDBG_STREAM psStream; - - /* - Validate buffer - */ - if (!StreamValid(psMainStream)) - { - return 0; - } - - if(psMainStream->psCtrl->bInitPhaseComplete) - { - psStream = psMainStream; - } - else - { - psStream = psMainStream->psInitStream; - } - - return psStream->ui32DataWritten; -} - -/*!**************************************************************************** - @name DBGDrivSetStreamOffset - @brief Sets the amount of data written to the stream - @param psMainStream - stream - @param ui32StreamOffset - stream offset - @return Nothing -*****************************************************************************/ -IMG_VOID IMG_CALLCONV DBGDrivSetStreamOffset(PDBG_STREAM psMainStream, IMG_UINT32 ui32StreamOffset) -{ - PDBG_STREAM psStream; - - /* - Validate buffer - */ - if (!StreamValid(psMainStream)) - { - return; - } - - if(psMainStream->psCtrl->bInitPhaseComplete) - { - psStream = psMainStream; - } - else - { - psStream = psMainStream->psInitStream; - } - - PVR_DPF((PVR_DBGDRIV_MESSAGE, "DBGDrivSetStreamOffset: %s set to %x b", - psStream->szName, - ui32StreamOffset)); - psStream->ui32DataWritten = ui32StreamOffset; -} - -/*!**************************************************************************** - @name DBGDrivGetServiceTable - @brief get jump table for Services driver - @return pointer to jump table -*****************************************************************************/ -IMG_PVOID IMG_CALLCONV DBGDrivGetServiceTable(IMG_VOID) -{ - return((IMG_PVOID)&g_sDBGKMServices); -} - -/*!**************************************************************************** - @name DBGDrivWriteLF - @brief Store data that should only be kept from the last frame dumped - @param psStream - stream - @param pui8InBuf - input buffer - @param ui32InBuffSize - size - @param ui32Level - verbosity level - @param ui32Flags - flags - @return bytes written -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivWriteLF(PDBG_STREAM psStream, IMG_UINT8 * pui8InBuf, IMG_UINT32 ui32InBuffSize, IMG_UINT32 ui32Level, IMG_UINT32 ui32Flags) -{ - PDBG_LASTFRAME_BUFFER psLFBuffer; - - /* - Validate buffer. - */ - if (!StreamValidForWrite(psStream)) - { - return(0xFFFFFFFFUL); - } - - /* - Check debug level. - */ - if ((psStream->psCtrl->ui32DebugLevel & ui32Level) == 0) - { - return(0xFFFFFFFFUL); - } - - /* - Only write data if debug mode adds up... - */ - if ((psStream->psCtrl->ui32CapMode & DEBUG_CAPMODE_FRAMED) != 0) - { - if ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_ENABLESAMPLE) == 0) - { - /* throw away non-capturing data */ - return(ui32InBuffSize); - } - } - else if (psStream->psCtrl->ui32CapMode == DEBUG_CAPMODE_HOTKEY) - { - if ((psStream->psCtrl->ui32Current != g_ui32HotKeyFrame) || (g_bHotKeyPressed == IMG_FALSE)) - { - /* throw away non-capturing data */ - return(ui32InBuffSize); - } - } - - psLFBuffer = FindLFBuf(psStream); - - if (ui32Flags & WRITELF_FLAGS_RESETBUF) - { - /* - Copy the data into the buffer - */ - ui32InBuffSize = (ui32InBuffSize > LAST_FRAME_BUF_SIZE) ? LAST_FRAME_BUF_SIZE : ui32InBuffSize; - HostMemCopy((IMG_VOID *)psLFBuffer->ui8Buffer, (IMG_VOID *)pui8InBuf, ui32InBuffSize); - psLFBuffer->ui32BufLen = ui32InBuffSize; - } - else - { - /* - Append the data to the end of the buffer - */ - ui32InBuffSize = ((psLFBuffer->ui32BufLen + ui32InBuffSize) > LAST_FRAME_BUF_SIZE) ? (LAST_FRAME_BUF_SIZE - psLFBuffer->ui32BufLen) : ui32InBuffSize; - HostMemCopy((IMG_VOID *)(&psLFBuffer->ui8Buffer[psLFBuffer->ui32BufLen]), (IMG_VOID *)pui8InBuf, ui32InBuffSize); - psLFBuffer->ui32BufLen += ui32InBuffSize; - } - - return(ui32InBuffSize); -} - -/*!**************************************************************************** - @name DBGDrivReadLF - @brief Read data that should only be kept from the last frame dumped - @param psStream - stream - @param ui32OutBuffSize - buffer size - @param pui8OutBuf - output buffer - @return bytes read -*****************************************************************************/ -IMG_UINT32 IMG_CALLCONV DBGDrivReadLF(PDBG_STREAM psStream, IMG_UINT32 ui32OutBuffSize, IMG_UINT8 * pui8OutBuf) -{ - PDBG_LASTFRAME_BUFFER psLFBuffer; - IMG_UINT32 ui32Data; - - /* - Validate buffer. - */ - if (!StreamValidForRead(psStream)) - { - return(0); - } - - psLFBuffer = FindLFBuf(psStream); - - /* - Get amount of data to copy - */ - ui32Data = (ui32OutBuffSize < psLFBuffer->ui32BufLen) ? ui32OutBuffSize : psLFBuffer->ui32BufLen; - - /* - Copy the data into the buffer - */ - HostMemCopy((IMG_VOID *)pui8OutBuf, (IMG_VOID *)psLFBuffer->ui8Buffer, ui32Data); - - return ui32Data; -} - -/*!**************************************************************************** - @name DBGDrivStartInitPhase - @brief Marks start of init phase - @param psStream - stream - @return void -*****************************************************************************/ -IMG_VOID IMG_CALLCONV DBGDrivStartInitPhase(PDBG_STREAM psStream) -{ - psStream->psCtrl->bInitPhaseComplete = IMG_FALSE; -} - -/*!**************************************************************************** - @name DBGDrivStopInitPhase - @brief Marks end of init phase - @param psStream - stream - @return void -*****************************************************************************/ -IMG_VOID IMG_CALLCONV DBGDrivStopInitPhase(PDBG_STREAM psStream) -{ - psStream->psCtrl->bInitPhaseComplete = IMG_TRUE; -} - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) -/*!**************************************************************************** - @name DBGDrivWaitForEvent - @brief waits for an event - @param eEvent - debug driver event - @return void -*****************************************************************************/ -IMG_VOID IMG_CALLCONV DBGDrivWaitForEvent(DBG_EVENT eEvent) -{ - HostWaitForEvent(eEvent); -} -#endif - -/*!**************************************************************************** - @name ExpandStreamBuffer - @brief allocates a new buffer when the current one is full - @param psStream - stream - @param ui32NewSize - new size - @return IMG_TRUE - if allocation succeeded, IMG_FALSE - if not -*****************************************************************************/ -IMG_BOOL ExpandStreamBuffer(PDBG_STREAM psStream, IMG_UINT32 ui32NewSize) -{ - IMG_VOID * pvNewBuf; - IMG_UINT32 ui32NewSizeInPages; - IMG_UINT32 ui32NewWOffset; - IMG_UINT32 ui32NewROffset; - IMG_UINT32 ui32SpaceInOldBuf; - - /* - First check new size is bigger than existing size - */ - if (psStream->ui32Size >= ui32NewSize) - { - return IMG_FALSE; - } - - /* - Calc space in old buffer - */ - ui32SpaceInOldBuf = SpaceInStream(psStream); - - /* - Allocate new buffer - */ - ui32NewSizeInPages = ((ui32NewSize + 0xfffUL) & ~0xfffUL) / 4096UL; - - if ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_USE_NONPAGED_MEM) != 0) - { - pvNewBuf = HostNonPageablePageAlloc(ui32NewSizeInPages); - } - else - { - pvNewBuf = HostPageablePageAlloc(ui32NewSizeInPages); - } - - if (pvNewBuf == IMG_NULL) - { - return IMG_FALSE; - } - - if(psStream->bCircularAllowed) - { - /* - Copy over old buffer to new one, we place data at start of buffer - even if Read offset is not at start of buffer - */ - if (psStream->ui32RPtr <= psStream->ui32WPtr) - { - /* - No wrapping of data so copy data to start of new buffer - */ - HostMemCopy(pvNewBuf, - (IMG_VOID *)((IMG_UINTPTR_T)psStream->pvBase + psStream->ui32RPtr), - psStream->ui32WPtr - psStream->ui32RPtr); - } - else - { - IMG_UINT32 ui32FirstCopySize; - - /* - The data has wrapped around the buffer, copy beginning of buffer first - */ - ui32FirstCopySize = psStream->ui32Size - psStream->ui32RPtr; - - HostMemCopy(pvNewBuf, - (IMG_VOID *)((IMG_UINTPTR_T)psStream->pvBase + psStream->ui32RPtr), - ui32FirstCopySize); - - /* - Now second half - */ - HostMemCopy((IMG_VOID *)((IMG_UINTPTR_T)pvNewBuf + ui32FirstCopySize), - (IMG_VOID *)(IMG_PBYTE)psStream->pvBase, - psStream->ui32WPtr); - } - ui32NewROffset = 0; - } - else - { - /* Copy everything in the old buffer to the new one */ - HostMemCopy(pvNewBuf, psStream->pvBase, psStream->ui32WPtr); - ui32NewROffset = psStream->ui32RPtr; - } - - /* - New Write offset is at end of data - */ - ui32NewWOffset = psStream->ui32Size - ui32SpaceInOldBuf; - - /* - Free old buffer - */ - if ((psStream->psCtrl->ui32Flags & DEBUG_FLAGS_USE_NONPAGED_MEM) != 0) - { - HostNonPageablePageFree(psStream->pvBase); - } - else - { - HostPageablePageFree(psStream->pvBase); - } - - /* - Now set new params up - */ - psStream->pvBase = pvNewBuf; - psStream->ui32RPtr = ui32NewROffset; - psStream->ui32WPtr = ui32NewWOffset; - psStream->ui32Size = ui32NewSizeInPages * 4096; - - return IMG_TRUE; -} - -/*!**************************************************************************** - @name SpaceInStream - @brief remaining space in stream - @param psStream - stream - @return bytes remaining -*****************************************************************************/ -IMG_UINT32 SpaceInStream(PDBG_STREAM psStream) -{ - IMG_UINT32 ui32Space; - - if (psStream->bCircularAllowed) - { - /* Allow overwriting the buffer which was already read */ - if (psStream->ui32RPtr > psStream->ui32WPtr) - { - ui32Space = psStream->ui32RPtr - psStream->ui32WPtr; - } - else - { - ui32Space = psStream->ui32RPtr + (psStream->ui32Size - psStream->ui32WPtr); - } - } - else - { - /* Don't overwrite anything */ - ui32Space = psStream->ui32Size - psStream->ui32WPtr; - } - - return ui32Space; -} - - -/*!**************************************************************************** - @name DestroyAllStreams - @brief delete all streams in list - @return none -*****************************************************************************/ -void DestroyAllStreams(void) -{ - while (g_psStreamList != IMG_NULL) - { - DBGDrivDestroyStream(g_psStreamList); - } - return; -} - -/*!**************************************************************************** - @name FindLFBuf - @brief finds last frame stream - @param psStream - stream to find - @return stream if found, NULL otherwise -*****************************************************************************/ -PDBG_LASTFRAME_BUFFER FindLFBuf(PDBG_STREAM psStream) -{ - PDBG_LASTFRAME_BUFFER psLFBuffer; - - psLFBuffer = g_psLFBufferList; - - while (psLFBuffer) - { - if (psLFBuffer->psStream == psStream) - { - break; - } - - psLFBuffer = psLFBuffer->psNext; - } - - return psLFBuffer; -} - -/****************************************************************************** - End of file (DBGDRIV.C) -******************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.h b/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.h deleted file mode 100755 index d58c62d..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv.h +++ /dev/null @@ -1,155 +0,0 @@ -/*************************************************************************/ /*! -@Title Debug Driver interface definition. -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#ifndef _DBGDRIV_ -#define _DBGDRIV_ - -/***************************************************************************** - The odd constant or two -*****************************************************************************/ -#define BUFFER_SIZE 64*PAGESIZE - -#define DBGDRIV_VERSION 0x100 -#define MAX_PROCESSES 2 -#define BLOCK_USED 0x01 -#define BLOCK_LOCKED 0x02 -#define DBGDRIV_MONOBASE 0x000B0000 - - -extern IMG_VOID * g_pvAPIMutex; - -/***************************************************************************** - KM mode functions -*****************************************************************************/ -IMG_VOID * IMG_CALLCONV DBGDrivCreateStream(IMG_CHAR * pszName, - IMG_UINT32 ui32CapMode, - IMG_UINT32 ui32OutMode, - IMG_UINT32 ui32Flags, - IMG_UINT32 ui32Pages); -IMG_VOID IMG_CALLCONV DBGDrivDestroyStream(PDBG_STREAM psStream); -IMG_VOID * IMG_CALLCONV DBGDrivFindStream(IMG_CHAR * pszName, IMG_BOOL bResetStream); -IMG_UINT32 IMG_CALLCONV DBGDrivWriteString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV DBGDrivReadString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Limit); -IMG_UINT32 IMG_CALLCONV DBGDrivWrite(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV DBGDrivWrite2(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV DBGDrivRead(PDBG_STREAM psStream, IMG_BOOL bReadInitBuffer, IMG_UINT32 ui32OutBufferSize,IMG_UINT8 *pui8OutBuf); -IMG_VOID IMG_CALLCONV DBGDrivSetCaptureMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode,IMG_UINT32 ui32Start,IMG_UINT32 ui32Stop,IMG_UINT32 ui32SampleRate); -IMG_VOID IMG_CALLCONV DBGDrivSetOutputMode(PDBG_STREAM psStream,IMG_UINT32 ui32OutMode); -IMG_VOID IMG_CALLCONV DBGDrivSetDebugLevel(PDBG_STREAM psStream,IMG_UINT32 ui32DebugLevel); -IMG_VOID IMG_CALLCONV DBGDrivSetFrame(PDBG_STREAM psStream,IMG_UINT32 ui32Frame); -IMG_UINT32 IMG_CALLCONV DBGDrivGetFrame(PDBG_STREAM psStream); -IMG_VOID IMG_CALLCONV DBGDrivOverrideMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode); -IMG_VOID IMG_CALLCONV DBGDrivDefaultMode(PDBG_STREAM psStream); -IMG_PVOID IMG_CALLCONV DBGDrivGetServiceTable(IMG_VOID); -IMG_UINT32 IMG_CALLCONV DBGDrivWriteStringCM(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV DBGDrivWriteCM(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); -IMG_VOID IMG_CALLCONV DBGDrivSetClientMarker(PDBG_STREAM psStream, IMG_UINT32 ui32Marker); -IMG_VOID IMG_CALLCONV DBGDrivSetMarker(PDBG_STREAM psStream, IMG_UINT32 ui32Marker); -IMG_UINT32 IMG_CALLCONV DBGDrivGetMarker(PDBG_STREAM psStream); -IMG_BOOL IMG_CALLCONV DBGDrivIsLastCaptureFrame(PDBG_STREAM psStream); -IMG_BOOL IMG_CALLCONV DBGDrivIsCaptureFrame(PDBG_STREAM psStream, IMG_BOOL bCheckPreviousFrame); -IMG_UINT32 IMG_CALLCONV DBGDrivWriteLF(PDBG_STREAM psStream, IMG_UINT8 *pui8InBuf, IMG_UINT32 ui32InBuffSize, IMG_UINT32 ui32Level, IMG_UINT32 ui32Flags); -IMG_UINT32 IMG_CALLCONV DBGDrivReadLF(PDBG_STREAM psStream, IMG_UINT32 ui32OutBuffSize, IMG_UINT8 *pui8OutBuf); -IMG_VOID IMG_CALLCONV DBGDrivStartInitPhase(PDBG_STREAM psStream); -IMG_VOID IMG_CALLCONV DBGDrivStopInitPhase(PDBG_STREAM psStream); -IMG_UINT32 IMG_CALLCONV DBGDrivGetStreamOffset(PDBG_STREAM psStream); -IMG_VOID IMG_CALLCONV DBGDrivSetStreamOffset(PDBG_STREAM psStream, IMG_UINT32 ui32StreamOffset); -IMG_VOID IMG_CALLCONV DBGDrivWaitForEvent(DBG_EVENT eEvent); - -IMG_VOID DestroyAllStreams(IMG_VOID); - -/***************************************************************************** - Function prototypes -*****************************************************************************/ -IMG_UINT32 AtoI(IMG_CHAR *szIn); - -IMG_VOID HostMemSet(IMG_VOID *pvDest,IMG_UINT8 ui8Value,IMG_UINT32 ui32Size); -IMG_VOID HostMemCopy(IMG_VOID *pvDest,IMG_VOID *pvSrc,IMG_UINT32 ui32Size); -IMG_VOID MonoOut(IMG_CHAR * pszString,IMG_BOOL bNewLine); - -/***************************************************************************** - Secure handle Function prototypes -*****************************************************************************/ -IMG_SID PStream2SID(PDBG_STREAM psStream); -PDBG_STREAM SID2PStream(IMG_SID hStream); -IMG_BOOL AddSIDEntry(PDBG_STREAM psStream); -IMG_BOOL RemoveSIDEntry(PDBG_STREAM psStream); - -/***************************************************************************** - Declarations for Service table entry points -*****************************************************************************/ -IMG_VOID * IMG_CALLCONV ExtDBGDrivCreateStream(IMG_CHAR * pszName, IMG_UINT32 ui32CapMode, IMG_UINT32 ui32OutMode, IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size); -IMG_VOID IMG_CALLCONV ExtDBGDrivDestroyStream(PDBG_STREAM psStream); -IMG_VOID * IMG_CALLCONV ExtDBGDrivFindStream(IMG_CHAR * pszName, IMG_BOOL bResetStream); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivReadString(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Limit); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWrite(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivRead(PDBG_STREAM psStream, IMG_BOOL bReadInitBuffer, IMG_UINT32 ui32OutBuffSize,IMG_UINT8 *pui8OutBuf); -IMG_VOID IMG_CALLCONV ExtDBGDrivSetCaptureMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode,IMG_UINT32 ui32Start,IMG_UINT32 ui32End,IMG_UINT32 ui32SampleRate); -IMG_VOID IMG_CALLCONV ExtDBGDrivSetOutputMode(PDBG_STREAM psStream,IMG_UINT32 ui32OutMode); -IMG_VOID IMG_CALLCONV ExtDBGDrivSetDebugLevel(PDBG_STREAM psStream,IMG_UINT32 ui32DebugLevel); -IMG_VOID IMG_CALLCONV ExtDBGDrivSetFrame(PDBG_STREAM psStream,IMG_UINT32 ui32Frame); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivGetFrame(PDBG_STREAM psStream); -IMG_VOID IMG_CALLCONV ExtDBGDrivOverrideMode(PDBG_STREAM psStream,IMG_UINT32 ui32Mode); -IMG_VOID IMG_CALLCONV ExtDBGDrivDefaultMode(PDBG_STREAM psStream); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWrite2(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteStringCM(PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteCM(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); -IMG_VOID IMG_CALLCONV ExtDBGDrivSetMarker(PDBG_STREAM psStream, IMG_UINT32 ui32Marker); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivGetMarker(PDBG_STREAM psStream); -IMG_VOID IMG_CALLCONV ExtDBGDrivStartInitPhase(PDBG_STREAM psStream); -IMG_VOID IMG_CALLCONV ExtDBGDrivStopInitPhase(PDBG_STREAM psStream); -IMG_BOOL IMG_CALLCONV ExtDBGDrivIsLastCaptureFrame(PDBG_STREAM psStream); -IMG_BOOL IMG_CALLCONV ExtDBGDrivIsCaptureFrame(PDBG_STREAM psStream, IMG_BOOL bCheckPreviousFrame); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWriteLF(PDBG_STREAM psStream, IMG_UINT8 *pui8InBuf, IMG_UINT32 ui32InBuffSize, IMG_UINT32 ui32Level, IMG_UINT32 ui32Flags); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivReadLF(PDBG_STREAM psStream, IMG_UINT32 ui32OutBuffSize, IMG_UINT8 *pui8OutBuf); -IMG_UINT32 IMG_CALLCONV ExtDBGDrivGetStreamOffset(PDBG_STREAM psStream); -IMG_VOID IMG_CALLCONV ExtDBGDrivSetStreamOffset(PDBG_STREAM psStream, IMG_UINT32 ui32StreamOffset); -IMG_VOID IMG_CALLCONV ExtDBGDrivWaitForEvent(DBG_EVENT eEvent); -IMG_VOID IMG_CALLCONV ExtDBGDrivSetConnectNotifier(DBGKM_CONNECT_NOTIFIER fn_notifier); - -IMG_UINT32 IMG_CALLCONV ExtDBGDrivWritePersist(PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); - -#endif - -/***************************************************************************** - End of file (DBGDRIV.H) -*****************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv_ioctl.h b/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv_ioctl.h deleted file mode 100755 index 0909e6d..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/dbgdriv_ioctl.h +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************/ /*! -@Title IOCTL implementations for debug device. -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#ifndef _IOCTL_ -#define _IOCTL_ - -/***************************************************************************** - Global vars -*****************************************************************************/ - -#define MAX_DBGVXD_W32_API 25 - -extern IMG_UINT32 (*g_DBGDrivProc[MAX_DBGVXD_W32_API])(IMG_VOID *, IMG_VOID *); - -#endif - -/***************************************************************************** - End of file (IOCTL.H) -*****************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/handle.c b/pvr-source/tools/intern/debug/dbgdriv/common/handle.c deleted file mode 100755 index a9d37a6..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/handle.c +++ /dev/null @@ -1,141 +0,0 @@ -/*************************************************************************/ /*! -@Title Resource Handle Manager -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@Description Provide resource handle management -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#include "img_defs.h" -#include "dbgdrvif.h" -#include "dbgdriv.h" - -/* max number of streams held in SID info table */ -#define MAX_SID_ENTRIES 8 - -typedef struct _SID_INFO -{ - PDBG_STREAM psStream; -} SID_INFO, *PSID_INFO; - -static SID_INFO gaSID_Xlat_Table[MAX_SID_ENTRIES]; - -IMG_SID PStream2SID(PDBG_STREAM psStream) -{ - if (psStream != (PDBG_STREAM)IMG_NULL) - { - IMG_INT32 iIdx; - - for (iIdx = 0; iIdx < MAX_SID_ENTRIES; iIdx++) - { - if (psStream == gaSID_Xlat_Table[iIdx].psStream) - { - /* idx is one based */ - return (IMG_SID)iIdx+1; - } - } - } - - return (IMG_SID)0; -} - - -PDBG_STREAM SID2PStream(IMG_SID hStream) -{ - /* changed to zero based */ - IMG_INT32 iIdx = (IMG_INT32)hStream-1; - - if (iIdx >= 0 && iIdx < MAX_SID_ENTRIES) - { - return gaSID_Xlat_Table[iIdx].psStream; - } - else - { - return (PDBG_STREAM)IMG_NULL; - } -} - - -IMG_BOOL AddSIDEntry(PDBG_STREAM psStream) -{ - if (psStream != (PDBG_STREAM)IMG_NULL) - { - IMG_INT32 iIdx; - - for (iIdx = 0; iIdx < MAX_SID_ENTRIES; iIdx++) - { - if (psStream == gaSID_Xlat_Table[iIdx].psStream) - { - /* already created */ - return IMG_TRUE; - } - - if (gaSID_Xlat_Table[iIdx].psStream == (PDBG_STREAM)IMG_NULL) - { - /* free entry */ - gaSID_Xlat_Table[iIdx].psStream = psStream; - return IMG_TRUE; - } - } - } - - return IMG_FALSE; -} - -IMG_BOOL RemoveSIDEntry(PDBG_STREAM psStream) -{ - if (psStream != (PDBG_STREAM)IMG_NULL) - { - IMG_INT32 iIdx; - - for (iIdx = 0; iIdx < MAX_SID_ENTRIES; iIdx++) - { - if (psStream == gaSID_Xlat_Table[iIdx].psStream) - { - gaSID_Xlat_Table[iIdx].psStream = (PDBG_STREAM)IMG_NULL; - return IMG_TRUE; - } - } - } - - return IMG_FALSE; -} - - -/****************************************************************************** - End of file (handle.c) -******************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/hostfunc.h b/pvr-source/tools/intern/debug/dbgdriv/common/hostfunc.h deleted file mode 100755 index e92ad9a..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/hostfunc.h +++ /dev/null @@ -1,82 +0,0 @@ -/*************************************************************************/ /*! -@Title Host function definitions for debug device. -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#ifndef _HOSTFUNC_ -#define _HOSTFUNC_ - -/***************************************************************************** - Defines -*****************************************************************************/ -#define HOST_PAGESIZE (4096) -#define DBG_MEMORY_INITIALIZER (0xe2) - -/***************************************************************************** - Function prototypes -*****************************************************************************/ -IMG_UINT32 HostReadRegistryDWORDFromString(IMG_CHAR *pcKey, IMG_CHAR *pcValueName, IMG_UINT32 *pui32Data); - -IMG_VOID * HostPageablePageAlloc(IMG_UINT32 ui32Pages); -IMG_VOID HostPageablePageFree(IMG_VOID * pvBase); -IMG_VOID * HostNonPageablePageAlloc(IMG_UINT32 ui32Pages); -IMG_VOID HostNonPageablePageFree(IMG_VOID * pvBase); - -IMG_VOID * HostMapKrnBufIntoUser(IMG_VOID * pvKrnAddr, IMG_UINT32 ui32Size, IMG_VOID * *ppvMdl); -IMG_VOID HostUnMapKrnBufFromUser(IMG_VOID * pvUserAddr, IMG_VOID * pvMdl, IMG_VOID * pvProcess); - -IMG_VOID HostCreateRegDeclStreams(IMG_VOID); - -IMG_VOID * HostCreateMutex(IMG_VOID); -IMG_VOID HostAquireMutex(IMG_VOID * pvMutex); -IMG_VOID HostReleaseMutex(IMG_VOID * pvMutex); -IMG_VOID HostDestroyMutex(IMG_VOID * pvMutex); - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) -IMG_INT32 HostCreateEventObjects(IMG_VOID); -IMG_VOID HostWaitForEvent(DBG_EVENT eEvent); -IMG_VOID HostSignalEvent(DBG_EVENT eEvent); -IMG_VOID HostDestroyEventObjects(IMG_VOID); -#endif /*defined(SUPPORT_DBGDRV_EVENT_OBJECTS) */ - -#endif - -/***************************************************************************** - End of file (HOSTFUNC.H) -*****************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/hotkey.c b/pvr-source/tools/intern/debug/dbgdriv/common/hotkey.c deleted file mode 100755 index 6bf20a6..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/hotkey.c +++ /dev/null @@ -1,199 +0,0 @@ -/*************************************************************************/ /*! -@Title Debug driver utilities implementations. -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@Description Hotkey stuff -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - - -#if !defined(LINUX) && !defined(__QNXNTO__) -#include <ntddk.h> -#include <windef.h> -#endif - -#include "img_types.h" -#include "pvr_debug.h" -#include "dbgdrvif.h" -#include "dbgdriv.h" -#include "hotkey.h" -#include "hostfunc.h" - - - - -/***************************************************************************** - Global vars -*****************************************************************************/ - -IMG_UINT32 g_ui32HotKeyFrame = 0xFFFFFFFF; -IMG_BOOL g_bHotKeyPressed = IMG_FALSE; -IMG_BOOL g_bHotKeyRegistered = IMG_FALSE; - -/* Hotkey stuff */ -PRIVATEHOTKEYDATA g_PrivateHotKeyData; - - -/***************************************************************************** - Code -*****************************************************************************/ - - -/****************************************************************************** - * Function Name: ReadInHotKeys - * - * Inputs : none - * Outputs : - - * Returns : nothing - * Globals Used : - - * - * Description : Gets Hot key entries from system.ini - *****************************************************************************/ -IMG_VOID ReadInHotKeys(IMG_VOID) -{ - g_PrivateHotKeyData.ui32ScanCode = 0x58; /* F12 */ - g_PrivateHotKeyData.ui32ShiftState = 0x0; - - /* - Find buffer names etc.. - */ - HostReadRegistryDWORDFromString("DEBUG\\Streams", "ui32ScanCode" , &g_PrivateHotKeyData.ui32ScanCode); - HostReadRegistryDWORDFromString("DEBUG\\Streams", "ui32ShiftState", &g_PrivateHotKeyData.ui32ShiftState); -} - -/****************************************************************************** - * Function Name: RegisterKeyPressed - * - * Inputs : IMG_UINT32 dwui32ScanCode, PHOTKEYINFO pInfo - * Outputs : - - * Returns : nothing - * Globals Used : - - * - * Description : Called when hotkey pressed. - *****************************************************************************/ -IMG_VOID RegisterKeyPressed(IMG_UINT32 dwui32ScanCode, PHOTKEYINFO pInfo) -{ - PDBG_STREAM psStream; - - PVR_UNREFERENCED_PARAMETER(pInfo); - - if (dwui32ScanCode == g_PrivateHotKeyData.ui32ScanCode) - { - PVR_DPF((PVR_DBG_MESSAGE,"PDUMP Hotkey pressed !\n")); - - psStream = (PDBG_STREAM) g_PrivateHotKeyData.sHotKeyInfo.pvStream; - - if (!g_bHotKeyPressed) - { - /* - Capture the next frame. - */ - g_ui32HotKeyFrame = psStream->psCtrl->ui32Current + 2; - - /* - Do the flag. - */ - g_bHotKeyPressed = IMG_TRUE; - } - } -} - -/****************************************************************************** - * Function Name: ActivateHotKeys - * - * Inputs : - - * Outputs : - - * Returns : - - * Globals Used : - - * - * Description : Installs HotKey callbacks - *****************************************************************************/ -IMG_VOID ActivateHotKeys(PDBG_STREAM psStream) -{ - /* - Setup hotkeys. - */ - ReadInHotKeys(); - - /* - Has it already been allocated. - */ - if (!g_PrivateHotKeyData.sHotKeyInfo.hHotKey) - { - if (g_PrivateHotKeyData.ui32ScanCode != 0) - { - PVR_DPF((PVR_DBG_MESSAGE,"Activate HotKey for PDUMP.\n")); - - /* - Add in stream data. - */ - g_PrivateHotKeyData.sHotKeyInfo.pvStream = psStream; - - DefineHotKey(g_PrivateHotKeyData.ui32ScanCode, g_PrivateHotKeyData.ui32ShiftState, &g_PrivateHotKeyData.sHotKeyInfo); - } - else - { - g_PrivateHotKeyData.sHotKeyInfo.hHotKey = 0; - } - } -} - -/****************************************************************************** - * Function Name: DeactivateHotKeys - * - * Inputs : - - * Outputs : - - * Returns : - - * Globals Used : - - * - * Description : Removes HotKey callbacks - *****************************************************************************/ -IMG_VOID DeactivateHotKeys(IMG_VOID) -{ - if (g_PrivateHotKeyData.sHotKeyInfo.hHotKey != 0) - { - PVR_DPF((PVR_DBG_MESSAGE,"Deactivate HotKey.\n")); - - RemoveHotKey(g_PrivateHotKeyData.sHotKeyInfo.hHotKey); - g_PrivateHotKeyData.sHotKeyInfo.hHotKey = 0; - } -} - - -/***************************************************************************** - End of file (HOTKEY.C) -*****************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/hotkey.h b/pvr-source/tools/intern/debug/dbgdriv/common/hotkey.h deleted file mode 100755 index 7aa2952..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/hotkey.h +++ /dev/null @@ -1,82 +0,0 @@ -/*************************************************************************/ /*! -@Title Debug driver utilities header file. -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@Description Hotkey stuff -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#ifndef _HOTKEY_ -#define _HOTKEY_ - - -typedef struct _hotkeyinfo -{ - IMG_UINT8 ui8ScanCode; - IMG_UINT8 ui8Type; - IMG_UINT8 ui8Flag; - IMG_UINT8 ui8Filler1; - IMG_UINT32 ui32ShiftState; - IMG_UINT32 ui32HotKeyProc; - IMG_VOID *pvStream; - IMG_UINT32 hHotKey; /* handle. */ -} HOTKEYINFO, *PHOTKEYINFO; - -typedef struct _privatehotkeydata -{ - IMG_UINT32 ui32ScanCode; - IMG_UINT32 ui32ShiftState; - HOTKEYINFO sHotKeyInfo; -} PRIVATEHOTKEYDATA, *PPRIVATEHOTKEYDATA; - - -/***************************************************************************** - Hotkey stuff -*****************************************************************************/ -IMG_VOID ReadInHotKeys (IMG_VOID); -IMG_VOID ActivateHotKeys(PDBG_STREAM psStream); -IMG_VOID DeactivateHotKeys(IMG_VOID); - -IMG_VOID RemoveHotKey (IMG_UINT32 hHotKey); -IMG_VOID DefineHotKey (IMG_UINT32 ui32ScanCode, IMG_UINT32 ui32ShiftState, PHOTKEYINFO psInfo); -IMG_VOID RegisterKeyPressed (IMG_UINT32 ui32ScanCode, PHOTKEYINFO psInfo); - -#endif - -/***************************************************************************** - End of file (HOTKEY.H) -*****************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/common/ioctl.c b/pvr-source/tools/intern/debug/dbgdriv/common/ioctl.c deleted file mode 100755 index 1767a9b..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/common/ioctl.c +++ /dev/null @@ -1,827 +0,0 @@ -/*************************************************************************/ /*! -@Title IOCTL implementations for debug device. -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - - -#ifdef LINUX -#include <asm/uaccess.h> -#include "pvr_uaccess.h" -#endif /* LINUX */ - -#include "img_types.h" -#include "dbgdrvif.h" -#include "dbgdriv.h" -#include "hotkey.h" -#include "dbgdriv_ioctl.h" - - -/***************************************************************************** - Code -*****************************************************************************/ - -/***************************************************************************** - FUNCTION : DBGDrivCreateStream - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivCreateStream(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_CREATESTREAM psIn; - IMG_VOID * *ppvOut; - #ifdef LINUX - static IMG_CHAR name[32]; - #endif - - psIn = (PDBG_IN_CREATESTREAM) pvInBuffer; - ppvOut = (IMG_VOID * *) pvOutBuffer; - - #ifdef LINUX - - if(pvr_copy_from_user(name, psIn->u.pszName, 32) != 0) - { - return IMG_FALSE; - } - - *ppvOut = ExtDBGDrivCreateStream(name, psIn->ui32CapMode, psIn->ui32OutMode, 0, psIn->ui32Pages); - - #else - *ppvOut = ExtDBGDrivCreateStream(psIn->u.pszName, psIn->ui32CapMode, psIn->ui32OutMode, DEBUG_FLAGS_NO_BUF_EXPANDSION, psIn->ui32Pages); - #endif - - - return(IMG_TRUE); -} - -/***************************************************************************** - FUNCTION : DBGDrivDestroyStream - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivDestroyStream(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_STREAM *ppsStream; - PDBG_STREAM psStream; - - ppsStream = (PDBG_STREAM *) pvInBuffer; - psStream = (PDBG_STREAM) *ppsStream; - - PVR_UNREFERENCED_PARAMETER( pvOutBuffer); - - ExtDBGDrivDestroyStream(psStream); - - return(IMG_TRUE); -} - -/***************************************************************************** - FUNCTION : DBGDrivGetStream - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivGetStream(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_FINDSTREAM psParams; - IMG_SID * phStream; - - psParams = (PDBG_IN_FINDSTREAM)pvInBuffer; - phStream = (IMG_SID *)pvOutBuffer; - - *phStream = PStream2SID(ExtDBGDrivFindStream(psParams->u.pszName, psParams->bResetStream)); - - return(IMG_TRUE); -} - -/***************************************************************************** - FUNCTION : DBGDrivWriteString - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivWriteString(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_WRITESTRING psParams; - IMG_UINT32 *pui32OutLen; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_WRITESTRING) pvInBuffer; - pui32OutLen = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32OutLen = ExtDBGDrivWriteString(psStream,psParams->u.pszString,psParams->ui32Level); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32OutLen = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivWriteStringCM - - PURPOSE : Same as DBGDrivWriteString, but takes notice of capture mode. - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivWriteStringCM(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_WRITESTRING psParams; - IMG_UINT32 *pui32OutLen; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_WRITESTRING) pvInBuffer; - pui32OutLen = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32OutLen = ExtDBGDrivWriteStringCM(psStream,psParams->u.pszString,psParams->ui32Level); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32OutLen = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivReadString - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivReadString(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - IMG_UINT32 * pui32OutLen; - PDBG_IN_READSTRING psParams; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_READSTRING) pvInBuffer; - pui32OutLen = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32OutLen = ExtDBGDrivReadString(psStream, - psParams->u.pszString,psParams->ui32StringLen); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32OutLen = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivWrite - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivWrite(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - IMG_UINT32 * pui32BytesCopied; - PDBG_IN_WRITE psInParams; - PDBG_STREAM psStream; - - psInParams = (PDBG_IN_WRITE) pvInBuffer; - pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psInParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32BytesCopied = ExtDBGDrivWrite(psStream, - psInParams->u.pui8InBuffer, - psInParams->ui32TransferSize, - psInParams->ui32Level); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32BytesCopied = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivWrite2 - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivWrite2(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - IMG_UINT32 * pui32BytesCopied; - PDBG_IN_WRITE psInParams; - PDBG_STREAM psStream; - - psInParams = (PDBG_IN_WRITE) pvInBuffer; - pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psInParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32BytesCopied = ExtDBGDrivWrite2(psStream, - psInParams->u.pui8InBuffer, - psInParams->ui32TransferSize, - psInParams->ui32Level); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32BytesCopied = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivWriteCM - - PURPOSE : Same as DBGDIOCDrivWrite2, but takes notice of capture mode. - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivWriteCM(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - IMG_UINT32 * pui32BytesCopied; - PDBG_IN_WRITE psInParams; - PDBG_STREAM psStream; - - psInParams = (PDBG_IN_WRITE) pvInBuffer; - pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psInParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32BytesCopied = ExtDBGDrivWriteCM(psStream, - psInParams->u.pui8InBuffer, - psInParams->ui32TransferSize, - psInParams->ui32Level); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32BytesCopied = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivRead - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivRead(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - IMG_UINT32 * pui32BytesCopied; - PDBG_IN_READ psInParams; - PDBG_STREAM psStream; - - psInParams = (PDBG_IN_READ) pvInBuffer; - pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psInParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32BytesCopied = ExtDBGDrivRead(psStream, - psInParams->bReadInitBuffer, - psInParams->ui32OutBufferSize, - psInParams->u.pui8OutBuffer); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32BytesCopied = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivSetCaptureMode - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivSetCaptureMode(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_SETDEBUGMODE psParams; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_SETDEBUGMODE) pvInBuffer; - PVR_UNREFERENCED_PARAMETER(pvOutBuffer); - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - ExtDBGDrivSetCaptureMode(psStream, - psParams->ui32Mode, - psParams->ui32Start, - psParams->ui32End, - psParams->ui32SampleRate); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivSetOutMode - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivSetOutMode(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_SETDEBUGOUTMODE psParams; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_SETDEBUGOUTMODE) pvInBuffer; - PVR_UNREFERENCED_PARAMETER(pvOutBuffer); - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - ExtDBGDrivSetOutputMode(psStream,psParams->ui32Mode); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivSetDebugLevel - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivSetDebugLevel(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_SETDEBUGLEVEL psParams; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_SETDEBUGLEVEL) pvInBuffer; - PVR_UNREFERENCED_PARAMETER(pvOutBuffer); - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - ExtDBGDrivSetDebugLevel(psStream,psParams->ui32Level); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivSetFrame - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivSetFrame(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_SETFRAME psParams; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_SETFRAME) pvInBuffer; - PVR_UNREFERENCED_PARAMETER(pvOutBuffer); - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - ExtDBGDrivSetFrame(psStream,psParams->ui32Frame); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivGetFrame - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivGetFrame(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_STREAM psStream; - IMG_UINT32 *pui32Current; - - pui32Current = (IMG_UINT32 *) pvOutBuffer; - psStream = SID2PStream(*(IMG_SID *)pvInBuffer); - - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32Current = ExtDBGDrivGetFrame(psStream); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32Current = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivIsCaptureFrame - - PURPOSE : Determines if this frame is a capture frame - - PARAMETERS : - - RETURNS : IMG_TRUE if current frame is to be captured -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivIsCaptureFrame(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_ISCAPTUREFRAME psParams; - IMG_UINT32 * pui32Current; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_ISCAPTUREFRAME) pvInBuffer; - pui32Current = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32Current = ExtDBGDrivIsCaptureFrame(psStream, - psParams->bCheckPreviousFrame); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32Current = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivOverrideMode - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivOverrideMode(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_OVERRIDEMODE psParams; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_OVERRIDEMODE) pvInBuffer; - PVR_UNREFERENCED_PARAMETER( pvOutBuffer); - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - ExtDBGDrivOverrideMode(psStream,psParams->ui32Mode); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivDefaultMode - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivDefaultMode(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_STREAM psStream; - - PVR_UNREFERENCED_PARAMETER(pvOutBuffer); - - psStream = SID2PStream(*(IMG_SID *)pvInBuffer); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - ExtDBGDrivDefaultMode(psStream); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivSetMarker - - PURPOSE : Sets the marker in the stream to split output files - - PARAMETERS : pvInBuffer, pvOutBuffer - - RETURNS : success -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivSetMarker(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_SETMARKER psParams; - PDBG_STREAM psStream; - - psParams = (PDBG_IN_SETMARKER) pvInBuffer; - PVR_UNREFERENCED_PARAMETER(pvOutBuffer); - - psStream = SID2PStream(psParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - ExtDBGDrivSetMarker(psStream, psParams->ui32Marker); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivGetMarker - - PURPOSE : Gets the marker in the stream to split output files - - PARAMETERS : pvInBuffer, pvOutBuffer - - RETURNS : success -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivGetMarker(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_STREAM psStream; - IMG_UINT32 *pui32Current; - - pui32Current = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(*(IMG_SID *)pvInBuffer); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32Current = ExtDBGDrivGetMarker(psStream); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32Current = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDrivGetServiceTable - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivGetServiceTable(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - IMG_PVOID * ppvOut; - - PVR_UNREFERENCED_PARAMETER(pvInBuffer); - ppvOut = (IMG_PVOID *) pvOutBuffer; - - *ppvOut = DBGDrivGetServiceTable(); - - return(IMG_TRUE); -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivWriteLF - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivWriteLF(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - PDBG_IN_WRITE_LF psInParams; - IMG_UINT32 *pui32BytesCopied; - PDBG_STREAM psStream; - - psInParams = (PDBG_IN_WRITE_LF) pvInBuffer; - pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psInParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32BytesCopied = ExtDBGDrivWriteLF(psStream, - psInParams->u.pui8InBuffer, - psInParams->ui32BufferSize, - psInParams->ui32Level, - psInParams->ui32Flags); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivReadLF - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivReadLF(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - IMG_UINT32 * pui32BytesCopied; - PDBG_IN_READ psInParams; - PDBG_STREAM psStream; - - psInParams = (PDBG_IN_READ) pvInBuffer; - pui32BytesCopied = (IMG_UINT32 *) pvOutBuffer; - - psStream = SID2PStream(psInParams->hStream); - if (psStream != (PDBG_STREAM)IMG_NULL) - { - *pui32BytesCopied = ExtDBGDrivReadLF(psStream, - psInParams->ui32OutBufferSize, - psInParams->u.pui8OutBuffer); - return(IMG_TRUE); - } - else - { - /* invalid SID */ - *pui32BytesCopied = 0; - return(IMG_FALSE); - } -} - -/***************************************************************************** - FUNCTION : DBGDIOCDrivWaitForEvent - - PURPOSE : - - PARAMETERS : - - RETURNS : -*****************************************************************************/ -static IMG_UINT32 DBGDIOCDrivWaitForEvent(IMG_VOID * pvInBuffer, IMG_VOID * pvOutBuffer) -{ - DBG_EVENT eEvent = (DBG_EVENT)(*(IMG_UINT32 *)pvInBuffer); - - PVR_UNREFERENCED_PARAMETER(pvOutBuffer); - - ExtDBGDrivWaitForEvent(eEvent); - - return(IMG_TRUE); -} - -/* - VxD DIOC interface jump table. -*/ -IMG_UINT32 (*g_DBGDrivProc[25])(IMG_VOID *, IMG_VOID *) = -{ - DBGDIOCDrivCreateStream, - DBGDIOCDrivDestroyStream, - DBGDIOCDrivGetStream, - DBGDIOCDrivWriteString, - DBGDIOCDrivReadString, - DBGDIOCDrivWrite, - DBGDIOCDrivRead, - DBGDIOCDrivSetCaptureMode, - DBGDIOCDrivSetOutMode, - DBGDIOCDrivSetDebugLevel, - DBGDIOCDrivSetFrame, - DBGDIOCDrivGetFrame, - DBGDIOCDrivOverrideMode, - DBGDIOCDrivDefaultMode, - DBGDIOCDrivGetServiceTable, - DBGDIOCDrivWrite2, - DBGDIOCDrivWriteStringCM, - DBGDIOCDrivWriteCM, - DBGDIOCDrivSetMarker, - DBGDIOCDrivGetMarker, - DBGDIOCDrivIsCaptureFrame, - DBGDIOCDrivWriteLF, - DBGDIOCDrivReadLF, - DBGDIOCDrivWaitForEvent -}; - -/***************************************************************************** - End of file (IOCTL.C) -*****************************************************************************/ diff --git a/pvr-source/tools/intern/debug/dbgdriv/linux/hostfunc.c b/pvr-source/tools/intern/debug/dbgdriv/linux/hostfunc.c deleted file mode 100755 index 5d5e9ef..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/linux/hostfunc.c +++ /dev/null @@ -1,395 +0,0 @@ -/*************************************************************************/ /*! -@Title Debug driver file -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ -#include <linux/version.h> -#include <linux/errno.h> -#include <linux/module.h> -#include <linux/fs.h> -#include <linux/kernel.h> -#include <linux/slab.h> -#include <linux/mm.h> -#include <linux/string.h> -#include <asm/page.h> -#include <linux/vmalloc.h> -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,15)) -#include <linux/mutex.h> -#else -#include <asm/semaphore.h> -#endif -#include <linux/hardirq.h> - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) -#include <linux/sched.h> -#include <linux/wait.h> -#include <linux/jiffies.h> -#include <linux/delay.h> -#endif /* defined(SUPPORT_DBGDRV_EVENT_OBJECTS) */ - -#include "img_types.h" -#include "pvr_debug.h" - -#include "dbgdrvif.h" -#include "hostfunc.h" -#include "dbgdriv.h" - -#if defined(MODULE) && defined(DEBUG) && !defined(SUPPORT_DRI_DRM) -IMG_UINT32 gPVRDebugLevel = (DBGPRIV_FATAL | DBGPRIV_ERROR | DBGPRIV_WARNING); - -#define PVR_STRING_TERMINATOR '\0' -#define PVR_IS_FILE_SEPARATOR(character) ( ((character) == '\\') || ((character) == '/') ) - -/******************************************************************************/ - - -/*! -****************************************************************************** - - @Function PVRSRVDebugPrintf - - @Description To output a debug message to the user - - @Input uDebugLevel: The current debug level - @Input pszFile: The source file generating the message - @Input uLine: The line of the source file - @Input pszFormat: The message format string - @Input ...: Zero or more arguments for use by the format string - - @Return none -******************************************************************************/ -void PVRSRVDebugPrintf ( - IMG_UINT32 ui32DebugLevel, - const IMG_CHAR* pszFileName, - IMG_UINT32 ui32Line, - const IMG_CHAR* pszFormat, - ... - ) -{ - IMG_BOOL bTrace; -#if !defined(__sh__) - IMG_CHAR *pszLeafName; - - pszLeafName = (char *)strrchr (pszFileName, '\\'); - - if (pszLeafName) - { - pszFileName = pszLeafName; - } -#endif /* __sh__ */ - - bTrace = (IMG_BOOL)(ui32DebugLevel & DBGPRIV_CALLTRACE) ? IMG_TRUE : IMG_FALSE; - - if (gPVRDebugLevel & ui32DebugLevel) - { - va_list vaArgs; - char szBuffer[256]; - char *szBufferEnd = szBuffer; - char *szBufferLimit = szBuffer + sizeof(szBuffer) - 1; - - /* The Limit - End pointer arithmetic we're doing in snprintf - ensures that our buffer remains null terminated from this */ - *szBufferLimit = '\0'; - - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, "PVR_K:"); - szBufferEnd += strlen(szBufferEnd); - - /* Add in the level of warning */ - if (bTrace == IMG_FALSE) - { - switch(ui32DebugLevel) - { - case DBGPRIV_FATAL: - { - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, "(Fatal):"); - break; - } - case DBGPRIV_ERROR: - { - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, "(Error):"); - break; - } - case DBGPRIV_WARNING: - { - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, "(Warning):"); - break; - } - case DBGPRIV_MESSAGE: - { - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, "(Message):"); - break; - } - case DBGPRIV_VERBOSE: - { - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, "(Verbose):"); - break; - } - default: - { - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, "(Unknown message level)"); - break; - } - } - szBufferEnd += strlen(szBufferEnd); - } - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, " "); - szBufferEnd += strlen(szBufferEnd); - - va_start (vaArgs, pszFormat); - vsnprintf(szBufferEnd, szBufferLimit - szBufferEnd, pszFormat, vaArgs); - va_end (vaArgs); - szBufferEnd += strlen(szBufferEnd); - - /* - * Metrics and Traces don't need a location - */ - if (bTrace == IMG_FALSE) - { - snprintf(szBufferEnd, szBufferLimit - szBufferEnd, - " [%d, %s]", (int)ui32Line, pszFileName); - szBufferEnd += strlen(szBufferEnd); - } - - printk(KERN_INFO "%s\r\n", szBuffer); - } -} -#endif /* defined(DEBUG) && !defined(SUPPORT_DRI_DRM) */ - -/*! -****************************************************************************** - - @Function HostMemSet - - @Description Function that does the same as the C memset() function - - @Modified *pvDest : pointer to start of buffer to be set - - @Input ui8Value: value to set each byte to - - @Input ui32Size : number of bytes to set - - @Return IMG_VOID - -******************************************************************************/ -IMG_VOID HostMemSet(IMG_VOID *pvDest, IMG_UINT8 ui8Value, IMG_UINT32 ui32Size) -{ - memset(pvDest, (int) ui8Value, (size_t) ui32Size); -} - -/*! -****************************************************************************** - - @Function HostMemCopy - - @Description Function that does the same as the C memscpy() function - - @Input pvDst - pointer to dst - @Output pvSrc - pointer to src - @Input ui32Size - bytes to copy - - @Return none - -******************************************************************************/ -IMG_VOID HostMemCopy(IMG_VOID *pvDst, IMG_VOID *pvSrc, IMG_UINT32 ui32Size) -{ -#if defined(USE_UNOPTIMISED_MEMCPY) - unsigned char *src,*dst; - int i; - - src=(unsigned char *)pvSrc; - dst=(unsigned char *)pvDst; - for(i=0;i<ui32Size;i++) - { - dst[i]=src[i]; - } -#else - memcpy(pvDst, pvSrc, ui32Size); -#endif -} - -IMG_UINT32 HostReadRegistryDWORDFromString(char *pcKey, char *pcValueName, IMG_UINT32 *pui32Data) -{ - /* FIXME: Not yet implemented */ - return 0; -} - -IMG_VOID * HostPageablePageAlloc(IMG_UINT32 ui32Pages) -{ - return (void*)vmalloc(ui32Pages * PAGE_SIZE);/*, GFP_KERNEL);*/ -} - -IMG_VOID HostPageablePageFree(IMG_VOID * pvBase) -{ - vfree(pvBase); -} - -IMG_VOID * HostNonPageablePageAlloc(IMG_UINT32 ui32Pages) -{ - return (void*)vmalloc(ui32Pages * PAGE_SIZE);/*, GFP_KERNEL);*/ -} - -IMG_VOID HostNonPageablePageFree(IMG_VOID * pvBase) -{ - vfree(pvBase); -} - -IMG_VOID * HostMapKrnBufIntoUser(IMG_VOID * pvKrnAddr, IMG_UINT32 ui32Size, IMG_VOID **ppvMdl) -{ - /* FIXME: Not yet implemented */ - return IMG_NULL; -} - -IMG_VOID HostUnMapKrnBufFromUser(IMG_VOID * pvUserAddr, IMG_VOID * pvMdl, IMG_VOID * pvProcess) -{ - /* FIXME: Not yet implemented */ -} - -IMG_VOID HostCreateRegDeclStreams(IMG_VOID) -{ - /* FIXME: Not yet implemented */ -} - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37)) -typedef struct mutex MUTEX; -#define INIT_MUTEX(m) mutex_init(m) -#define DOWN_TRYLOCK(m) (!mutex_trylock(m)) -#define DOWN(m) mutex_lock(m) -#define UP(m) mutex_unlock(m) -#else -typedef struct semaphore MUTEX; -#define INIT_MUTEX(m) init_MUTEX(m) -#define DOWN_TRYLOCK(m) down_trylock(m) -#define DOWN(m) down(m) -#define UP(m) up(m) -#endif - -IMG_VOID *HostCreateMutex(IMG_VOID) -{ - MUTEX *psMutex; - - psMutex = kmalloc(sizeof(*psMutex), GFP_KERNEL); - if (psMutex) - { - INIT_MUTEX(psMutex); - } - - return psMutex; -} - -IMG_VOID HostAquireMutex(IMG_VOID * pvMutex) -{ - BUG_ON(in_interrupt()); - -#if defined(PVR_DEBUG_DBGDRV_DETECT_HOST_MUTEX_COLLISIONS) - if (DOWN_TRYLOCK((MUTEX *)pvMutex)) - { - printk(KERN_INFO "HostAquireMutex: Waiting for mutex\n"); - DOWN((MUTEX *)pvMutex); - } -#else - DOWN((MUTEX *)pvMutex); -#endif -} - -IMG_VOID HostReleaseMutex(IMG_VOID * pvMutex) -{ - UP((MUTEX *)pvMutex); -} - -IMG_VOID HostDestroyMutex(IMG_VOID * pvMutex) -{ - if (pvMutex) - { - kfree(pvMutex); - } -} - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - -#define EVENT_WAIT_TIMEOUT_MS 500 -#define EVENT_WAIT_TIMEOUT_JIFFIES (EVENT_WAIT_TIMEOUT_MS * HZ / 1000) - -static int iStreamData; -static wait_queue_head_t sStreamDataEvent; - -IMG_INT32 HostCreateEventObjects(IMG_VOID) -{ - init_waitqueue_head(&sStreamDataEvent); - - return 0; -} - -IMG_VOID HostWaitForEvent(DBG_EVENT eEvent) -{ - switch(eEvent) - { - case DBG_EVENT_STREAM_DATA: - /* - * More than one process may be woken up. - * Any process that wakes up should consume - * all the data from the streams. - */ - wait_event_interruptible_timeout(sStreamDataEvent, iStreamData != 0, EVENT_WAIT_TIMEOUT_JIFFIES); - iStreamData = 0; - break; - default: - /* - * For unknown events, enter an interruptible sleep. - */ - msleep_interruptible(EVENT_WAIT_TIMEOUT_MS); - break; - } -} - -IMG_VOID HostSignalEvent(DBG_EVENT eEvent) -{ - switch(eEvent) - { - case DBG_EVENT_STREAM_DATA: - iStreamData = 1; - wake_up_interruptible(&sStreamDataEvent); - break; - default: - break; - } -} - -IMG_VOID HostDestroyEventObjects(IMG_VOID) -{ -} -#endif /* defined(SUPPORT_DBGDRV_EVENT_OBJECTS) */ diff --git a/pvr-source/tools/intern/debug/dbgdriv/linux/main.c b/pvr-source/tools/intern/debug/dbgdriv/linux/main.c deleted file mode 100755 index c1ca85b..0000000 --- a/pvr-source/tools/intern/debug/dbgdriv/linux/main.c +++ /dev/null @@ -1,355 +0,0 @@ -/*************************************************************************/ /*! -@Title Debug driver main file -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ -#include <linux/errno.h> -#include <linux/module.h> -#include <linux/fs.h> -#include <linux/kernel.h> -#include <linux/kdev_t.h> -#include <linux/pci.h> -#include <linux/list.h> -#include <linux/init.h> -#include <linux/vmalloc.h> -#include <linux/version.h> - -#if defined(LDM_PLATFORM) && !defined(SUPPORT_DRI_DRM) -#include <linux/platform_device.h> -#endif - -#if defined(LDM_PCI) && !defined(SUPPORT_DRI_DRM) -#include <linux/pci.h> -#endif - -#include <asm/uaccess.h> - -#if defined(SUPPORT_DRI_DRM) -#include "drmP.h" -#include "drm.h" -#endif - -#include "img_types.h" -#include "linuxsrv.h" -#include "dbgdriv_ioctl.h" -#include "dbgdrvif.h" -#include "dbgdriv.h" -#include "hostfunc.h" -#include "hotkey.h" -#include "pvr_debug.h" -#include "pvrmodule.h" -#include "pvr_uaccess.h" - -#if defined(SUPPORT_DRI_DRM) - -#include "pvr_drm_shared.h" -#include "pvr_drm.h" - -#else /* defined(SUPPORT_DRI_DRM) */ - -#define DRVNAME "dbgdrv" -MODULE_SUPPORTED_DEVICE(DRVNAME); - -#if (defined(LDM_PLATFORM) || defined(LDM_PCI)) && !defined(SUPPORT_DRI_DRM) -static struct class *psDbgDrvClass; -#endif - -static int AssignedMajorNumber = 0; - -long dbgdrv_ioctl(struct file *, unsigned int, unsigned long); - -static int dbgdrv_open(struct inode unref__ * pInode, struct file unref__ * pFile) -{ - return 0; -} - -static int dbgdrv_release(struct inode unref__ * pInode, struct file unref__ * pFile) -{ - return 0; -} - -static int dbgdrv_mmap(struct file* pFile, struct vm_area_struct* ps_vma) -{ - return 0; -} - -static struct file_operations dbgdrv_fops = { - .owner = THIS_MODULE, - .unlocked_ioctl = dbgdrv_ioctl, - .open = dbgdrv_open, - .release = dbgdrv_release, - .mmap = dbgdrv_mmap, -}; - -#endif /* defined(SUPPORT_DRI_DRM) */ - -IMG_VOID DBGDrvGetServiceTable(DBGKM_SERVICE_TABLE **fn_table) -{ - extern DBGKM_SERVICE_TABLE g_sDBGKMServices; - - *fn_table = &g_sDBGKMServices; -} - -#if defined(SUPPORT_DRI_DRM) -void dbgdrv_cleanup(void) -#else -static void __exit dbgdrv_cleanup(void) -#endif -{ -#if !defined(SUPPORT_DRI_DRM) -#if defined(LDM_PLATFORM) || defined(LDM_PCI) - device_destroy(psDbgDrvClass, MKDEV(AssignedMajorNumber, 0)); - class_destroy(psDbgDrvClass); -#endif - unregister_chrdev(AssignedMajorNumber, DRVNAME); -#endif /* !defined(SUPPORT_DRI_DRM) */ -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - HostDestroyEventObjects(); -#endif - HostDestroyMutex(g_pvAPIMutex); - return; -} - -#if defined(SUPPORT_DRI_DRM) -IMG_INT dbgdrv_init(void) -#else -static int __init dbgdrv_init(void) -#endif -{ -#if (defined(LDM_PLATFORM) || defined(LDM_PCI)) && !defined(SUPPORT_DRI_DRM) - struct device *psDev; -#endif - -#if !defined(SUPPORT_DRI_DRM) - int err = -EBUSY; -#endif - - /* Init API mutex */ - if ((g_pvAPIMutex=HostCreateMutex()) == IMG_NULL) - { - return -ENOMEM; - } - -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - /* - * The current implementation of HostCreateEventObjects on Linux - * can never fail, so there is no need to check for error. - */ - (void) HostCreateEventObjects(); -#endif - -#if !defined(SUPPORT_DRI_DRM) - AssignedMajorNumber = - register_chrdev(AssignedMajorNumber, DRVNAME, &dbgdrv_fops); - - if (AssignedMajorNumber <= 0) - { - PVR_DPF((PVR_DBG_ERROR," unable to get major\n")); - goto ErrDestroyEventObjects; - } - -#if defined(LDM_PLATFORM) || defined(LDM_PCI) - /* - * This code (using GPL symbols) facilitates automatic device - * node creation on platforms with udev (or similar). - */ - psDbgDrvClass = class_create(THIS_MODULE, DRVNAME); - if (IS_ERR(psDbgDrvClass)) - { - PVR_DPF((PVR_DBG_ERROR, "%s: unable to create class (%ld)", - __func__, PTR_ERR(psDbgDrvClass))); - goto ErrUnregisterCharDev; - } - - psDev = device_create(psDbgDrvClass, NULL, MKDEV(AssignedMajorNumber, 0), -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,26)) - NULL, -#endif - DRVNAME); - if (IS_ERR(psDev)) - { - PVR_DPF((PVR_DBG_ERROR, "%s: unable to create device (%ld)", - __func__, PTR_ERR(psDev))); - goto ErrDestroyClass; - } -#endif /* defined(LDM_PLATFORM) || defined(LDM_PCI) */ -#endif /* !defined(SUPPORT_DRI_DRM) */ - - return 0; - -#if !defined(SUPPORT_DRI_DRM) -ErrDestroyEventObjects: -#if defined(SUPPORT_DBGDRV_EVENT_OBJECTS) - HostDestroyEventObjects(); -#endif -#if defined(LDM_PLATFORM) || defined(LDM_PCI) -ErrUnregisterCharDev: - unregister_chrdev(AssignedMajorNumber, DRVNAME); -ErrDestroyClass: - class_destroy(psDbgDrvClass); -#endif - return err; -#endif /* !defined(SUPPORT_DRI_DRM) */ -} - -#if defined(SUPPORT_DRI_DRM) -int dbgdrv_ioctl(struct drm_device *dev, IMG_VOID *arg, struct drm_file *pFile) -#else -long dbgdrv_ioctl(struct file *file, unsigned int ioctlCmd, unsigned long arg) -#endif -{ - IOCTL_PACKAGE *pIP = (IOCTL_PACKAGE *) arg; - char *buffer, *in, *out; - unsigned int cmd; - - if((pIP->ui32InBufferSize > (PAGE_SIZE >> 1) ) || (pIP->ui32OutBufferSize > (PAGE_SIZE >> 1))) - { - PVR_DPF((PVR_DBG_ERROR,"Sizes of the buffers are too large, cannot do ioctl\n")); - return -1; - } - - buffer = (char *) HostPageablePageAlloc(1); - if(!buffer) - { - PVR_DPF((PVR_DBG_ERROR,"Failed to allocate buffer, cannot do ioctl\n")); - return -EFAULT; - } - - in = buffer; - out = buffer + (PAGE_SIZE >>1); - - if(pvr_copy_from_user(in, pIP->pInBuffer, pIP->ui32InBufferSize) != 0) - { - goto init_failed; - } - - /* Extra -1 because ioctls start at DEBUG_SERVICE_IOCTL_BASE + 1 */ - cmd = MAKEIOCTLINDEX(pIP->ui32Cmd) - DEBUG_SERVICE_IOCTL_BASE - 1; - - if(pIP->ui32Cmd == DEBUG_SERVICE_READ) - { - IMG_UINT32 *pui32BytesCopied = (IMG_UINT32 *)out; - DBG_IN_READ *psReadInParams = (DBG_IN_READ *)in; - DBG_STREAM *psStream; - IMG_CHAR *ui8Tmp; - - ui8Tmp = vmalloc(psReadInParams->ui32OutBufferSize); - - if(!ui8Tmp) - { - goto init_failed; - } - - psStream = SID2PStream(psReadInParams->hStream); - if(!psStream) - { - goto init_failed; - } - - *pui32BytesCopied = ExtDBGDrivRead(psStream, - psReadInParams->bReadInitBuffer, - psReadInParams->ui32OutBufferSize, - ui8Tmp); - - if(pvr_copy_to_user(psReadInParams->u.pui8OutBuffer, - ui8Tmp, - *pui32BytesCopied) != 0) - { - vfree(ui8Tmp); - goto init_failed; - } - - vfree(ui8Tmp); - } - else - { - (g_DBGDrivProc[cmd])(in, out); - } - - if(copy_to_user(pIP->pOutBuffer, out, pIP->ui32OutBufferSize) != 0) - { - goto init_failed; - } - - HostPageablePageFree((IMG_VOID *)buffer); - return 0; - -init_failed: - HostPageablePageFree((IMG_VOID *)buffer); - return -EFAULT; -} - - -/****************************************************************************** - * Function Name: RemoveHotKey - * - * Inputs : - - * Outputs : - - * Returns : - - * Globals Used : - - * - * Description : Removes HotKey callbacks - *****************************************************************************/ -IMG_VOID RemoveHotKey (IMG_UINT32 hHotKey) -{ - PVR_UNREFERENCED_PARAMETER(hHotKey); -} - -/****************************************************************************** - * Function Name: DefineHotKey - * - * Inputs : - - * Outputs : - - * Returns : - - * Globals Used : - - * - * Description : Removes HotKey callbacks - *****************************************************************************/ -IMG_VOID DefineHotKey (IMG_UINT32 ui32ScanCode, IMG_UINT32 ui32ShiftState, PHOTKEYINFO psInfo) -{ - PVR_UNREFERENCED_PARAMETER(ui32ScanCode); - PVR_UNREFERENCED_PARAMETER(ui32ShiftState); - PVR_UNREFERENCED_PARAMETER(psInfo); -} - -EXPORT_SYMBOL(DBGDrvGetServiceTable); - -#if !defined(SUPPORT_DRI_DRM) -subsys_initcall(dbgdrv_init); -module_exit(dbgdrv_cleanup); -#endif |