diff options
| author | Wengang Wu <wgw@motorola.com> | 2014-02-27 16:06:00 -0600 | 
|---|---|---|
| committer | James Wylder <jwylder@motorola.com> | 2014-03-05 17:47:30 -0600 | 
| commit | 9324804a1754c81b55b24e37e87707c9151a3afb (patch) | |
| tree | 6b12aee8b90b0f9d623db97a46e6aadaf0bdc68f /drivers/gpu/pvr/tools/intern/debug/dbgdriv/common/ioctl.c | |
| parent | 784d7e49932e090b3c611ea063a88106425eab92 (diff) | |
| download | olio-linux-3.10-9324804a1754c81b55b24e37e87707c9151a3afb.tar.xz olio-linux-3.10-9324804a1754c81b55b24e37e87707c9151a3afb.zip  | |
IKXCLOCK-343 Initial TI SGX Android DDK version 1.9@2166536
Original source code pulled in from TI SGX Android DDK 1.9@2166536
Change-Id: Ibcdb0016a6b1ca2e26583c578eb690cc9cd57708
Diffstat (limited to 'drivers/gpu/pvr/tools/intern/debug/dbgdriv/common/ioctl.c')
| -rw-r--r-- | drivers/gpu/pvr/tools/intern/debug/dbgdriv/common/ioctl.c | 827 | 
1 files changed, 827 insertions, 0 deletions
diff --git a/drivers/gpu/pvr/tools/intern/debug/dbgdriv/common/ioctl.c b/drivers/gpu/pvr/tools/intern/debug/dbgdriv/common/ioctl.c new file mode 100644 index 00000000000..1767a9b2a19 --- /dev/null +++ b/drivers/gpu/pvr/tools/intern/debug/dbgdriv/common/ioctl.c @@ -0,0 +1,827 @@ +/*************************************************************************/ /*! +@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) +*****************************************************************************/  |