1.3.13.1607/3_00_00_08+flat+Lindent
[sgx.git] / pvr / mmap.h
1 /**********************************************************************
2  *
3  * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
4  * 
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.
8  * 
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.
13  * 
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.
17  * 
18  * The full GNU General Public License is included in this distribution in
19  * the file called "COPYING".
20  *
21  * Contact Information:
22  * Imagination Technologies Ltd. <gpl-support@imgtec.com>
23  * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK 
24  *
25  ******************************************************************************/
26
27 #if !defined(__MMAP_H__)
28 #define __MMAP_H__
29
30 #include <linux/mm.h>
31
32 #include "mm.h"
33
34 typedef struct KV_OFFSET_STRUCT_TAG {
35
36         IMG_UINT32 ui32MMapOffset;
37
38         LinuxMemArea *psLinuxMemArea;
39
40         IMG_UINT32 ui32AllocFlags;
41
42 #if defined(DEBUG_LINUX_MMAP_AREAS)
43         pid_t pid;
44         const IMG_CHAR *pszName;
45         IMG_UINT16 ui16Mapped;
46         IMG_UINT16 ui16Faults;
47 #endif
48
49         struct KV_OFFSET_STRUCT_TAG *psNext;
50 } KV_OFFSET_STRUCT, *PKV_OFFSET_STRUCT;
51
52 IMG_VOID PVRMMapInit(void);
53
54 IMG_VOID PVRMMapCleanup(void);
55
56 PVRSRV_ERROR PVRMMapRegisterArea(const IMG_CHAR * pszName,
57                                  LinuxMemArea * psLinuxMemArea,
58                                  IMG_UINT32 ui32AllocFlags);
59
60 PVRSRV_ERROR PVRMMapRemoveRegisteredArea(LinuxMemArea * psLinuxMemArea);
61
62 PVRSRV_ERROR PVRMMapKVIndexAddressToMMapData(IMG_VOID * pvKVIndexAddress,
63                                              IMG_UINT32 ui32Size,
64                                              IMG_UINT32 * pui32MMapOffset,
65                                              IMG_UINT32 * pui32ByteOffset,
66                                              IMG_UINT32 * pui32RealByteSize);
67
68 int PVRMMap(struct file *pFile, struct vm_area_struct *ps_vma);
69
70 #endif