fixes for bc_cat
[sgx.git] / pvr / perproc.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 #ifndef __PERPROC_H__
28 #define __PERPROC_H__
29
30 #include <linux/sched.h>
31
32 #include "img_types.h"
33 #include "resman.h"
34
35 #include "handle.h"
36
37 struct PVRSRV_PER_PROCESS_DATA {
38         u32 ui32PID;
39         char name[TASK_COMM_LEN];
40         void *hBlockAlloc;
41         struct RESMAN_CONTEXT *hResManContext;
42         void *hPerProcData;
43         struct PVRSRV_HANDLE_BASE *psHandleBase;
44
45         IMG_BOOL bHandlesBatched;
46         u32 ui32RefCount;
47
48         IMG_BOOL bInitProcess;
49
50         void *hOsPrivateData;
51 };
52
53 struct PVRSRV_PER_PROCESS_DATA *PVRSRVPerProcessData(u32 ui32PID);
54
55 enum PVRSRV_ERROR PVRSRVPerProcessDataConnect(u32 ui32PID);
56 void PVRSRVPerProcessDataDisconnect(u32 ui32PID);
57
58 enum PVRSRV_ERROR PVRSRVPerProcessDataInit(void);
59 enum PVRSRV_ERROR PVRSRVPerProcessDataDeInit(void);
60
61 static inline struct PVRSRV_PER_PROCESS_DATA *PVRSRVFindPerProcessData(void)
62 {
63         return PVRSRVPerProcessData(OSGetCurrentProcessIDKM());
64 }
65
66 static inline void *PVRSRVProcessPrivateData(struct PVRSRV_PER_PROCESS_DATA
67                                              *psPerProc)
68 {
69         return (psPerProc != NULL) ? psPerProc->hOsPrivateData : NULL;
70 }
71
72 static inline void *PVRSRVPerProcessPrivateData(u32 ui32PID)
73 {
74         return PVRSRVProcessPrivateData(PVRSRVPerProcessData(ui32PID));
75 }
76
77 static inline void *PVRSRVFindPerProcessPrivateData(void)
78 {
79         return PVRSRVProcessPrivateData(PVRSRVFindPerProcessData());
80 }
81
82 #endif