⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resman.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 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 + -