1 #define NVOC_EGM_MEM_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_egm_mem_nvoc.h" 9 10 #ifdef DEBUG 11 char __nvoc_class_id_uniqueness_check_0xeffa5c = 1; 12 #endif 13 14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_ExtendedGpuMemory; 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 void __nvoc_init_ExtendedGpuMemory(ExtendedGpuMemory*); 29 void __nvoc_init_funcTable_ExtendedGpuMemory(ExtendedGpuMemory*); 30 NV_STATUS __nvoc_ctor_ExtendedGpuMemory(ExtendedGpuMemory*, CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams); 31 void __nvoc_init_dataField_ExtendedGpuMemory(ExtendedGpuMemory*); 32 void __nvoc_dtor_ExtendedGpuMemory(ExtendedGpuMemory*); 33 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_ExtendedGpuMemory; 34 35 static const struct NVOC_RTTI __nvoc_rtti_ExtendedGpuMemory_ExtendedGpuMemory = { 36 /*pClassDef=*/ &__nvoc_class_def_ExtendedGpuMemory, 37 /*dtor=*/ (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_ExtendedGpuMemory, 38 /*offset=*/ 0, 39 }; 40 41 static const struct NVOC_RTTI __nvoc_rtti_ExtendedGpuMemory_Object = { 42 /*pClassDef=*/ &__nvoc_class_def_Object, 43 /*dtor=*/ &__nvoc_destructFromBase, 44 /*offset=*/ NV_OFFSETOF(ExtendedGpuMemory, __nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object), 45 }; 46 47 static const struct NVOC_RTTI __nvoc_rtti_ExtendedGpuMemory_RsResource = { 48 /*pClassDef=*/ &__nvoc_class_def_RsResource, 49 /*dtor=*/ &__nvoc_destructFromBase, 50 /*offset=*/ NV_OFFSETOF(ExtendedGpuMemory, __nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource), 51 }; 52 53 static const struct NVOC_RTTI __nvoc_rtti_ExtendedGpuMemory_RmResourceCommon = { 54 /*pClassDef=*/ &__nvoc_class_def_RmResourceCommon, 55 /*dtor=*/ &__nvoc_destructFromBase, 56 /*offset=*/ NV_OFFSETOF(ExtendedGpuMemory, __nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RmResourceCommon), 57 }; 58 59 static const struct NVOC_RTTI __nvoc_rtti_ExtendedGpuMemory_RmResource = { 60 /*pClassDef=*/ &__nvoc_class_def_RmResource, 61 /*dtor=*/ &__nvoc_destructFromBase, 62 /*offset=*/ NV_OFFSETOF(ExtendedGpuMemory, __nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource), 63 }; 64 65 static const struct NVOC_RTTI __nvoc_rtti_ExtendedGpuMemory_Memory = { 66 /*pClassDef=*/ &__nvoc_class_def_Memory, 67 /*dtor=*/ &__nvoc_destructFromBase, 68 /*offset=*/ NV_OFFSETOF(ExtendedGpuMemory, __nvoc_base_StandardMemory.__nvoc_base_Memory), 69 }; 70 71 static const struct NVOC_RTTI __nvoc_rtti_ExtendedGpuMemory_StandardMemory = { 72 /*pClassDef=*/ &__nvoc_class_def_StandardMemory, 73 /*dtor=*/ &__nvoc_destructFromBase, 74 /*offset=*/ NV_OFFSETOF(ExtendedGpuMemory, __nvoc_base_StandardMemory), 75 }; 76 77 static const struct NVOC_CASTINFO __nvoc_castinfo_ExtendedGpuMemory = { 78 /*numRelatives=*/ 7, 79 /*relatives=*/ { 80 &__nvoc_rtti_ExtendedGpuMemory_ExtendedGpuMemory, 81 &__nvoc_rtti_ExtendedGpuMemory_StandardMemory, 82 &__nvoc_rtti_ExtendedGpuMemory_Memory, 83 &__nvoc_rtti_ExtendedGpuMemory_RmResource, 84 &__nvoc_rtti_ExtendedGpuMemory_RmResourceCommon, 85 &__nvoc_rtti_ExtendedGpuMemory_RsResource, 86 &__nvoc_rtti_ExtendedGpuMemory_Object, 87 }, 88 }; 89 90 const struct NVOC_CLASS_DEF __nvoc_class_def_ExtendedGpuMemory = 91 { 92 /*classInfo=*/ { 93 /*size=*/ sizeof(ExtendedGpuMemory), 94 /*classId=*/ classId(ExtendedGpuMemory), 95 /*providerId=*/ &__nvoc_rtti_provider, 96 #if NV_PRINTF_STRINGS_ALLOWED 97 /*name=*/ "ExtendedGpuMemory", 98 #endif 99 }, 100 /*objCreatefn=*/ (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_ExtendedGpuMemory, 101 /*pCastInfo=*/ &__nvoc_castinfo_ExtendedGpuMemory, 102 /*pExportInfo=*/ &__nvoc_export_info_ExtendedGpuMemory 103 }; 104 105 static NV_STATUS __nvoc_thunk_Memory_egmmemCheckMemInterUnmap(struct ExtendedGpuMemory *pMemory, NvBool bSubdeviceHandleProvided) { 106 return memCheckMemInterUnmap((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), bSubdeviceHandleProvided); 107 } 108 109 static NvBool __nvoc_thunk_RmResource_egmmemShareCallback(struct ExtendedGpuMemory *pResource, struct RsClient *pInvokingClient, struct RsResourceRef *pParentRef, RS_SHARE_POLICY *pSharePolicy) { 110 return rmresShareCallback((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RmResource.offset), pInvokingClient, pParentRef, pSharePolicy); 111 } 112 113 static NV_STATUS __nvoc_thunk_RsResource_egmmemMapTo(struct ExtendedGpuMemory *pResource, RS_RES_MAP_TO_PARAMS *pParams) { 114 return resMapTo((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RsResource.offset), pParams); 115 } 116 117 static NV_STATUS __nvoc_thunk_Memory_egmmemGetMapAddrSpace(struct ExtendedGpuMemory *pMemory, CALL_CONTEXT *pCallContext, NvU32 mapFlags, NV_ADDRESS_SPACE *pAddrSpace) { 118 return memGetMapAddrSpace((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), pCallContext, mapFlags, pAddrSpace); 119 } 120 121 static NvU32 __nvoc_thunk_RsResource_egmmemGetRefCount(struct ExtendedGpuMemory *pResource) { 122 return resGetRefCount((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RsResource.offset)); 123 } 124 125 static void __nvoc_thunk_RsResource_egmmemAddAdditionalDependants(struct RsClient *pClient, struct ExtendedGpuMemory *pResource, RsResourceRef *pReference) { 126 resAddAdditionalDependants(pClient, (struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RsResource.offset), pReference); 127 } 128 129 static NV_STATUS __nvoc_thunk_RmResource_egmmemControl_Prologue(struct ExtendedGpuMemory *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 130 return rmresControl_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RmResource.offset), pCallContext, pParams); 131 } 132 133 static NvBool __nvoc_thunk_Memory_egmmemIsGpuMapAllowed(struct ExtendedGpuMemory *pMemory, struct OBJGPU *pGpu) { 134 return memIsGpuMapAllowed((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), pGpu); 135 } 136 137 static NV_STATUS __nvoc_thunk_RsResource_egmmemUnmapFrom(struct ExtendedGpuMemory *pResource, RS_RES_UNMAP_FROM_PARAMS *pParams) { 138 return resUnmapFrom((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RsResource.offset), pParams); 139 } 140 141 static void __nvoc_thunk_RmResource_egmmemControl_Epilogue(struct ExtendedGpuMemory *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 142 rmresControl_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RmResource.offset), pCallContext, pParams); 143 } 144 145 static NV_STATUS __nvoc_thunk_RsResource_egmmemControlLookup(struct ExtendedGpuMemory *pResource, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams, const struct NVOC_EXPORTED_METHOD_DEF **ppEntry) { 146 return resControlLookup((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RsResource.offset), pParams, ppEntry); 147 } 148 149 static NV_STATUS __nvoc_thunk_Memory_egmmemControl(struct ExtendedGpuMemory *pMemory, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 150 return memControl((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), pCallContext, pParams); 151 } 152 153 static NV_STATUS __nvoc_thunk_Memory_egmmemUnmap(struct ExtendedGpuMemory *pMemory, CALL_CONTEXT *pCallContext, RsCpuMapping *pCpuMapping) { 154 return memUnmap((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), pCallContext, pCpuMapping); 155 } 156 157 static NV_STATUS __nvoc_thunk_Memory_egmmemGetMemInterMapParams(struct ExtendedGpuMemory *pMemory, RMRES_MEM_INTER_MAP_PARAMS *pParams) { 158 return memGetMemInterMapParams((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), pParams); 159 } 160 161 static NV_STATUS __nvoc_thunk_Memory_egmmemGetMemoryMappingDescriptor(struct ExtendedGpuMemory *pMemory, MEMORY_DESCRIPTOR **ppMemDesc) { 162 return memGetMemoryMappingDescriptor((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), ppMemDesc); 163 } 164 165 static NV_STATUS __nvoc_thunk_RsResource_egmmemControlFilter(struct ExtendedGpuMemory *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 166 return resControlFilter((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RsResource.offset), pCallContext, pParams); 167 } 168 169 static NV_STATUS __nvoc_thunk_RmResource_egmmemControlSerialization_Prologue(struct ExtendedGpuMemory *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 170 return rmresControlSerialization_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RmResource.offset), pCallContext, pParams); 171 } 172 173 static NvBool __nvoc_thunk_StandardMemory_egmmemCanCopy(struct ExtendedGpuMemory *pStandardMemory) { 174 return stdmemCanCopy((struct StandardMemory *)(((unsigned char *)pStandardMemory) + __nvoc_rtti_ExtendedGpuMemory_StandardMemory.offset)); 175 } 176 177 static NV_STATUS __nvoc_thunk_Memory_egmmemIsReady(struct ExtendedGpuMemory *pMemory, NvBool bCopyConstructorContext) { 178 return memIsReady((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), bCopyConstructorContext); 179 } 180 181 static NV_STATUS __nvoc_thunk_Memory_egmmemCheckCopyPermissions(struct ExtendedGpuMemory *pMemory, struct OBJGPU *pDstGpu, struct Device *pDstDevice) { 182 return memCheckCopyPermissions((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), pDstGpu, pDstDevice); 183 } 184 185 static void __nvoc_thunk_RsResource_egmmemPreDestruct(struct ExtendedGpuMemory *pResource) { 186 resPreDestruct((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RsResource.offset)); 187 } 188 189 static NV_STATUS __nvoc_thunk_Memory_egmmemIsDuplicate(struct ExtendedGpuMemory *pMemory, NvHandle hMemory, NvBool *pDuplicate) { 190 return memIsDuplicate((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), hMemory, pDuplicate); 191 } 192 193 static void __nvoc_thunk_RmResource_egmmemControlSerialization_Epilogue(struct ExtendedGpuMemory *pResource, CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 194 rmresControlSerialization_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RmResource.offset), pCallContext, pParams); 195 } 196 197 static NV_STATUS __nvoc_thunk_Memory_egmmemMap(struct ExtendedGpuMemory *pMemory, CALL_CONTEXT *pCallContext, struct RS_CPU_MAP_PARAMS *pParams, RsCpuMapping *pCpuMapping) { 198 return memMap((struct Memory *)(((unsigned char *)pMemory) + __nvoc_rtti_ExtendedGpuMemory_Memory.offset), pCallContext, pParams, pCpuMapping); 199 } 200 201 static NvBool __nvoc_thunk_RmResource_egmmemAccessCallback(struct ExtendedGpuMemory *pResource, struct RsClient *pInvokingClient, void *pAllocParams, RsAccessRight accessRight) { 202 return rmresAccessCallback((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_ExtendedGpuMemory_RmResource.offset), pInvokingClient, pAllocParams, accessRight); 203 } 204 205 const struct NVOC_EXPORT_INFO __nvoc_export_info_ExtendedGpuMemory = 206 { 207 /*numEntries=*/ 0, 208 /*pExportEntries=*/ 0 209 }; 210 211 void __nvoc_dtor_StandardMemory(StandardMemory*); 212 void __nvoc_dtor_ExtendedGpuMemory(ExtendedGpuMemory *pThis) { 213 __nvoc_dtor_StandardMemory(&pThis->__nvoc_base_StandardMemory); 214 PORT_UNREFERENCED_VARIABLE(pThis); 215 } 216 217 void __nvoc_init_dataField_ExtendedGpuMemory(ExtendedGpuMemory *pThis) { 218 PORT_UNREFERENCED_VARIABLE(pThis); 219 } 220 221 NV_STATUS __nvoc_ctor_StandardMemory(StandardMemory* , CALL_CONTEXT *, struct RS_RES_ALLOC_PARAMS_INTERNAL *); 222 NV_STATUS __nvoc_ctor_ExtendedGpuMemory(ExtendedGpuMemory *pThis, CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) { 223 NV_STATUS status = NV_OK; 224 status = __nvoc_ctor_StandardMemory(&pThis->__nvoc_base_StandardMemory, arg_pCallContext, arg_pParams); 225 if (status != NV_OK) goto __nvoc_ctor_ExtendedGpuMemory_fail_StandardMemory; 226 __nvoc_init_dataField_ExtendedGpuMemory(pThis); 227 228 status = __nvoc_egmmemConstruct(pThis, arg_pCallContext, arg_pParams); 229 if (status != NV_OK) goto __nvoc_ctor_ExtendedGpuMemory_fail__init; 230 goto __nvoc_ctor_ExtendedGpuMemory_exit; // Success 231 232 __nvoc_ctor_ExtendedGpuMemory_fail__init: 233 __nvoc_dtor_StandardMemory(&pThis->__nvoc_base_StandardMemory); 234 __nvoc_ctor_ExtendedGpuMemory_fail_StandardMemory: 235 __nvoc_ctor_ExtendedGpuMemory_exit: 236 237 return status; 238 } 239 240 static void __nvoc_init_funcTable_ExtendedGpuMemory_1(ExtendedGpuMemory *pThis) { 241 PORT_UNREFERENCED_VARIABLE(pThis); 242 243 pThis->__egmmemCheckMemInterUnmap__ = &__nvoc_thunk_Memory_egmmemCheckMemInterUnmap; 244 245 pThis->__egmmemShareCallback__ = &__nvoc_thunk_RmResource_egmmemShareCallback; 246 247 pThis->__egmmemMapTo__ = &__nvoc_thunk_RsResource_egmmemMapTo; 248 249 pThis->__egmmemGetMapAddrSpace__ = &__nvoc_thunk_Memory_egmmemGetMapAddrSpace; 250 251 pThis->__egmmemGetRefCount__ = &__nvoc_thunk_RsResource_egmmemGetRefCount; 252 253 pThis->__egmmemAddAdditionalDependants__ = &__nvoc_thunk_RsResource_egmmemAddAdditionalDependants; 254 255 pThis->__egmmemControl_Prologue__ = &__nvoc_thunk_RmResource_egmmemControl_Prologue; 256 257 pThis->__egmmemIsGpuMapAllowed__ = &__nvoc_thunk_Memory_egmmemIsGpuMapAllowed; 258 259 pThis->__egmmemUnmapFrom__ = &__nvoc_thunk_RsResource_egmmemUnmapFrom; 260 261 pThis->__egmmemControl_Epilogue__ = &__nvoc_thunk_RmResource_egmmemControl_Epilogue; 262 263 pThis->__egmmemControlLookup__ = &__nvoc_thunk_RsResource_egmmemControlLookup; 264 265 pThis->__egmmemControl__ = &__nvoc_thunk_Memory_egmmemControl; 266 267 pThis->__egmmemUnmap__ = &__nvoc_thunk_Memory_egmmemUnmap; 268 269 pThis->__egmmemGetMemInterMapParams__ = &__nvoc_thunk_Memory_egmmemGetMemInterMapParams; 270 271 pThis->__egmmemGetMemoryMappingDescriptor__ = &__nvoc_thunk_Memory_egmmemGetMemoryMappingDescriptor; 272 273 pThis->__egmmemControlFilter__ = &__nvoc_thunk_RsResource_egmmemControlFilter; 274 275 pThis->__egmmemControlSerialization_Prologue__ = &__nvoc_thunk_RmResource_egmmemControlSerialization_Prologue; 276 277 pThis->__egmmemCanCopy__ = &__nvoc_thunk_StandardMemory_egmmemCanCopy; 278 279 pThis->__egmmemIsReady__ = &__nvoc_thunk_Memory_egmmemIsReady; 280 281 pThis->__egmmemCheckCopyPermissions__ = &__nvoc_thunk_Memory_egmmemCheckCopyPermissions; 282 283 pThis->__egmmemPreDestruct__ = &__nvoc_thunk_RsResource_egmmemPreDestruct; 284 285 pThis->__egmmemIsDuplicate__ = &__nvoc_thunk_Memory_egmmemIsDuplicate; 286 287 pThis->__egmmemControlSerialization_Epilogue__ = &__nvoc_thunk_RmResource_egmmemControlSerialization_Epilogue; 288 289 pThis->__egmmemMap__ = &__nvoc_thunk_Memory_egmmemMap; 290 291 pThis->__egmmemAccessCallback__ = &__nvoc_thunk_RmResource_egmmemAccessCallback; 292 } 293 294 void __nvoc_init_funcTable_ExtendedGpuMemory(ExtendedGpuMemory *pThis) { 295 __nvoc_init_funcTable_ExtendedGpuMemory_1(pThis); 296 } 297 298 void __nvoc_init_StandardMemory(StandardMemory*); 299 void __nvoc_init_ExtendedGpuMemory(ExtendedGpuMemory *pThis) { 300 pThis->__nvoc_pbase_ExtendedGpuMemory = pThis; 301 pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object; 302 pThis->__nvoc_pbase_RsResource = &pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource; 303 pThis->__nvoc_pbase_RmResourceCommon = &pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RmResourceCommon; 304 pThis->__nvoc_pbase_RmResource = &pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource; 305 pThis->__nvoc_pbase_Memory = &pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory; 306 pThis->__nvoc_pbase_StandardMemory = &pThis->__nvoc_base_StandardMemory; 307 __nvoc_init_StandardMemory(&pThis->__nvoc_base_StandardMemory); 308 __nvoc_init_funcTable_ExtendedGpuMemory(pThis); 309 } 310 311 NV_STATUS __nvoc_objCreate_ExtendedGpuMemory(ExtendedGpuMemory **ppThis, Dynamic *pParent, NvU32 createFlags, CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) { 312 NV_STATUS status; 313 Object *pParentObj; 314 ExtendedGpuMemory *pThis; 315 316 status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(ExtendedGpuMemory), (void**)&pThis, (void**)ppThis); 317 if (status != NV_OK) 318 return status; 319 320 portMemSet(pThis, 0, sizeof(ExtendedGpuMemory)); 321 322 __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_ExtendedGpuMemory); 323 324 pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.createFlags = createFlags; 325 326 if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY)) 327 { 328 pParentObj = dynamicCast(pParent, Object); 329 objAddChild(pParentObj, &pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object); 330 } 331 else 332 { 333 pThis->__nvoc_base_StandardMemory.__nvoc_base_Memory.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.pParent = NULL; 334 } 335 336 __nvoc_init_ExtendedGpuMemory(pThis); 337 status = __nvoc_ctor_ExtendedGpuMemory(pThis, arg_pCallContext, arg_pParams); 338 if (status != NV_OK) goto __nvoc_objCreate_ExtendedGpuMemory_cleanup; 339 340 *ppThis = pThis; 341 342 return NV_OK; 343 344 __nvoc_objCreate_ExtendedGpuMemory_cleanup: 345 // do not call destructors here since the constructor already called them 346 if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT) 347 portMemSet(pThis, 0, sizeof(ExtendedGpuMemory)); 348 else 349 portMemFree(pThis); 350 351 // coverity[leaked_storage:FALSE] 352 return status; 353 } 354 355 NV_STATUS __nvoc_objCreateDynamic_ExtendedGpuMemory(ExtendedGpuMemory **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) { 356 NV_STATUS status; 357 CALL_CONTEXT * arg_pCallContext = va_arg(args, CALL_CONTEXT *); 358 struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams = va_arg(args, struct RS_RES_ALLOC_PARAMS_INTERNAL *); 359 360 status = __nvoc_objCreate_ExtendedGpuMemory(ppThis, pParent, createFlags, arg_pCallContext, arg_pParams); 361 362 return status; 363 } 364 365