/********************************************************************** * * Copyright (C) Imagination Technologies Ltd. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful but, except * as otherwise stated in writing, without any warranty; without even the * implied warranty of merchantability or fitness for a particular purpose. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. * * The full GNU General Public License is included in this distribution in * the file called "COPYING". * * Contact Information: * Imagination Technologies Ltd. * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK * ******************************************************************************/ #if !defined(__MMAP_H__) #define __MMAP_H__ #include #include #if defined(VM_MIXEDMAP) #define PVR_MAKE_ALL_PFNS_SPECIAL #endif #include "perproc.h" #include "mm.h" typedef struct KV_OFFSET_STRUCT_TAG { IMG_UINT32 ui32Mapped; IMG_UINT32 ui32MMapOffset; IMG_UINT32 ui32RealByteSize; LinuxMemArea *psLinuxMemArea; #if !defined(PVR_MAKE_ALL_PFNS_SPECIAL) IMG_UINT32 ui32TID; #endif IMG_UINT32 ui32PID; IMG_BOOL bOnMMapList; IMG_UINT32 ui32RefCount; IMG_UINT32 ui32UserVAddr; #if defined(DEBUG_LINUX_MMAP_AREAS) const IMG_CHAR *pszName; #endif struct list_head sMMapItem; struct list_head sAreaItem; }KV_OFFSET_STRUCT, *PKV_OFFSET_STRUCT; IMG_VOID PVRMMapInit(IMG_VOID); IMG_VOID PVRMMapCleanup(IMG_VOID); PVRSRV_ERROR PVRMMapRegisterArea(LinuxMemArea *psLinuxMemArea); PVRSRV_ERROR PVRMMapRemoveRegisteredArea(LinuxMemArea *psLinuxMemArea); PVRSRV_ERROR PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, #if defined (SUPPORT_SID_INTERFACE) IMG_SID hMHandle, #else IMG_HANDLE hMHandle, #endif IMG_UINT32 *pui32MMapOffset, IMG_UINT32 *pui32ByteOffset, IMG_UINT32 *pui32RealByteSize, IMG_UINT32 *pui32UserVAddr); PVRSRV_ERROR PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, #if defined (SUPPORT_SID_INTERFACE) IMG_SID hMHandle, #else IMG_HANDLE hMHandle, #endif IMG_BOOL *pbMUnmap, IMG_UINT32 *pui32RealByteSize, IMG_UINT32 *pui32UserVAddr); int PVRMMap(struct file* pFile, struct vm_area_struct* ps_vma); #endif