📄 hostfunc.h
字号:
/*!****************************************************************************
@File hostfunc.h
@Title Host functions header
@Author Imagination Technologies
@date 23rd May 2002
@Copyright Copyright 2003-2004 by Imagination Technologies Limited.
All rights reserved. No part of this software, either
material or conceptual may be copied or distributed,
transmitted, transcribed, stored in a retrieval system
or translated into any human or computer language in any
form by any means, electronic, mechanical, manual or
other-wise, or disclosed to third parties without the
express written permission of Imagination Technologies
Limited, Unit 8, HomePark Industrial Estate,
King's Langley, Hertfordshire, WD4 8LZ, U.K.
@Platform generic
@Description OS specific API definitions
@DoxygenVer
******************************************************************************/
/******************************************************************************
Modifications :-
$Log: hostfunc.h $
*****************************************************************************/
#ifdef DEBUG_RELEASE_BUILD
#pragma optimize( "", off )
#define DEBUG 1
#endif
#if !defined(__HOSTFUNC_H__)
#define __HOSTFUNC_H__
#if defined (__cplusplus)
extern "C" {
#endif
/*****************************************************************************
* Static defines
*****************************************************************************/
#define HOSTFUNC_ISR_ID 0xffffffffL
#define HOST_PAGESIZE HostGetPageSize
#define HOST_PAGEMASK (~(HOST_PAGESIZE()-1))
#define HOST_PAGEALIGN(addr) (((addr)+HOST_PAGESIZE()-1)&HOST_PAGEMASK)
/****************************************************************************
* Host memory heaps
****************************************************************************/
#define PVRSRV_HOST_HEAP_MASK 0xf /*!< host heap flags mask */
#define PVRSRV_HOST_PAGEABLE_HEAP 0x0 /*!< pageable host allocation flag */
#define PVRSRV_HOST_NON_PAGEABLE_HEAP 0x1 /*!< non-pageable host allocation flag */
#define PVRSRV_HOST_NON_CACHED_HEAP 0x2 /*!< non-cached host allocation flag */
#define PVRSRV_HOST_MAX_HEAP 0x2 /*!< max heaps */
#define CACHETYPE_UNCACHED 0x00000001 /*!< cache type, uncached */
#define CACHETYPE_CACHED 0x00000002 /*!< cache type, cached */
#define CACHETYPE_WRITECOMBINED 0x00000004 /*!< cache type, writecombined */
#define EXTRA_CACHETYPE_SHARED 0x00000008 /*!< cache type, shared */
#define EXTRA_CACHETYPE_VIRTUAL 0x00000010 /*!< cache type, address to map is virtual not phys */
IMG_UINT32 HostGetPageSize(IMG_VOID);
PVRSRV_ERROR HostInstallISR(IMG_UINT32 ui32Irq, const IMG_CHAR *pszISRName, IMG_VOID *pvData, IMG_BOOL bIsSystemISR);
PVRSRV_ERROR HostUnInstallISR(IMG_UINT32 ui32Irq, IMG_VOID *pvData);
IMG_CPU_PHYADDR HostMapLinToCPUPhys(IMG_VOID* pvLinAddr);
IMG_VOID HostMemCopy(IMG_VOID *pvDst, IMG_VOID *pvSrc, IMG_UINT32 ui32Size);
IMG_VOID *HostMapPhysToLin (IMG_CPU_PHYADDR BasePAddr, IMG_UINT32 ui32Bytes, IMG_UINT32 ui32CacheType);
IMG_BOOL HostUnMapPhysToLin(IMG_VOID *pvLinAddr, IMG_UINT32 ui32Bytes);
IMG_UINT32 HostGetCurrentProcessID(IMG_VOID);
IMG_VOID HostMemSet(IMG_VOID *pvDest, IMG_UINT8 ui8Value, IMG_UINT32 ui32Size);
IMG_VOID *HostAllocUserModeMem(IMG_UINT32 ui32Size);
IMG_VOID HostFreeUserModeMem(IMG_VOID *pvMem, IMG_VOID *pvProcess);
IMG_BOOL HostReadRegistryString( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_CHAR *pszOutBuf, IMG_UINT32 ui32OutBufSize );
IMG_BOOL HostReadRegistryBinary( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_VOID *pszOutBuf, IMG_UINT32 *pui32OutBufSize );
IMG_BOOL HostReadRegistryInt( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_UINT32 *pui32Data );
IMG_BOOL HostWriteRegistryString( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_CHAR *pszInBuf );
IMG_BOOL HostWriteRegistryBinary( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_CHAR *pszInBuf, IMG_UINT32 ui32InBufSize );
IMG_VOID *HostPageableByteAlloc(IMG_UINT32 ui32Bytes);
IMG_VOID HostPageableByteFree(IMG_VOID *pvBase);
PVRSRV_ERROR HostAllocMem(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOID *ppvLinAddr, IMG_UINT32 ui32OwnerAddr);
PVRSRV_ERROR HostFreeMem(IMG_UINT32 ui32Flags, IMG_PVOID pvLinAddr);
PVRSRV_ERROR HostInitEnvData (IMG_PVOID *ppvEnvSpecificData);
PVRSRV_ERROR HostDeInitEnvData (IMG_PVOID pvEnvSpecificData);
IMG_BOOL HostNoResManOnThisProcess(IMG_UINT32 ui32ProcessID);
#ifdef LOCAL_MEMORY_SELF_REFRESH
HANDLE HostWatchLocalMemory(IMG_VOID *psDevInfo);
IMG_VOID HostLocalMemoryThreadRoutine(IMG_VOID *psDevInfo);
#endif // LOCAL_MEMORY_SELF_REFRESH
/*****************************************************************************************************************/
// FIXME: Marathin hacking
#ifdef SUPPORT_MARATHON_DEVICE
/* Added to work around the writecombining problem at low clock rates */
#define ADJUSTWRITECOMBINING
#endif
#ifdef ADJUSTWRITECOMBINING
extern PVRSRV_ERROR HostDisableWriteCombining ();
extern PVRSRV_ERROR HostEnableWriteCombining ();
#endif
typedef struct _WRITE_COMBINED_MEM_TAG_
{
IMG_PVOID pvAddress;
IMG_UINT32 ui32MapSize;
struct _WRITE_COMBINED_MEM_TAG_ *psNext;
}WRITE_COMBINED_MEM_TAG, *PWRITE_COMBINED_MEM_TAG;
/*******************************************************************************************************************/
PVRSRV_ERROR HostOpenEvent(PVRSRV_MUTEX_HANDLE *phWaitEventHandle);
PVRSRV_ERROR HostCreateEvent (PVRSRV_MUTEX_HANDLE *phEvent);
PVRSRV_ERROR HostSetEvent (PVRSRV_MUTEX_HANDLE hEvent);
PVRSRV_ERROR HostReleaseEvent (PVRSRV_MUTEX_HANDLE hEvent);
PVRSRV_ERROR HostCreateMutex (PVRSRV_MUTEX_HANDLE *phMutex);
PVRSRV_ERROR HostDestroyMutex (PVRSRV_MUTEX_HANDLE *hMutex);
PVRSRV_ERROR HostAcquireMutex (PVRSRV_MUTEX_HANDLE *hMutex, IMG_BOOL bBlock);
PVRSRV_ERROR HostReleaseMutex (PVRSRV_MUTEX_HANDLE * hMutex);
PVRSRV_ERROR HostLockResource (PVRSRV_RES_HANDLE *phResource, IMG_BOOL bBlock);
PVRSRV_ERROR HostUnlockResource (PVRSRV_RES_HANDLE *phResource);
#ifdef DEBUG
IMG_BOOL HostIsResourceLocked (PVRSRV_RES_HANDLE *phResource);
#endif
PVRSRV_ERROR HostCreateResource (PVRSRV_RES_HANDLE *phResource);
PVRSRV_ERROR HostDestroyResource (PVRSRV_RES_HANDLE *phResource);
PVRSRV_ERROR HostBreakResource(IMG_UINT32 ui32ProcessID, PVRSRV_RES_HANDLE *phRes);
IMG_UINT32 HostClockus (IMG_VOID);
IMG_VOID HostWaitus (IMG_UINT32 ui32Timeus);
IMG_VOID HostReleaseThreadQuanta (IMG_VOID);
IMG_UINT32 HostPCIReadDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg);
IMG_VOID HostPCIWriteDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg, IMG_UINT32 ui32Value);
IMG_UINT32 HostReadHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset);
IMG_VOID HostWriteHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value);
#if defined (__cplusplus)
}
#endif
#endif /* __HOSTFUNC_H__ */
/*--------------------------------- end of file ------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -