1 #define NVOC_RS_CLIENT_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_rs_client_nvoc.h"
9 
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x8f87e5 = 1;
12 #endif
13 
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RsClient;
15 
16 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
17 
18 void __nvoc_init_RsClient(RsClient*);
19 void __nvoc_init_funcTable_RsClient(RsClient*);
20 NV_STATUS __nvoc_ctor_RsClient(RsClient*, struct PORT_MEM_ALLOCATOR * arg_pAllocator, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams);
21 void __nvoc_init_dataField_RsClient(RsClient*);
22 void __nvoc_dtor_RsClient(RsClient*);
23 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_RsClient;
24 
25 static const struct NVOC_RTTI __nvoc_rtti_RsClient_RsClient = {
26     /*pClassDef=*/          &__nvoc_class_def_RsClient,
27     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_RsClient,
28     /*offset=*/             0,
29 };
30 
31 static const struct NVOC_RTTI __nvoc_rtti_RsClient_Object = {
32     /*pClassDef=*/          &__nvoc_class_def_Object,
33     /*dtor=*/               &__nvoc_destructFromBase,
34     /*offset=*/             NV_OFFSETOF(RsClient, __nvoc_base_Object),
35 };
36 
37 static const struct NVOC_CASTINFO __nvoc_castinfo_RsClient = {
38     /*numRelatives=*/       2,
39     /*relatives=*/ {
40         &__nvoc_rtti_RsClient_RsClient,
41         &__nvoc_rtti_RsClient_Object,
42     },
43 };
44 
45 const struct NVOC_CLASS_DEF __nvoc_class_def_RsClient =
46 {
47     /*classInfo=*/ {
48         /*size=*/               sizeof(RsClient),
49         /*classId=*/            classId(RsClient),
50         /*providerId=*/         &__nvoc_rtti_provider,
51 #if NV_PRINTF_STRINGS_ALLOWED
52         /*name=*/               "RsClient",
53 #endif
54     },
55     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_RsClient,
56     /*pCastInfo=*/          &__nvoc_castinfo_RsClient,
57     /*pExportInfo=*/        &__nvoc_export_info_RsClient
58 };
59 
60 const struct NVOC_EXPORT_INFO __nvoc_export_info_RsClient =
61 {
62     /*numEntries=*/     0,
63     /*pExportEntries=*/  0
64 };
65 
66 void __nvoc_dtor_Object(Object*);
__nvoc_dtor_RsClient(RsClient * pThis)67 void __nvoc_dtor_RsClient(RsClient *pThis) {
68     __nvoc_clientDestruct(pThis);
69     __nvoc_dtor_Object(&pThis->__nvoc_base_Object);
70     PORT_UNREFERENCED_VARIABLE(pThis);
71 }
72 
__nvoc_init_dataField_RsClient(RsClient * pThis)73 void __nvoc_init_dataField_RsClient(RsClient *pThis) {
74     PORT_UNREFERENCED_VARIABLE(pThis);
75 }
76 
77 NV_STATUS __nvoc_ctor_Object(Object* );
__nvoc_ctor_RsClient(RsClient * pThis,struct PORT_MEM_ALLOCATOR * arg_pAllocator,struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)78 NV_STATUS __nvoc_ctor_RsClient(RsClient *pThis, struct PORT_MEM_ALLOCATOR * arg_pAllocator, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) {
79     NV_STATUS status = NV_OK;
80     status = __nvoc_ctor_Object(&pThis->__nvoc_base_Object);
81     if (status != NV_OK) goto __nvoc_ctor_RsClient_fail_Object;
82     __nvoc_init_dataField_RsClient(pThis);
83 
84     status = __nvoc_clientConstruct(pThis, arg_pAllocator, arg_pParams);
85     if (status != NV_OK) goto __nvoc_ctor_RsClient_fail__init;
86     goto __nvoc_ctor_RsClient_exit; // Success
87 
88 __nvoc_ctor_RsClient_fail__init:
89     __nvoc_dtor_Object(&pThis->__nvoc_base_Object);
90 __nvoc_ctor_RsClient_fail_Object:
91 __nvoc_ctor_RsClient_exit:
92 
93     return status;
94 }
95 
__nvoc_init_funcTable_RsClient_1(RsClient * pThis)96 static void __nvoc_init_funcTable_RsClient_1(RsClient *pThis) {
97     PORT_UNREFERENCED_VARIABLE(pThis);
98 
99     pThis->__clientValidate__ = &clientValidate_IMPL;
100 
101     pThis->__clientGetCachedPrivilege__ = &clientGetCachedPrivilege_IMPL;
102 
103     pThis->__clientIsAdmin__ = &clientIsAdmin_IMPL;
104 
105     pThis->__clientFreeResource__ = &clientFreeResource_IMPL;
106 
107     pThis->__clientDestructResourceRef__ = &clientDestructResourceRef_IMPL;
108 
109     pThis->__clientUnmapMemory__ = &clientUnmapMemory_IMPL;
110 
111     pThis->__clientInterMap__ = &clientInterMap_IMPL;
112 
113     pThis->__clientInterUnmap__ = &clientInterUnmap_IMPL;
114 
115     pThis->__clientValidateNewResourceHandle__ = &clientValidateNewResourceHandle_IMPL;
116 
117     pThis->__clientPostProcessPendingFreeList__ = &clientPostProcessPendingFreeList_IMPL;
118 
119     pThis->__clientShareResource__ = &clientShareResource_IMPL;
120 }
121 
__nvoc_init_funcTable_RsClient(RsClient * pThis)122 void __nvoc_init_funcTable_RsClient(RsClient *pThis) {
123     __nvoc_init_funcTable_RsClient_1(pThis);
124 }
125 
126 void __nvoc_init_Object(Object*);
__nvoc_init_RsClient(RsClient * pThis)127 void __nvoc_init_RsClient(RsClient *pThis) {
128     pThis->__nvoc_pbase_RsClient = pThis;
129     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_Object;
130     __nvoc_init_Object(&pThis->__nvoc_base_Object);
131     __nvoc_init_funcTable_RsClient(pThis);
132 }
133 
__nvoc_objCreate_RsClient(RsClient ** ppThis,Dynamic * pParent,NvU32 createFlags,struct PORT_MEM_ALLOCATOR * arg_pAllocator,struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)134 NV_STATUS __nvoc_objCreate_RsClient(RsClient **ppThis, Dynamic *pParent, NvU32 createFlags, struct PORT_MEM_ALLOCATOR * arg_pAllocator, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)
135 {
136     NV_STATUS status;
137     Object *pParentObj = NULL;
138     RsClient *pThis;
139 
140     // Assign `pThis`, allocating memory unless suppressed by flag.
141     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(RsClient), (void**)&pThis, (void**)ppThis);
142     if (status != NV_OK)
143         return status;
144 
145     // Zero is the initial value for everything.
146     portMemSet(pThis, 0, sizeof(RsClient));
147 
148     // Initialize runtime type information.
149     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_RsClient);
150 
151     pThis->__nvoc_base_Object.createFlags = createFlags;
152 
153     // Link the child into the parent if there is one unless flagged not to do so.
154     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
155     {
156         pParentObj = dynamicCast(pParent, Object);
157         objAddChild(pParentObj, &pThis->__nvoc_base_Object);
158     }
159     else
160     {
161         pThis->__nvoc_base_Object.pParent = NULL;
162     }
163 
164     __nvoc_init_RsClient(pThis);
165     status = __nvoc_ctor_RsClient(pThis, arg_pAllocator, arg_pParams);
166     if (status != NV_OK) goto __nvoc_objCreate_RsClient_cleanup;
167 
168     // Assignment has no effect if NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT is set.
169     *ppThis = pThis;
170 
171     return NV_OK;
172 
173 __nvoc_objCreate_RsClient_cleanup:
174 
175     // Unlink the child from the parent if it was linked above.
176     if (pParentObj != NULL)
177         objRemoveChild(pParentObj, &pThis->__nvoc_base_Object);
178 
179     // Do not call destructors here since the constructor already called them.
180     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
181         portMemSet(pThis, 0, sizeof(RsClient));
182     else
183     {
184         portMemFree(pThis);
185         *ppThis = NULL;
186     }
187 
188     // coverity[leaked_storage:FALSE]
189     return status;
190 }
191 
__nvoc_objCreateDynamic_RsClient(RsClient ** ppThis,Dynamic * pParent,NvU32 createFlags,va_list args)192 NV_STATUS __nvoc_objCreateDynamic_RsClient(RsClient **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
193     NV_STATUS status;
194     struct PORT_MEM_ALLOCATOR * arg_pAllocator = va_arg(args, struct PORT_MEM_ALLOCATOR *);
195     struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams = va_arg(args, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
196 
197     status = __nvoc_objCreate_RsClient(ppThis, pParent, createFlags, arg_pAllocator, arg_pParams);
198 
199     return status;
200 }
201 
202 #ifdef DEBUG
203 char __nvoc_class_id_uniqueness_check_0x083442 = 1;
204 #endif
205 
206 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RsClientResource;
207 
208 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
209 
210 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RsResource;
211 
212 void __nvoc_init_RsClientResource(RsClientResource*);
213 void __nvoc_init_funcTable_RsClientResource(RsClientResource*);
214 NV_STATUS __nvoc_ctor_RsClientResource(RsClientResource*, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams);
215 void __nvoc_init_dataField_RsClientResource(RsClientResource*);
216 void __nvoc_dtor_RsClientResource(RsClientResource*);
217 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_RsClientResource;
218 
219 static const struct NVOC_RTTI __nvoc_rtti_RsClientResource_RsClientResource = {
220     /*pClassDef=*/          &__nvoc_class_def_RsClientResource,
221     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_RsClientResource,
222     /*offset=*/             0,
223 };
224 
225 static const struct NVOC_RTTI __nvoc_rtti_RsClientResource_Object = {
226     /*pClassDef=*/          &__nvoc_class_def_Object,
227     /*dtor=*/               &__nvoc_destructFromBase,
228     /*offset=*/             NV_OFFSETOF(RsClientResource, __nvoc_base_RsResource.__nvoc_base_Object),
229 };
230 
231 static const struct NVOC_RTTI __nvoc_rtti_RsClientResource_RsResource = {
232     /*pClassDef=*/          &__nvoc_class_def_RsResource,
233     /*dtor=*/               &__nvoc_destructFromBase,
234     /*offset=*/             NV_OFFSETOF(RsClientResource, __nvoc_base_RsResource),
235 };
236 
237 static const struct NVOC_CASTINFO __nvoc_castinfo_RsClientResource = {
238     /*numRelatives=*/       3,
239     /*relatives=*/ {
240         &__nvoc_rtti_RsClientResource_RsClientResource,
241         &__nvoc_rtti_RsClientResource_RsResource,
242         &__nvoc_rtti_RsClientResource_Object,
243     },
244 };
245 
246 const struct NVOC_CLASS_DEF __nvoc_class_def_RsClientResource =
247 {
248     /*classInfo=*/ {
249         /*size=*/               sizeof(RsClientResource),
250         /*classId=*/            classId(RsClientResource),
251         /*providerId=*/         &__nvoc_rtti_provider,
252 #if NV_PRINTF_STRINGS_ALLOWED
253         /*name=*/               "RsClientResource",
254 #endif
255     },
256     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_RsClientResource,
257     /*pCastInfo=*/          &__nvoc_castinfo_RsClientResource,
258     /*pExportInfo=*/        &__nvoc_export_info_RsClientResource
259 };
260 
__nvoc_thunk_RsResource_clientresShareCallback(struct RsClientResource * pResource,struct RsClient * pInvokingClient,RsResourceRef * pParentRef,RS_SHARE_POLICY * pSharePolicy)261 static NvBool __nvoc_thunk_RsResource_clientresShareCallback(struct RsClientResource *pResource, struct RsClient *pInvokingClient, RsResourceRef *pParentRef, RS_SHARE_POLICY *pSharePolicy) {
262     return resShareCallback((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pInvokingClient, pParentRef, pSharePolicy);
263 }
264 
__nvoc_thunk_RsResource_clientresControl(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)265 static NV_STATUS __nvoc_thunk_RsResource_clientresControl(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
266     return resControl((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pParams);
267 }
268 
__nvoc_thunk_RsResource_clientresUnmap(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,RsCpuMapping * pCpuMapping)269 static NV_STATUS __nvoc_thunk_RsResource_clientresUnmap(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, RsCpuMapping *pCpuMapping) {
270     return resUnmap((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pCpuMapping);
271 }
272 
__nvoc_thunk_RsResource_clientresMapTo(struct RsClientResource * pResource,RS_RES_MAP_TO_PARAMS * pParams)273 static NV_STATUS __nvoc_thunk_RsResource_clientresMapTo(struct RsClientResource *pResource, RS_RES_MAP_TO_PARAMS *pParams) {
274     return resMapTo((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pParams);
275 }
276 
__nvoc_thunk_RsResource_clientresGetRefCount(struct RsClientResource * pResource)277 static NvU32 __nvoc_thunk_RsResource_clientresGetRefCount(struct RsClientResource *pResource) {
278     return resGetRefCount((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset));
279 }
280 
__nvoc_thunk_RsResource_clientresControlFilter(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)281 static NV_STATUS __nvoc_thunk_RsResource_clientresControlFilter(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
282     return resControlFilter((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pParams);
283 }
284 
__nvoc_thunk_RsResource_clientresAddAdditionalDependants(struct RsClient * pClient,struct RsClientResource * pResource,RsResourceRef * pReference)285 static void __nvoc_thunk_RsResource_clientresAddAdditionalDependants(struct RsClient *pClient, struct RsClientResource *pResource, RsResourceRef *pReference) {
286     resAddAdditionalDependants(pClient, (struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pReference);
287 }
288 
__nvoc_thunk_RsResource_clientresControlSerialization_Prologue(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)289 static NV_STATUS __nvoc_thunk_RsResource_clientresControlSerialization_Prologue(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
290     return resControlSerialization_Prologue((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pParams);
291 }
292 
__nvoc_thunk_RsResource_clientresCanCopy(struct RsClientResource * pResource)293 static NvBool __nvoc_thunk_RsResource_clientresCanCopy(struct RsClientResource *pResource) {
294     return resCanCopy((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset));
295 }
296 
__nvoc_thunk_RsResource_clientresControl_Prologue(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)297 static NV_STATUS __nvoc_thunk_RsResource_clientresControl_Prologue(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
298     return resControl_Prologue((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pParams);
299 }
300 
__nvoc_thunk_RsResource_clientresIsPartialUnmapSupported(struct RsClientResource * pResource)301 static NvBool __nvoc_thunk_RsResource_clientresIsPartialUnmapSupported(struct RsClientResource *pResource) {
302     return resIsPartialUnmapSupported((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset));
303 }
304 
__nvoc_thunk_RsResource_clientresPreDestruct(struct RsClientResource * pResource)305 static void __nvoc_thunk_RsResource_clientresPreDestruct(struct RsClientResource *pResource) {
306     resPreDestruct((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset));
307 }
308 
__nvoc_thunk_RsResource_clientresUnmapFrom(struct RsClientResource * pResource,RS_RES_UNMAP_FROM_PARAMS * pParams)309 static NV_STATUS __nvoc_thunk_RsResource_clientresUnmapFrom(struct RsClientResource *pResource, RS_RES_UNMAP_FROM_PARAMS *pParams) {
310     return resUnmapFrom((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pParams);
311 }
312 
__nvoc_thunk_RsResource_clientresIsDuplicate(struct RsClientResource * pResource,NvHandle hMemory,NvBool * pDuplicate)313 static NV_STATUS __nvoc_thunk_RsResource_clientresIsDuplicate(struct RsClientResource *pResource, NvHandle hMemory, NvBool *pDuplicate) {
314     return resIsDuplicate((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), hMemory, pDuplicate);
315 }
316 
__nvoc_thunk_RsResource_clientresControlSerialization_Epilogue(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)317 static void __nvoc_thunk_RsResource_clientresControlSerialization_Epilogue(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
318     resControlSerialization_Epilogue((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pParams);
319 }
320 
__nvoc_thunk_RsResource_clientresControl_Epilogue(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)321 static void __nvoc_thunk_RsResource_clientresControl_Epilogue(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
322     resControl_Epilogue((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pParams);
323 }
324 
__nvoc_thunk_RsResource_clientresMap(struct RsClientResource * pResource,struct CALL_CONTEXT * pCallContext,RS_CPU_MAP_PARAMS * pParams,RsCpuMapping * pCpuMapping)325 static NV_STATUS __nvoc_thunk_RsResource_clientresMap(struct RsClientResource *pResource, struct CALL_CONTEXT *pCallContext, RS_CPU_MAP_PARAMS *pParams, RsCpuMapping *pCpuMapping) {
326     return resMap((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pCallContext, pParams, pCpuMapping);
327 }
328 
__nvoc_thunk_RsResource_clientresAccessCallback(struct RsClientResource * pResource,struct RsClient * pInvokingClient,void * pAllocParams,RsAccessRight accessRight)329 static NvBool __nvoc_thunk_RsResource_clientresAccessCallback(struct RsClientResource *pResource, struct RsClient *pInvokingClient, void *pAllocParams, RsAccessRight accessRight) {
330     return resAccessCallback((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_RsClientResource_RsResource.offset), pInvokingClient, pAllocParams, accessRight);
331 }
332 
333 const struct NVOC_EXPORT_INFO __nvoc_export_info_RsClientResource =
334 {
335     /*numEntries=*/     0,
336     /*pExportEntries=*/  0
337 };
338 
339 void __nvoc_dtor_RsResource(RsResource*);
__nvoc_dtor_RsClientResource(RsClientResource * pThis)340 void __nvoc_dtor_RsClientResource(RsClientResource *pThis) {
341     __nvoc_clientresDestruct(pThis);
342     __nvoc_dtor_RsResource(&pThis->__nvoc_base_RsResource);
343     PORT_UNREFERENCED_VARIABLE(pThis);
344 }
345 
__nvoc_init_dataField_RsClientResource(RsClientResource * pThis)346 void __nvoc_init_dataField_RsClientResource(RsClientResource *pThis) {
347     PORT_UNREFERENCED_VARIABLE(pThis);
348 }
349 
350 NV_STATUS __nvoc_ctor_RsResource(RsResource* , struct CALL_CONTEXT *, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
__nvoc_ctor_RsClientResource(RsClientResource * pThis,struct CALL_CONTEXT * arg_pCallContext,struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)351 NV_STATUS __nvoc_ctor_RsClientResource(RsClientResource *pThis, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) {
352     NV_STATUS status = NV_OK;
353     status = __nvoc_ctor_RsResource(&pThis->__nvoc_base_RsResource, arg_pCallContext, arg_pParams);
354     if (status != NV_OK) goto __nvoc_ctor_RsClientResource_fail_RsResource;
355     __nvoc_init_dataField_RsClientResource(pThis);
356 
357     status = __nvoc_clientresConstruct(pThis, arg_pCallContext, arg_pParams);
358     if (status != NV_OK) goto __nvoc_ctor_RsClientResource_fail__init;
359     goto __nvoc_ctor_RsClientResource_exit; // Success
360 
361 __nvoc_ctor_RsClientResource_fail__init:
362     __nvoc_dtor_RsResource(&pThis->__nvoc_base_RsResource);
363 __nvoc_ctor_RsClientResource_fail_RsResource:
364 __nvoc_ctor_RsClientResource_exit:
365 
366     return status;
367 }
368 
__nvoc_init_funcTable_RsClientResource_1(RsClientResource * pThis)369 static void __nvoc_init_funcTable_RsClientResource_1(RsClientResource *pThis) {
370     PORT_UNREFERENCED_VARIABLE(pThis);
371 
372     pThis->__clientresShareCallback__ = &__nvoc_thunk_RsResource_clientresShareCallback;
373 
374     pThis->__clientresControl__ = &__nvoc_thunk_RsResource_clientresControl;
375 
376     pThis->__clientresUnmap__ = &__nvoc_thunk_RsResource_clientresUnmap;
377 
378     pThis->__clientresMapTo__ = &__nvoc_thunk_RsResource_clientresMapTo;
379 
380     pThis->__clientresGetRefCount__ = &__nvoc_thunk_RsResource_clientresGetRefCount;
381 
382     pThis->__clientresControlFilter__ = &__nvoc_thunk_RsResource_clientresControlFilter;
383 
384     pThis->__clientresAddAdditionalDependants__ = &__nvoc_thunk_RsResource_clientresAddAdditionalDependants;
385 
386     pThis->__clientresControlSerialization_Prologue__ = &__nvoc_thunk_RsResource_clientresControlSerialization_Prologue;
387 
388     pThis->__clientresCanCopy__ = &__nvoc_thunk_RsResource_clientresCanCopy;
389 
390     pThis->__clientresControl_Prologue__ = &__nvoc_thunk_RsResource_clientresControl_Prologue;
391 
392     pThis->__clientresIsPartialUnmapSupported__ = &__nvoc_thunk_RsResource_clientresIsPartialUnmapSupported;
393 
394     pThis->__clientresPreDestruct__ = &__nvoc_thunk_RsResource_clientresPreDestruct;
395 
396     pThis->__clientresUnmapFrom__ = &__nvoc_thunk_RsResource_clientresUnmapFrom;
397 
398     pThis->__clientresIsDuplicate__ = &__nvoc_thunk_RsResource_clientresIsDuplicate;
399 
400     pThis->__clientresControlSerialization_Epilogue__ = &__nvoc_thunk_RsResource_clientresControlSerialization_Epilogue;
401 
402     pThis->__clientresControl_Epilogue__ = &__nvoc_thunk_RsResource_clientresControl_Epilogue;
403 
404     pThis->__clientresMap__ = &__nvoc_thunk_RsResource_clientresMap;
405 
406     pThis->__clientresAccessCallback__ = &__nvoc_thunk_RsResource_clientresAccessCallback;
407 }
408 
__nvoc_init_funcTable_RsClientResource(RsClientResource * pThis)409 void __nvoc_init_funcTable_RsClientResource(RsClientResource *pThis) {
410     __nvoc_init_funcTable_RsClientResource_1(pThis);
411 }
412 
413 void __nvoc_init_RsResource(RsResource*);
__nvoc_init_RsClientResource(RsClientResource * pThis)414 void __nvoc_init_RsClientResource(RsClientResource *pThis) {
415     pThis->__nvoc_pbase_RsClientResource = pThis;
416     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_RsResource.__nvoc_base_Object;
417     pThis->__nvoc_pbase_RsResource = &pThis->__nvoc_base_RsResource;
418     __nvoc_init_RsResource(&pThis->__nvoc_base_RsResource);
419     __nvoc_init_funcTable_RsClientResource(pThis);
420 }
421 
__nvoc_objCreate_RsClientResource(RsClientResource ** ppThis,Dynamic * pParent,NvU32 createFlags,struct CALL_CONTEXT * arg_pCallContext,struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)422 NV_STATUS __nvoc_objCreate_RsClientResource(RsClientResource **ppThis, Dynamic *pParent, NvU32 createFlags, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)
423 {
424     NV_STATUS status;
425     Object *pParentObj = NULL;
426     RsClientResource *pThis;
427 
428     // Assign `pThis`, allocating memory unless suppressed by flag.
429     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(RsClientResource), (void**)&pThis, (void**)ppThis);
430     if (status != NV_OK)
431         return status;
432 
433     // Zero is the initial value for everything.
434     portMemSet(pThis, 0, sizeof(RsClientResource));
435 
436     // Initialize runtime type information.
437     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_RsClientResource);
438 
439     pThis->__nvoc_base_RsResource.__nvoc_base_Object.createFlags = createFlags;
440 
441     // Link the child into the parent if there is one unless flagged not to do so.
442     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
443     {
444         pParentObj = dynamicCast(pParent, Object);
445         objAddChild(pParentObj, &pThis->__nvoc_base_RsResource.__nvoc_base_Object);
446     }
447     else
448     {
449         pThis->__nvoc_base_RsResource.__nvoc_base_Object.pParent = NULL;
450     }
451 
452     __nvoc_init_RsClientResource(pThis);
453     status = __nvoc_ctor_RsClientResource(pThis, arg_pCallContext, arg_pParams);
454     if (status != NV_OK) goto __nvoc_objCreate_RsClientResource_cleanup;
455 
456     // Assignment has no effect if NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT is set.
457     *ppThis = pThis;
458 
459     return NV_OK;
460 
461 __nvoc_objCreate_RsClientResource_cleanup:
462 
463     // Unlink the child from the parent if it was linked above.
464     if (pParentObj != NULL)
465         objRemoveChild(pParentObj, &pThis->__nvoc_base_RsResource.__nvoc_base_Object);
466 
467     // Do not call destructors here since the constructor already called them.
468     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
469         portMemSet(pThis, 0, sizeof(RsClientResource));
470     else
471     {
472         portMemFree(pThis);
473         *ppThis = NULL;
474     }
475 
476     // coverity[leaked_storage:FALSE]
477     return status;
478 }
479 
__nvoc_objCreateDynamic_RsClientResource(RsClientResource ** ppThis,Dynamic * pParent,NvU32 createFlags,va_list args)480 NV_STATUS __nvoc_objCreateDynamic_RsClientResource(RsClientResource **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
481     NV_STATUS status;
482     struct CALL_CONTEXT * arg_pCallContext = va_arg(args, struct CALL_CONTEXT *);
483     struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams = va_arg(args, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
484 
485     status = __nvoc_objCreate_RsClientResource(ppThis, pParent, createFlags, arg_pCallContext, arg_pParams);
486 
487     return status;
488 }
489 
490