1 #define NVOC_VIRT_MEM_RANGE_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_virt_mem_range_nvoc.h"
9 
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x7032c6 = 1;
12 #endif
13 
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_VirtualMemoryRange;
15 
16 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
17 
18 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RsResource;
19 
20 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RmResourceCommon;
21 
22 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RmResource;
23 
24 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Memory;
25 
26 extern const struct NVOC_CLASS_DEF __nvoc_class_def_StandardMemory;
27 
28 extern const struct NVOC_CLASS_DEF __nvoc_class_def_VirtualMemory;
29 
30 void __nvoc_init_VirtualMemoryRange(VirtualMemoryRange*);
31 void __nvoc_init_funcTable_VirtualMemoryRange(VirtualMemoryRange*);
32 NV_STATUS __nvoc_ctor_VirtualMemoryRange(VirtualMemoryRange*, CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams);
33 void __nvoc_init_dataField_VirtualMemoryRange(VirtualMemoryRange*);
34 void __nvoc_dtor_VirtualMemoryRange(VirtualMemoryRange*);
35 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_VirtualMemoryRange;
36 
37 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_VirtualMemoryRange = {
38     /*pClassDef=*/          &__nvoc_class_def_VirtualMemoryRange,
39     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_VirtualMemoryRange,
40     /*offset=*/             0,
41 };
42 
43 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_Object = {
44     /*pClassDef=*/          &__nvoc_class_def_Object,
45     /*dtor=*/               &__nvoc_destructFromBase,
46     /*offset=*/             NV_OFFSETOF(VirtualMemoryRange, __nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object),
47 };
48 
49 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_RsResource = {
50     /*pClassDef=*/          &__nvoc_class_def_RsResource,
51     /*dtor=*/               &__nvoc_destructFromBase,
52     /*offset=*/             NV_OFFSETOF(VirtualMemoryRange, __nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource),
53 };
54 
55 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_RmResourceCommon = {
56     /*pClassDef=*/          &__nvoc_class_def_RmResourceCommon,
57     /*dtor=*/               &__nvoc_destructFromBase,
58     /*offset=*/             NV_OFFSETOF(VirtualMemoryRange, __nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RmResourceCommon),
59 };
60 
61 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_RmResource = {
62     /*pClassDef=*/          &__nvoc_class_def_RmResource,
63     /*dtor=*/               &__nvoc_destructFromBase,
64     /*offset=*/             NV_OFFSETOF(VirtualMemoryRange, __nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource),
65 };
66 
67 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_Memory = {
68     /*pClassDef=*/          &__nvoc_class_def_Memory,
69     /*dtor=*/               &__nvoc_destructFromBase,
70     /*offset=*/             NV_OFFSETOF(VirtualMemoryRange, __nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory),
71 };
72 
73 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_StandardMemory = {
74     /*pClassDef=*/          &__nvoc_class_def_StandardMemory,
75     /*dtor=*/               &__nvoc_destructFromBase,
76     /*offset=*/             NV_OFFSETOF(VirtualMemoryRange, __nvoc_base_VirtualMemory.__nvoc_base_StandardMemory),
77 };
78 
79 static const struct NVOC_RTTI __nvoc_rtti_VirtualMemoryRange_VirtualMemory = {
80     /*pClassDef=*/          &__nvoc_class_def_VirtualMemory,
81     /*dtor=*/               &__nvoc_destructFromBase,
82     /*offset=*/             NV_OFFSETOF(VirtualMemoryRange, __nvoc_base_VirtualMemory),
83 };
84 
85 static const struct NVOC_CASTINFO __nvoc_castinfo_VirtualMemoryRange = {
86     /*numRelatives=*/       8,
87     /*relatives=*/ {
88         &__nvoc_rtti_VirtualMemoryRange_VirtualMemoryRange,
89         &__nvoc_rtti_VirtualMemoryRange_VirtualMemory,
90         &__nvoc_rtti_VirtualMemoryRange_StandardMemory,
91         &__nvoc_rtti_VirtualMemoryRange_Memory,
92         &__nvoc_rtti_VirtualMemoryRange_RmResource,
93         &__nvoc_rtti_VirtualMemoryRange_RmResourceCommon,
94         &__nvoc_rtti_VirtualMemoryRange_RsResource,
95         &__nvoc_rtti_VirtualMemoryRange_Object,
96     },
97 };
98 
99 const struct NVOC_CLASS_DEF __nvoc_class_def_VirtualMemoryRange =
100 {
101     /*classInfo=*/ {
102         /*size=*/               sizeof(VirtualMemoryRange),
103         /*classId=*/            classId(VirtualMemoryRange),
104         /*providerId=*/         &__nvoc_rtti_provider,
105 #if NV_PRINTF_STRINGS_ALLOWED
106         /*name=*/               "VirtualMemoryRange",
107 #endif
108     },
109     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_VirtualMemoryRange,
110     /*pCastInfo=*/          &__nvoc_castinfo_VirtualMemoryRange,
111     /*pExportInfo=*/        &__nvoc_export_info_VirtualMemoryRange
112 };
113 
114 static NV_STATUS __nvoc_thunk_Memory_vmrangeCheckMemInterUnmap(struct VirtualMemoryRange *pMemory, NvBool bSubdeviceHandleProvided) {
115     return memCheckMemInterUnmap((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), bSubdeviceHandleProvided);
116 }
117 
118 static NV_STATUS __nvoc_thunk_VirtualMemory_vmrangeMapTo(struct VirtualMemoryRange *pVirtualMemory, struct RS_RES_MAP_TO_PARAMS *pParams) {
119     return virtmemMapTo((struct VirtualMemory *)(((unsigned char *)pVirtualMemory) + __nvoc_rtti_VirtualMemoryRange_VirtualMemory.offset), pParams);
120 }
121 
122 static NvBool __nvoc_thunk_RmResource_vmrangeShareCallback(struct VirtualMemoryRange *pResource, struct RsClient *pInvokingClient, struct RsResourceRef *pParentRef, RS_SHARE_POLICY *pSharePolicy) {
123     return rmresShareCallback((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RmResource.offset), pInvokingClient, pParentRef, pSharePolicy);
124 }
125 
126 static NV_STATUS __nvoc_thunk_Memory_vmrangeGetMapAddrSpace(struct VirtualMemoryRange *pMemory, CALL_CONTEXT *pCallContext, NvU32 mapFlags, NV_ADDRESS_SPACE *pAddrSpace) {
127     return memGetMapAddrSpace((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), pCallContext, mapFlags, pAddrSpace);
128 }
129 
130 static NvBool __nvoc_thunk_Memory_vmrangeIsExportAllowed(struct VirtualMemoryRange *pMemory) {
131     return memIsExportAllowed((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset));
132 }
133 
134 static NvU32 __nvoc_thunk_RsResource_vmrangeGetRefCount(struct VirtualMemoryRange *pResource) {
135     return resGetRefCount((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RsResource.offset));
136 }
137 
138 static void __nvoc_thunk_RsResource_vmrangeAddAdditionalDependants(struct RsClient *pClient, struct VirtualMemoryRange *pResource, RsResourceRef *pReference) {
139     resAddAdditionalDependants(pClient, (struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RsResource.offset), pReference);
140 }
141 
142 static NV_STATUS __nvoc_thunk_RmResource_vmrangeControl_Prologue(struct VirtualMemoryRange *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
143     return rmresControl_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RmResource.offset), pCallContext, pParams);
144 }
145 
146 static NvBool __nvoc_thunk_Memory_vmrangeIsGpuMapAllowed(struct VirtualMemoryRange *pMemory, struct OBJGPU *pGpu) {
147     return memIsGpuMapAllowed((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), pGpu);
148 }
149 
150 static NV_STATUS __nvoc_thunk_VirtualMemory_vmrangeUnmapFrom(struct VirtualMemoryRange *pVirtualMemory, struct RS_RES_UNMAP_FROM_PARAMS *pParams) {
151     return virtmemUnmapFrom((struct VirtualMemory *)(((unsigned char *)pVirtualMemory) + __nvoc_rtti_VirtualMemoryRange_VirtualMemory.offset), pParams);
152 }
153 
154 static void __nvoc_thunk_RmResource_vmrangeControl_Epilogue(struct VirtualMemoryRange *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
155     rmresControl_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RmResource.offset), pCallContext, pParams);
156 }
157 
158 static NV_STATUS __nvoc_thunk_RsResource_vmrangeControlLookup(struct VirtualMemoryRange *pResource, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams, const struct NVOC_EXPORTED_METHOD_DEF **ppEntry) {
159     return resControlLookup((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RsResource.offset), pParams, ppEntry);
160 }
161 
162 static NV_STATUS __nvoc_thunk_Memory_vmrangeControl(struct VirtualMemoryRange *pMemory, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
163     return memControl((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), pCallContext, pParams);
164 }
165 
166 static NV_STATUS __nvoc_thunk_Memory_vmrangeUnmap(struct VirtualMemoryRange *pMemory, CALL_CONTEXT *pCallContext, RsCpuMapping *pCpuMapping) {
167     return memUnmap((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), pCallContext, pCpuMapping);
168 }
169 
170 static NV_STATUS __nvoc_thunk_Memory_vmrangeGetMemInterMapParams(struct VirtualMemoryRange *pMemory, RMRES_MEM_INTER_MAP_PARAMS *pParams) {
171     return memGetMemInterMapParams((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), pParams);
172 }
173 
174 static NV_STATUS __nvoc_thunk_Memory_vmrangeGetMemoryMappingDescriptor(struct VirtualMemoryRange *pMemory, MEMORY_DESCRIPTOR **ppMemDesc) {
175     return memGetMemoryMappingDescriptor((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), ppMemDesc);
176 }
177 
178 static NV_STATUS __nvoc_thunk_RsResource_vmrangeControlFilter(struct VirtualMemoryRange *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
179     return resControlFilter((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RsResource.offset), pCallContext, pParams);
180 }
181 
182 static NV_STATUS __nvoc_thunk_RmResource_vmrangeControlSerialization_Prologue(struct VirtualMemoryRange *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
183     return rmresControlSerialization_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RmResource.offset), pCallContext, pParams);
184 }
185 
186 static NvBool __nvoc_thunk_StandardMemory_vmrangeCanCopy(struct VirtualMemoryRange *pStandardMemory) {
187     return stdmemCanCopy((struct StandardMemory *)(((unsigned char *)pStandardMemory) + __nvoc_rtti_VirtualMemoryRange_StandardMemory.offset));
188 }
189 
190 static NV_STATUS __nvoc_thunk_Memory_vmrangeIsReady(struct VirtualMemoryRange *pMemory, NvBool bCopyConstructorContext) {
191     return memIsReady((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), bCopyConstructorContext);
192 }
193 
194 static NV_STATUS __nvoc_thunk_Memory_vmrangeCheckCopyPermissions(struct VirtualMemoryRange *pMemory, struct OBJGPU *pDstGpu, struct Device *pDstDevice) {
195     return memCheckCopyPermissions((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), pDstGpu, pDstDevice);
196 }
197 
198 static void __nvoc_thunk_RsResource_vmrangePreDestruct(struct VirtualMemoryRange *pResource) {
199     resPreDestruct((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RsResource.offset));
200 }
201 
202 static NV_STATUS __nvoc_thunk_Memory_vmrangeIsDuplicate(struct VirtualMemoryRange *pMemory, NvHandle hMemory, NvBool *pDuplicate) {
203     return memIsDuplicate((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), hMemory, pDuplicate);
204 }
205 
206 static void __nvoc_thunk_RmResource_vmrangeControlSerialization_Epilogue(struct VirtualMemoryRange *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
207     rmresControlSerialization_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RmResource.offset), pCallContext, pParams);
208 }
209 
210 static NV_STATUS __nvoc_thunk_Memory_vmrangeMap(struct VirtualMemoryRange *pMemory, CALL_CONTEXT *pCallContext, struct RS_CPU_MAP_PARAMS *pParams, RsCpuMapping *pCpuMapping) {
211     return memMap((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_VirtualMemoryRange_Memory.offset), pCallContext, pParams, pCpuMapping);
212 }
213 
214 static NvBool __nvoc_thunk_RmResource_vmrangeAccessCallback(struct VirtualMemoryRange *pResource, struct RsClient *pInvokingClient, void *pAllocParams, RsAccessRight accessRight) {
215     return rmresAccessCallback((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_VirtualMemoryRange_RmResource.offset), pInvokingClient, pAllocParams, accessRight);
216 }
217 
218 const struct NVOC_EXPORT_INFO __nvoc_export_info_VirtualMemoryRange =
219 {
220     /*numEntries=*/     0,
221     /*pExportEntries=*/  0
222 };
223 
224 void __nvoc_dtor_VirtualMemory(VirtualMemory*);
225 void __nvoc_dtor_VirtualMemoryRange(VirtualMemoryRange *pThis) {
226     __nvoc_dtor_VirtualMemory(&pThis->__nvoc_base_VirtualMemory);
227     PORT_UNREFERENCED_VARIABLE(pThis);
228 }
229 
230 void __nvoc_init_dataField_VirtualMemoryRange(VirtualMemoryRange *pThis) {
231     PORT_UNREFERENCED_VARIABLE(pThis);
232 }
233 
234 NV_STATUS __nvoc_ctor_VirtualMemory(VirtualMemory* , CALL_CONTEXT *, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
235 NV_STATUS __nvoc_ctor_VirtualMemoryRange(VirtualMemoryRange *pThis, CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) {
236     NV_STATUS status = NV_OK;
237     status = __nvoc_ctor_VirtualMemory(&pThis->__nvoc_base_VirtualMemory, arg_pCallContext, arg_pParams);
238     if (status != NV_OK) goto __nvoc_ctor_VirtualMemoryRange_fail_VirtualMemory;
239     __nvoc_init_dataField_VirtualMemoryRange(pThis);
240 
241     status = __nvoc_vmrangeConstruct(pThis, arg_pCallContext, arg_pParams);
242     if (status != NV_OK) goto __nvoc_ctor_VirtualMemoryRange_fail__init;
243     goto __nvoc_ctor_VirtualMemoryRange_exit; // Success
244 
245 __nvoc_ctor_VirtualMemoryRange_fail__init:
246     __nvoc_dtor_VirtualMemory(&pThis->__nvoc_base_VirtualMemory);
247 __nvoc_ctor_VirtualMemoryRange_fail_VirtualMemory:
248 __nvoc_ctor_VirtualMemoryRange_exit:
249 
250     return status;
251 }
252 
253 static void __nvoc_init_funcTable_VirtualMemoryRange_1(VirtualMemoryRange *pThis) {
254     PORT_UNREFERENCED_VARIABLE(pThis);
255 
256     pThis->__vmrangeCheckMemInterUnmap__ = &__nvoc_thunk_Memory_vmrangeCheckMemInterUnmap;
257 
258     pThis->__vmrangeMapTo__ = &__nvoc_thunk_VirtualMemory_vmrangeMapTo;
259 
260     pThis->__vmrangeShareCallback__ = &__nvoc_thunk_RmResource_vmrangeShareCallback;
261 
262     pThis->__vmrangeGetMapAddrSpace__ = &__nvoc_thunk_Memory_vmrangeGetMapAddrSpace;
263 
264     pThis->__vmrangeIsExportAllowed__ = &__nvoc_thunk_Memory_vmrangeIsExportAllowed;
265 
266     pThis->__vmrangeGetRefCount__ = &__nvoc_thunk_RsResource_vmrangeGetRefCount;
267 
268     pThis->__vmrangeAddAdditionalDependants__ = &__nvoc_thunk_RsResource_vmrangeAddAdditionalDependants;
269 
270     pThis->__vmrangeControl_Prologue__ = &__nvoc_thunk_RmResource_vmrangeControl_Prologue;
271 
272     pThis->__vmrangeIsGpuMapAllowed__ = &__nvoc_thunk_Memory_vmrangeIsGpuMapAllowed;
273 
274     pThis->__vmrangeUnmapFrom__ = &__nvoc_thunk_VirtualMemory_vmrangeUnmapFrom;
275 
276     pThis->__vmrangeControl_Epilogue__ = &__nvoc_thunk_RmResource_vmrangeControl_Epilogue;
277 
278     pThis->__vmrangeControlLookup__ = &__nvoc_thunk_RsResource_vmrangeControlLookup;
279 
280     pThis->__vmrangeControl__ = &__nvoc_thunk_Memory_vmrangeControl;
281 
282     pThis->__vmrangeUnmap__ = &__nvoc_thunk_Memory_vmrangeUnmap;
283 
284     pThis->__vmrangeGetMemInterMapParams__ = &__nvoc_thunk_Memory_vmrangeGetMemInterMapParams;
285 
286     pThis->__vmrangeGetMemoryMappingDescriptor__ = &__nvoc_thunk_Memory_vmrangeGetMemoryMappingDescriptor;
287 
288     pThis->__vmrangeControlFilter__ = &__nvoc_thunk_RsResource_vmrangeControlFilter;
289 
290     pThis->__vmrangeControlSerialization_Prologue__ = &__nvoc_thunk_RmResource_vmrangeControlSerialization_Prologue;
291 
292     pThis->__vmrangeCanCopy__ = &__nvoc_thunk_StandardMemory_vmrangeCanCopy;
293 
294     pThis->__vmrangeIsReady__ = &__nvoc_thunk_Memory_vmrangeIsReady;
295 
296     pThis->__vmrangeCheckCopyPermissions__ = &__nvoc_thunk_Memory_vmrangeCheckCopyPermissions;
297 
298     pThis->__vmrangePreDestruct__ = &__nvoc_thunk_RsResource_vmrangePreDestruct;
299 
300     pThis->__vmrangeIsDuplicate__ = &__nvoc_thunk_Memory_vmrangeIsDuplicate;
301 
302     pThis->__vmrangeControlSerialization_Epilogue__ = &__nvoc_thunk_RmResource_vmrangeControlSerialization_Epilogue;
303 
304     pThis->__vmrangeMap__ = &__nvoc_thunk_Memory_vmrangeMap;
305 
306     pThis->__vmrangeAccessCallback__ = &__nvoc_thunk_RmResource_vmrangeAccessCallback;
307 }
308 
309 void __nvoc_init_funcTable_VirtualMemoryRange(VirtualMemoryRange *pThis) {
310     __nvoc_init_funcTable_VirtualMemoryRange_1(pThis);
311 }
312 
313 void __nvoc_init_VirtualMemory(VirtualMemory*);
314 void __nvoc_init_VirtualMemoryRange(VirtualMemoryRange *pThis) {
315     pThis->__nvoc_pbase_VirtualMemoryRange = pThis;
316     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object;
317     pThis->__nvoc_pbase_RsResource = &pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource;
318     pThis->__nvoc_pbase_RmResourceCommon = &pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RmResourceCommon;
319     pThis->__nvoc_pbase_RmResource = &pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource;
320     pThis->__nvoc_pbase_Memory = &pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory;
321     pThis->__nvoc_pbase_StandardMemory = &pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory;
322     pThis->__nvoc_pbase_VirtualMemory = &pThis->__nvoc_base_VirtualMemory;
323     __nvoc_init_VirtualMemory(&pThis->__nvoc_base_VirtualMemory);
324     __nvoc_init_funcTable_VirtualMemoryRange(pThis);
325 }
326 
327 NV_STATUS __nvoc_objCreate_VirtualMemoryRange(VirtualMemoryRange **ppThis, Dynamic *pParent, NvU32 createFlags, CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) {
328     NV_STATUS status;
329     Object *pParentObj;
330     VirtualMemoryRange *pThis;
331 
332     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(VirtualMemoryRange), (void**)&pThis, (void**)ppThis);
333     if (status != NV_OK)
334         return status;
335 
336     portMemSet(pThis, 0, sizeof(VirtualMemoryRange));
337 
338     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_VirtualMemoryRange);
339 
340     pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.createFlags = createFlags;
341 
342     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
343     {
344         pParentObj = dynamicCast(pParent, Object);
345         objAddChild(pParentObj, &pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object);
346     }
347     else
348     {
349         pThis->__nvoc_base_VirtualMemory.__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.pParent = NULL;
350     }
351 
352     __nvoc_init_VirtualMemoryRange(pThis);
353     status = __nvoc_ctor_VirtualMemoryRange(pThis, arg_pCallContext, arg_pParams);
354     if (status != NV_OK) goto __nvoc_objCreate_VirtualMemoryRange_cleanup;
355 
356     *ppThis = pThis;
357 
358     return NV_OK;
359 
360 __nvoc_objCreate_VirtualMemoryRange_cleanup:
361     // do not call destructors here since the constructor already called them
362     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
363         portMemSet(pThis, 0, sizeof(VirtualMemoryRange));
364     else
365         portMemFree(pThis);
366 
367     // coverity[leaked_storage:FALSE]
368     return status;
369 }
370 
371 NV_STATUS __nvoc_objCreateDynamic_VirtualMemoryRange(VirtualMemoryRange **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
372     NV_STATUS status;
373     CALL_CONTEXT * arg_pCallContext = va_arg(args, CALL_CONTEXT *);
374     struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams = va_arg(args, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
375 
376     status = __nvoc_objCreate_VirtualMemoryRange(ppThis, pParent, createFlags, arg_pCallContext, arg_pParams);
377 
378     return status;
379 }
380 
381