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