1 #define NVOC_RESOURCE_H_PRIVATE_ACCESS_ALLOWED
2 #include "nvoc/runtime.h"
3 #include "nvoc/rtti.h"
4 #include "nvtypes.h"
5 #include "nvport/nvport.h"
6 #include "nvport/inline/util_valist.h"
7 #include "utils/nvassert.h"
8 #include "g_resource_nvoc.h"
9 
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x8ef259 = 1;
12 #endif
13 
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RmResourceCommon;
15 
16 void __nvoc_init_RmResourceCommon(RmResourceCommon*);
17 void __nvoc_init_funcTable_RmResourceCommon(RmResourceCommon*);
18 NV_STATUS __nvoc_ctor_RmResourceCommon(RmResourceCommon*);
19 void __nvoc_init_dataField_RmResourceCommon(RmResourceCommon*);
20 void __nvoc_dtor_RmResourceCommon(RmResourceCommon*);
21 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_RmResourceCommon;
22 
23 static const struct NVOC_RTTI __nvoc_rtti_RmResourceCommon_RmResourceCommon = {
24     /*pClassDef=*/          &__nvoc_class_def_RmResourceCommon,
25     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_RmResourceCommon,
26     /*offset=*/             0,
27 };
28 
29 static const struct NVOC_CASTINFO __nvoc_castinfo_RmResourceCommon = {
30     /*numRelatives=*/       1,
31     /*relatives=*/ {
32         &__nvoc_rtti_RmResourceCommon_RmResourceCommon,
33     },
34 };
35 
36 // Not instantiable because it's not derived from class "Object"
37 const struct NVOC_CLASS_DEF __nvoc_class_def_RmResourceCommon =
38 {
39     /*classInfo=*/ {
40         /*size=*/               sizeof(RmResourceCommon),
41         /*classId=*/            classId(RmResourceCommon),
42         /*providerId=*/         &__nvoc_rtti_provider,
43 #if NV_PRINTF_STRINGS_ALLOWED
44         /*name=*/               "RmResourceCommon",
45 #endif
46     },
47     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) NULL,
48     /*pCastInfo=*/          &__nvoc_castinfo_RmResourceCommon,
49     /*pExportInfo=*/        &__nvoc_export_info_RmResourceCommon
50 };
51 
52 const struct NVOC_EXPORT_INFO __nvoc_export_info_RmResourceCommon =
53 {
54     /*numEntries=*/     0,
55     /*pExportEntries=*/  0
56 };
57 
58 void __nvoc_dtor_RmResourceCommon(RmResourceCommon *pThis) {
59     PORT_UNREFERENCED_VARIABLE(pThis);
60 }
61 
62 void __nvoc_init_dataField_RmResourceCommon(RmResourceCommon *pThis) {
63     PORT_UNREFERENCED_VARIABLE(pThis);
64 }
65 
66 NV_STATUS __nvoc_ctor_RmResourceCommon(RmResourceCommon *pThis) {
67     NV_STATUS status = NV_OK;
68     __nvoc_init_dataField_RmResourceCommon(pThis);
69 
70     status = __nvoc_rmrescmnConstruct(pThis);
71     if (status != NV_OK) goto __nvoc_ctor_RmResourceCommon_fail__init;
72     goto __nvoc_ctor_RmResourceCommon_exit; // Success
73 
74 __nvoc_ctor_RmResourceCommon_fail__init:
75 __nvoc_ctor_RmResourceCommon_exit:
76 
77     return status;
78 }
79 
80 static void __nvoc_init_funcTable_RmResourceCommon_1(RmResourceCommon *pThis) {
81     PORT_UNREFERENCED_VARIABLE(pThis);
82 }
83 
84 void __nvoc_init_funcTable_RmResourceCommon(RmResourceCommon *pThis) {
85     __nvoc_init_funcTable_RmResourceCommon_1(pThis);
86 }
87 
88 void __nvoc_init_RmResourceCommon(RmResourceCommon *pThis) {
89     pThis->__nvoc_pbase_RmResourceCommon = pThis;
90     __nvoc_init_funcTable_RmResourceCommon(pThis);
91 }
92 
93 #ifdef DEBUG
94 char __nvoc_class_id_uniqueness_check_0x03610d = 1;
95 #endif
96 
97 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RmResource;
98 
99 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
100 
101 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RsResource;
102 
103 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RmResourceCommon;
104 
105 void __nvoc_init_RmResource(RmResource*);
106 void __nvoc_init_funcTable_RmResource(RmResource*);
107 NV_STATUS __nvoc_ctor_RmResource(RmResource*, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams);
108 void __nvoc_init_dataField_RmResource(RmResource*);
109 void __nvoc_dtor_RmResource(RmResource*);
110 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_RmResource;
111 
112 static const struct NVOC_RTTI __nvoc_rtti_RmResource_RmResource = {
113     /*pClassDef=*/          &__nvoc_class_def_RmResource,
114     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_RmResource,
115     /*offset=*/             0,
116 };
117 
118 static const struct NVOC_RTTI __nvoc_rtti_RmResource_Object = {
119     /*pClassDef=*/          &__nvoc_class_def_Object,
120     /*dtor=*/               &__nvoc_destructFromBase,
121     /*offset=*/             NV_OFFSETOF(RmResource, __nvoc_base_RsResource.__nvoc_base_Object),
122 };
123 
124 static const struct NVOC_RTTI __nvoc_rtti_RmResource_RsResource = {
125     /*pClassDef=*/          &__nvoc_class_def_RsResource,
126     /*dtor=*/               &__nvoc_destructFromBase,
127     /*offset=*/             NV_OFFSETOF(RmResource, __nvoc_base_RsResource),
128 };
129 
130 static const struct NVOC_RTTI __nvoc_rtti_RmResource_RmResourceCommon = {
131     /*pClassDef=*/          &__nvoc_class_def_RmResourceCommon,
132     /*dtor=*/               &__nvoc_destructFromBase,
133     /*offset=*/             NV_OFFSETOF(RmResource, __nvoc_base_RmResourceCommon),
134 };
135 
136 static const struct NVOC_CASTINFO __nvoc_castinfo_RmResource = {
137     /*numRelatives=*/       4,
138     /*relatives=*/ {
139         &__nvoc_rtti_RmResource_RmResource,
140         &__nvoc_rtti_RmResource_RmResourceCommon,
141         &__nvoc_rtti_RmResource_RsResource,
142         &__nvoc_rtti_RmResource_Object,
143     },
144 };
145 
146 const struct NVOC_CLASS_DEF __nvoc_class_def_RmResource =
147 {
148     /*classInfo=*/ {
149         /*size=*/               sizeof(RmResource),
150         /*classId=*/            classId(RmResource),
151         /*providerId=*/         &__nvoc_rtti_provider,
152 #if NV_PRINTF_STRINGS_ALLOWED
153         /*name=*/               "RmResource",
154 #endif
155     },
156     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_RmResource,
157     /*pCastInfo=*/          &__nvoc_castinfo_RmResource,
158     /*pExportInfo=*/        &__nvoc_export_info_RmResource
159 };
160 
161 static NvBool __nvoc_thunk_RmResource_resAccessCallback(struct RsResource *pResource, struct RsClient *pInvokingClient, void *pAllocParams, RsAccessRight accessRight) {
162     return rmresAccessCallback((struct RmResource *)(((unsigned char *)pResource) - __nvoc_rtti_RmResource_RsResource.offset), pInvokingClient, pAllocParams, accessRight);
163 }
164 
165 static NvBool __nvoc_thunk_RmResource_resShareCallback(struct RsResource *pResource, struct RsClient *pInvokingClient, struct RsResourceRef *pParentRef, RS_SHARE_POLICY *pSharePolicy) {
166     return rmresShareCallback((struct RmResource *)(((unsigned char *)pResource) - __nvoc_rtti_RmResource_RsResource.offset), pInvokingClient, pParentRef, pSharePolicy);
167 }
168 
169 static NV_STATUS __nvoc_thunk_RmResource_resControlSerialization_Prologue(struct RsResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
170     return rmresControlSerialization_Prologue((struct RmResource *)(((unsigned char *)pResource) - __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pParams);
171 }
172 
173 static void __nvoc_thunk_RmResource_resControlSerialization_Epilogue(struct RsResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
174     rmresControlSerialization_Epilogue((struct RmResource *)(((unsigned char *)pResource) - __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pParams);
175 }
176 
177 static NV_STATUS __nvoc_thunk_RmResource_resControl_Prologue(struct RsResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
178     return rmresControl_Prologue((struct RmResource *)(((unsigned char *)pResource) - __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pParams);
179 }
180 
181 static void __nvoc_thunk_RmResource_resControl_Epilogue(struct RsResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
182     rmresControl_Epilogue((struct RmResource *)(((unsigned char *)pResource) - __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pParams);
183 }
184 
185 static NV_STATUS __nvoc_thunk_RsResource_rmresControl(struct RmResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
186     return resControl((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pParams);
187 }
188 
189 static NV_STATUS __nvoc_thunk_RsResource_rmresUnmap(struct RmResource *pResource, struct CALL_CONTEXT *pCallContext, RsCpuMapping *pCpuMapping) {
190     return resUnmap((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pCpuMapping);
191 }
192 
193 static NV_STATUS __nvoc_thunk_RsResource_rmresMapTo(struct RmResource *pResource, RS_RES_MAP_TO_PARAMS *pParams) {
194     return resMapTo((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pParams);
195 }
196 
197 static NvU32 __nvoc_thunk_RsResource_rmresGetRefCount(struct RmResource *pResource) {
198     return resGetRefCount((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset));
199 }
200 
201 static NV_STATUS __nvoc_thunk_RsResource_rmresControlFilter(struct RmResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
202     return resControlFilter((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pParams);
203 }
204 
205 static void __nvoc_thunk_RsResource_rmresAddAdditionalDependants(struct RsClient *pClient, struct RmResource *pResource, RsResourceRef *pReference) {
206     resAddAdditionalDependants(pClient, (struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pReference);
207 }
208 
209 static NvBool __nvoc_thunk_RsResource_rmresCanCopy(struct RmResource *pResource) {
210     return resCanCopy((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset));
211 }
212 
213 static void __nvoc_thunk_RsResource_rmresPreDestruct(struct RmResource *pResource) {
214     resPreDestruct((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset));
215 }
216 
217 static NV_STATUS __nvoc_thunk_RsResource_rmresUnmapFrom(struct RmResource *pResource, RS_RES_UNMAP_FROM_PARAMS *pParams) {
218     return resUnmapFrom((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pParams);
219 }
220 
221 static NV_STATUS __nvoc_thunk_RsResource_rmresIsDuplicate(struct RmResource *pResource, NvHandle hMemory, NvBool *pDuplicate) {
222     return resIsDuplicate((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), hMemory, pDuplicate);
223 }
224 
225 static NV_STATUS __nvoc_thunk_RsResource_rmresControlLookup(struct RmResource *pResource, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams, const struct NVOC_EXPORTED_METHOD_DEF **ppEntry) {
226     return resControlLookup((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pParams, ppEntry);
227 }
228 
229 static NV_STATUS __nvoc_thunk_RsResource_rmresMap(struct RmResource *pResource, struct CALL_CONTEXT *pCallContext, RS_CPU_MAP_PARAMS *pParams, RsCpuMapping *pCpuMapping) {
230     return resMap((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RmResource_RsResource.offset), pCallContext, pParams, pCpuMapping);
231 }
232 
233 const struct NVOC_EXPORT_INFO __nvoc_export_info_RmResource =
234 {
235     /*numEntries=*/     0,
236     /*pExportEntries=*/  0
237 };
238 
239 void __nvoc_dtor_RsResource(RsResource*);
240 void __nvoc_dtor_RmResourceCommon(RmResourceCommon*);
241 void __nvoc_dtor_RmResource(RmResource *pThis) {
242     __nvoc_dtor_RsResource(&pThis->__nvoc_base_RsResource);
243     __nvoc_dtor_RmResourceCommon(&pThis->__nvoc_base_RmResourceCommon);
244     PORT_UNREFERENCED_VARIABLE(pThis);
245 }
246 
247 void __nvoc_init_dataField_RmResource(RmResource *pThis) {
248     PORT_UNREFERENCED_VARIABLE(pThis);
249 }
250 
251 NV_STATUS __nvoc_ctor_RsResource(RsResource* , struct CALL_CONTEXT *, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
252 NV_STATUS __nvoc_ctor_RmResourceCommon(RmResourceCommon* );
253 NV_STATUS __nvoc_ctor_RmResource(RmResource *pThis, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) {
254     NV_STATUS status = NV_OK;
255     status = __nvoc_ctor_RsResource(&pThis->__nvoc_base_RsResource, arg_pCallContext, arg_pParams);
256     if (status != NV_OK) goto __nvoc_ctor_RmResource_fail_RsResource;
257     status = __nvoc_ctor_RmResourceCommon(&pThis->__nvoc_base_RmResourceCommon);
258     if (status != NV_OK) goto __nvoc_ctor_RmResource_fail_RmResourceCommon;
259     __nvoc_init_dataField_RmResource(pThis);
260 
261     status = __nvoc_rmresConstruct(pThis, arg_pCallContext, arg_pParams);
262     if (status != NV_OK) goto __nvoc_ctor_RmResource_fail__init;
263     goto __nvoc_ctor_RmResource_exit; // Success
264 
265 __nvoc_ctor_RmResource_fail__init:
266     __nvoc_dtor_RmResourceCommon(&pThis->__nvoc_base_RmResourceCommon);
267 __nvoc_ctor_RmResource_fail_RmResourceCommon:
268     __nvoc_dtor_RsResource(&pThis->__nvoc_base_RsResource);
269 __nvoc_ctor_RmResource_fail_RsResource:
270 __nvoc_ctor_RmResource_exit:
271 
272     return status;
273 }
274 
275 static void __nvoc_init_funcTable_RmResource_1(RmResource *pThis) {
276     PORT_UNREFERENCED_VARIABLE(pThis);
277 
278     pThis->__rmresAccessCallback__ = &rmresAccessCallback_IMPL;
279 
280     pThis->__rmresShareCallback__ = &rmresShareCallback_IMPL;
281 
282     pThis->__rmresGetMemInterMapParams__ = &rmresGetMemInterMapParams_IMPL;
283 
284     pThis->__rmresCheckMemInterUnmap__ = &rmresCheckMemInterUnmap_IMPL;
285 
286     pThis->__rmresGetMemoryMappingDescriptor__ = &rmresGetMemoryMappingDescriptor_IMPL;
287 
288     pThis->__rmresControlSerialization_Prologue__ = &rmresControlSerialization_Prologue_IMPL;
289 
290     pThis->__rmresControlSerialization_Epilogue__ = &rmresControlSerialization_Epilogue_IMPL;
291 
292     pThis->__rmresControl_Prologue__ = &rmresControl_Prologue_IMPL;
293 
294     pThis->__rmresControl_Epilogue__ = &rmresControl_Epilogue_IMPL;
295 
296     pThis->__nvoc_base_RsResource.__resAccessCallback__ = &__nvoc_thunk_RmResource_resAccessCallback;
297 
298     pThis->__nvoc_base_RsResource.__resShareCallback__ = &__nvoc_thunk_RmResource_resShareCallback;
299 
300     pThis->__nvoc_base_RsResource.__resControlSerialization_Prologue__ = &__nvoc_thunk_RmResource_resControlSerialization_Prologue;
301 
302     pThis->__nvoc_base_RsResource.__resControlSerialization_Epilogue__ = &__nvoc_thunk_RmResource_resControlSerialization_Epilogue;
303 
304     pThis->__nvoc_base_RsResource.__resControl_Prologue__ = &__nvoc_thunk_RmResource_resControl_Prologue;
305 
306     pThis->__nvoc_base_RsResource.__resControl_Epilogue__ = &__nvoc_thunk_RmResource_resControl_Epilogue;
307 
308     pThis->__rmresControl__ = &__nvoc_thunk_RsResource_rmresControl;
309 
310     pThis->__rmresUnmap__ = &__nvoc_thunk_RsResource_rmresUnmap;
311 
312     pThis->__rmresMapTo__ = &__nvoc_thunk_RsResource_rmresMapTo;
313 
314     pThis->__rmresGetRefCount__ = &__nvoc_thunk_RsResource_rmresGetRefCount;
315 
316     pThis->__rmresControlFilter__ = &__nvoc_thunk_RsResource_rmresControlFilter;
317 
318     pThis->__rmresAddAdditionalDependants__ = &__nvoc_thunk_RsResource_rmresAddAdditionalDependants;
319 
320     pThis->__rmresCanCopy__ = &__nvoc_thunk_RsResource_rmresCanCopy;
321 
322     pThis->__rmresPreDestruct__ = &__nvoc_thunk_RsResource_rmresPreDestruct;
323 
324     pThis->__rmresUnmapFrom__ = &__nvoc_thunk_RsResource_rmresUnmapFrom;
325 
326     pThis->__rmresIsDuplicate__ = &__nvoc_thunk_RsResource_rmresIsDuplicate;
327 
328     pThis->__rmresControlLookup__ = &__nvoc_thunk_RsResource_rmresControlLookup;
329 
330     pThis->__rmresMap__ = &__nvoc_thunk_RsResource_rmresMap;
331 }
332 
333 void __nvoc_init_funcTable_RmResource(RmResource *pThis) {
334     __nvoc_init_funcTable_RmResource_1(pThis);
335 }
336 
337 void __nvoc_init_RsResource(RsResource*);
338 void __nvoc_init_RmResourceCommon(RmResourceCommon*);
339 void __nvoc_init_RmResource(RmResource *pThis) {
340     pThis->__nvoc_pbase_RmResource = pThis;
341     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_RsResource.__nvoc_base_Object;
342     pThis->__nvoc_pbase_RsResource = &pThis->__nvoc_base_RsResource;
343     pThis->__nvoc_pbase_RmResourceCommon = &pThis->__nvoc_base_RmResourceCommon;
344     __nvoc_init_RsResource(&pThis->__nvoc_base_RsResource);
345     __nvoc_init_RmResourceCommon(&pThis->__nvoc_base_RmResourceCommon);
346     __nvoc_init_funcTable_RmResource(pThis);
347 }
348 
349 NV_STATUS __nvoc_objCreate_RmResource(RmResource **ppThis, Dynamic *pParent, NvU32 createFlags, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) {
350     NV_STATUS status;
351     Object *pParentObj;
352     RmResource *pThis;
353 
354     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(RmResource), (void**)&pThis, (void**)ppThis);
355     if (status != NV_OK)
356         return status;
357 
358     portMemSet(pThis, 0, sizeof(RmResource));
359 
360     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_RmResource);
361 
362     pThis->__nvoc_base_RsResource.__nvoc_base_Object.createFlags = createFlags;
363 
364     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
365     {
366         pParentObj = dynamicCast(pParent, Object);
367         objAddChild(pParentObj, &pThis->__nvoc_base_RsResource.__nvoc_base_Object);
368     }
369     else
370     {
371         pThis->__nvoc_base_RsResource.__nvoc_base_Object.pParent = NULL;
372     }
373 
374     __nvoc_init_RmResource(pThis);
375     status = __nvoc_ctor_RmResource(pThis, arg_pCallContext, arg_pParams);
376     if (status != NV_OK) goto __nvoc_objCreate_RmResource_cleanup;
377 
378     *ppThis = pThis;
379 
380     return NV_OK;
381 
382 __nvoc_objCreate_RmResource_cleanup:
383     // do not call destructors here since the constructor already called them
384     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
385         portMemSet(pThis, 0, sizeof(RmResource));
386     else
387         portMemFree(pThis);
388 
389     // coverity[leaked_storage:FALSE]
390     return status;
391 }
392 
393 NV_STATUS __nvoc_objCreateDynamic_RmResource(RmResource **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
394     NV_STATUS status;
395     struct CALL_CONTEXT * arg_pCallContext = va_arg(args, struct CALL_CONTEXT *);
396     struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams = va_arg(args, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
397 
398     status = __nvoc_objCreate_RmResource(ppThis, pParent, createFlags, arg_pCallContext, arg_pParams);
399 
400     return status;
401 }
402 
403