📄 resman.h
字号:
/*!****************************************************************************
@File resman.h
@Title Resource Manager API
@Author Imagination Technologies
@date 27/11/03
@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 Provide resource management
@DoxygenVer
******************************************************************************/
/******************************************************************************
Modifications :-
$Log: resman.h $
*****************************************************************************/
#ifndef __RESMAN_H__
#define __RESMAN_H__
#if defined(__linux__) && defined(__KERNEL__)
#include <linux/types.h>
off_t
ResManPrintAllProcessResources (char * buffer, size_t size, off_t off);
#endif
/***************************************************************************************
* resman definitions
**************************************************************************************/
#define RESMAN_TYPE_ACQUIRE_DEVICE_DATA 0x00000001 /*!< device data resource */
#define RESMAN_TYPE_FRAMBUFMEM 0x00000002 /*!< FB memory resource */
#define RESMAN_TYPE_PROCESS_TERM 0x00000004 /*!< process terminate resource */
#define RESMAN_TYPE_RENDERTARGET 0x00000080 /*!< TA resource */
#define RESMAN_TYPE_PARAMBUFF 0x00000200 /*!< PB resource */
#define RESMAN_TYPE_CMDQUEUE 0x00000400 /*!< Cmd Q resource */
#define RESMAN_TYPE_PRIMSURF 0x00000800 /*!< primary surface resource */
#define RESMAN_TYPE_MPEGCONNECT 0x00010000 /*!< mpeg connect resource */
#define RESMAN_CRITERIA_ALL 0x00000000 /*!< match by criteria all */
#define RESMAN_CRITERIA_RESTYPE 0x00000001 /*!< match by criteria type */
#define RESMAN_CRITERIA_PVOID_PARAM 0x00000002 /*!< match by criteria param1 */
#define RESMAN_CRITERIA_UI32_PARAM 0x00000004 /*!< match by criteria param2 */
#define RESMAN_CRITERIA_AUTOFREE 0x00000008 /*!< match by criteria auto */
#define RESMAN_CRITERIA_FREEONCE 0x00000010 /*!< match by criteria free once */
#define RESMAN_PROCESSID_FIND 0xffffffff /*!< find process flag */
#define RESMAN_AUTOFREE_OFF 0x00000000 /*!< auto free control flag */
#define RESMAN_AUTOFREE_LEV1 0x10000000 /*!< autofree level1: render targets and PB */
#define RESMAN_AUTOFREE_LEV2 0x20000000 /*!< autofree level2: primary surface */
#define RESMAN_AUTOFREE_LEV3 0x30000000 /*!< autofree level3: command queues */
#define RESMAN_AUTOFREE_LEV4 0x40000000 /*!< autofree level4: device memory */
#define RESMAN_AUTOFREE_LEV5 0x50000000 /*!< autofree level5: devinfo */
#define RESMAN_FLAGS_CALLER_ALLOCED_BUF 0x00000001 /*!< caller alloc'ed buffer flag */
#define RESMAN_FLAGS_AUTOFREE_MASK 0xf0000000 /*!< autofree mask */
typedef PVRSRV_ERROR (*RESMAN_FREE_FN)(IMG_UINT32 ui32ProcessID, IMG_PVOID pvParam, IMG_UINT32 ui32Param);
/*!< resman registered callback */
/***************************************************************************************
* resman structures
**************************************************************************************/
/*!
************************************************************************************
resman item structure
***********************************************************************************/
typedef struct _RESMAN_ITEM_
{
#ifdef DEBUG
IMG_UINT32 ui32Signature;
#endif
struct _RESMAN_ITEM_ *psPrev; /*!< list navigation */
struct _RESMAN_ITEM_ *psNext; /*!< list navigation */
IMG_UINT32 ui32Flags; /*!< flags */
IMG_UINT32 ui32ResType;/*!< res type */
IMG_PVOID pvParam; /*!< param1 for callback */
IMG_UINT32 ui32Param; /*!< param2 for callback */
RESMAN_FREE_FN pfnFreeResource;/*!< resman item free callback */
IMG_UINT32 ui32ProcessID;/*!< process id owns res item */
}RESMAN_ITEM;
/*!
************************************************************************************
resman process structure
***********************************************************************************/
typedef struct _RESMAN_PROCESS_
{
#ifdef DEBUG
IMG_UINT32 ui32Signature;
#endif
struct _RESMAN_PROCESS_ *psPrev;/*!< list navigation */
struct _RESMAN_PROCESS_ *psNext;/*!< list navigation */
IMG_UINT32 ui32ProcessID;/*!< process id */
IMG_UINT32 ui32RefCount; /*!< reference count */
RESMAN_ITEM *psResItemList;/*!< res item list for process */
}RESMAN_PROCESS, *PRESMAN_PROCESS;
/*!
************************************************************************************
resman list structure
***********************************************************************************/
typedef struct
{
RESMAN_PROCESS *psProcessList; /*!< resman process list */
} RESMAN_LIST, *PRESMAN_LIST;
/***************************************************************************************
* Resman Functions
**************************************************************************************/
IMG_VOID ResManInit(IMG_VOID);
IMG_VOID ResManProcessConnect(IMG_UINT32 ui32ProcID);
IMG_VOID ResManProcessDisconnect(IMG_UINT32 ui32ProcID);
RESMAN_ITEM *ResManRegisterRes(RESMAN_ITEM *psResItem2Use,
IMG_UINT32 ui32ResType,
IMG_PVOID pvParam,
IMG_UINT32 ui32Param,
RESMAN_FREE_FN pfnFreeResource,
IMG_UINT32 ui32AutoFreeLev);
PVRSRV_ERROR ResManFreeResByPtr(RESMAN_ITEM *psResItem);
PVRSRV_ERROR ResManFreeResByCriteria(IMG_UINT32 ui32SearchCriteria,
IMG_UINT32 ui32ResType,
IMG_PVOID pvParam,
IMG_UINT32 ui32Param,
IMG_UINT32 ui32AutoFreeLev);
IMG_VOID ResManSetPowerState(PVR_POWER_STATE ePVRState, IMG_UINT32 ui32Flags);
#endif /* __RESMAN_H__ */
/*---------------------------- End of File -------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -