1
/**********************************************************************
3
* Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
5
* This program is free software; you can redistribute it and/or modify it
6
* under the terms and conditions of the GNU General Public License,
7
* version 2, as published by the Free Software Foundation.
9
* This program is distributed in the hope it will be useful but, except
10
* as otherwise stated in writing, without any warranty; without even the
11
* implied warranty of merchantability or fitness for a particular purpose.
12
* See the GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License along with
15
* this program; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
* The full GNU General Public License is included in this distribution in
19
* the file called "COPYING".
21
* Contact Information:
22
* Imagination Technologies Ltd. <gpl-support@imgtec.com>
23
* Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
25
******************************************************************************/
27
#if !defined(__MMAP_H__)
31
#include <linux/list.h>
36
typedef struct KV_OFFSET_STRUCT_TAG
39
IMG_UINT32 ui32Mapped;
42
IMG_UINT32 ui32MMapOffset;
44
IMG_UINT32 ui32RealByteSize;
47
LinuxMemArea *psLinuxMemArea;
59
IMG_UINT32 ui32RefCount;
62
IMG_UINT32 ui32UserVAddr;
65
#if defined(DEBUG_LINUX_MMAP_AREAS)
66
const IMG_CHAR *pszName;
70
struct list_head sMMapItem;
73
struct list_head sAreaItem;
74
}KV_OFFSET_STRUCT, *PKV_OFFSET_STRUCT;
78
IMG_VOID PVRMMapInit(IMG_VOID);
81
IMG_VOID PVRMMapCleanup(IMG_VOID);
84
PVRSRV_ERROR PVRMMapRegisterArea(LinuxMemArea *psLinuxMemArea);
87
PVRSRV_ERROR PVRMMapRemoveRegisteredArea(LinuxMemArea *psLinuxMemArea);
90
PVRSRV_ERROR PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc,
92
IMG_UINT32 *pui32MMapOffset,
93
IMG_UINT32 *pui32ByteOffset,
94
IMG_UINT32 *pui32RealByteSize, IMG_UINT32 *pui32UserVAddr);
97
PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc,
100
IMG_UINT32 *pui32RealByteSize,
101
IMG_UINT32 *pui32UserVAddr);
103
int PVRMMap(struct file* pFile, struct vm_area_struct* ps_vma);