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