a2c6d0242dfc72452dd2e6bbf67d78ae706b26ff
[profile/ivi/intel-emgd-kmod.git] / pvr / services4 / srvkm / include / resman.h
1 /**********************************************************************
2  Copyright (c) Imagination Technologies Ltd.
3
4  Permission is hereby granted, free of charge, to any person obtaining a copy
5  of this software and associated documentation files (the "Software"), to deal
6  in the Software without restriction, including without limitation the rights
7  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  copies of the Software, and to permit persons to whom the Software is
9  furnished to do so, subject to the following conditions:
10
11  The above copyright notice and this permission notice shall be included in
12  all copies or substantial portions of the Software.
13
14  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20  THE SOFTWARE.
21  ******************************************************************************/
22
23 #ifndef __RESMAN_H__
24 #define __RESMAN_H__
25
26 #if defined (__cplusplus)
27 extern "C" {
28 #endif
29
30 enum {
31
32         RESMAN_TYPE_SHARED_PB_DESC = 1,
33         RESMAN_TYPE_SHARED_PB_DESC_CREATE_LOCK,
34         RESMAN_TYPE_HW_RENDER_CONTEXT,
35         RESMAN_TYPE_HW_TRANSFER_CONTEXT,
36         RESMAN_TYPE_HW_2D_CONTEXT,
37         RESMAN_TYPE_TRANSFER_CONTEXT,
38
39
40
41
42
43         RESMAN_TYPE_DISPLAYCLASS_SWAPCHAIN_REF,
44         RESMAN_TYPE_DISPLAYCLASS_DEVICE,
45
46
47         RESMAN_TYPE_BUFFERCLASS_DEVICE,
48
49
50         RESMAN_TYPE_OS_USERMODE_MAPPING,
51
52
53         RESMAN_TYPE_DEVICEMEM_CONTEXT,
54         RESMAN_TYPE_DEVICECLASSMEM_MAPPING,
55         RESMAN_TYPE_DEVICEMEM_MAPPING,
56         RESMAN_TYPE_DEVICEMEM_WRAP,
57         RESMAN_TYPE_DEVICEMEM_ALLOCATION,
58         RESMAN_TYPE_EVENT_OBJECT,
59     RESMAN_TYPE_SHARED_MEM_INFO,
60     RESMAN_TYPE_MODIFY_SYNC_OPS,
61
62
63         RESMAN_TYPE_KERNEL_DEVICEMEM_ALLOCATION
64 };
65
66 #define RESMAN_CRITERIA_ALL                             0x00000000
67 #define RESMAN_CRITERIA_RESTYPE                 0x00000001
68 #define RESMAN_CRITERIA_PVOID_PARAM             0x00000002
69 #define RESMAN_CRITERIA_UI32_PARAM              0x00000004
70
71 typedef PVRSRV_ERROR (*RESMAN_FREE_FN)(IMG_PVOID pvParam, IMG_UINT32 ui32Param);
72
73 typedef struct _RESMAN_ITEM_ *PRESMAN_ITEM;
74 typedef struct _RESMAN_CONTEXT_ *PRESMAN_CONTEXT;
75
76 PVRSRV_ERROR ResManInit(IMG_VOID);
77 IMG_VOID ResManDeInit(IMG_VOID);
78
79 PRESMAN_ITEM ResManRegisterRes(PRESMAN_CONTEXT  hResManContext,
80                                                            IMG_UINT32           ui32ResType,
81                                                            IMG_PVOID            pvParam,
82                                                            IMG_UINT32           ui32Param,
83                                                            RESMAN_FREE_FN       pfnFreeResource);
84
85 PVRSRV_ERROR ResManFreeResByPtr(PRESMAN_ITEM    psResItem);
86
87 PVRSRV_ERROR ResManFreeResByCriteria(PRESMAN_CONTEXT    hResManContext,
88                                                                          IMG_UINT32                     ui32SearchCriteria,
89                                                                          IMG_UINT32                     ui32ResType,
90                                                                          IMG_PVOID                      pvParam,
91                                                                          IMG_UINT32                     ui32Param);
92
93 PVRSRV_ERROR ResManDissociateRes(PRESMAN_ITEM           psResItem,
94                                                          PRESMAN_CONTEXT        psNewResManContext);
95
96 PVRSRV_ERROR ResManFindResourceByPtr(PRESMAN_CONTEXT    hResManContext,
97                                                                          PRESMAN_ITEM           psItem);
98
99 PVRSRV_ERROR PVRSRVResManConnect(IMG_HANDLE                     hPerProc,
100                                                                  PRESMAN_CONTEXT        *phResManContext);
101 IMG_VOID PVRSRVResManDisconnect(PRESMAN_CONTEXT hResManContext,
102                                                                 IMG_BOOL                bKernelContext);
103
104 #if defined (__cplusplus)
105 }
106 #endif
107
108 #endif
109