1 #define NVOC_P2P_API_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_p2p_api_nvoc.h"
9
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x3982b7 = 1;
12 #endif
13
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_P2PApi;
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 void __nvoc_init_P2PApi(P2PApi*);
25 void __nvoc_init_funcTable_P2PApi(P2PApi*);
26 NV_STATUS __nvoc_ctor_P2PApi(P2PApi*, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams);
27 void __nvoc_init_dataField_P2PApi(P2PApi*);
28 void __nvoc_dtor_P2PApi(P2PApi*);
29 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_P2PApi;
30
31 static const struct NVOC_RTTI __nvoc_rtti_P2PApi_P2PApi = {
32 /*pClassDef=*/ &__nvoc_class_def_P2PApi,
33 /*dtor=*/ (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_P2PApi,
34 /*offset=*/ 0,
35 };
36
37 static const struct NVOC_RTTI __nvoc_rtti_P2PApi_Object = {
38 /*pClassDef=*/ &__nvoc_class_def_Object,
39 /*dtor=*/ &__nvoc_destructFromBase,
40 /*offset=*/ NV_OFFSETOF(P2PApi, __nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object),
41 };
42
43 static const struct NVOC_RTTI __nvoc_rtti_P2PApi_RsResource = {
44 /*pClassDef=*/ &__nvoc_class_def_RsResource,
45 /*dtor=*/ &__nvoc_destructFromBase,
46 /*offset=*/ NV_OFFSETOF(P2PApi, __nvoc_base_RmResource.__nvoc_base_RsResource),
47 };
48
49 static const struct NVOC_RTTI __nvoc_rtti_P2PApi_RmResourceCommon = {
50 /*pClassDef=*/ &__nvoc_class_def_RmResourceCommon,
51 /*dtor=*/ &__nvoc_destructFromBase,
52 /*offset=*/ NV_OFFSETOF(P2PApi, __nvoc_base_RmResource.__nvoc_base_RmResourceCommon),
53 };
54
55 static const struct NVOC_RTTI __nvoc_rtti_P2PApi_RmResource = {
56 /*pClassDef=*/ &__nvoc_class_def_RmResource,
57 /*dtor=*/ &__nvoc_destructFromBase,
58 /*offset=*/ NV_OFFSETOF(P2PApi, __nvoc_base_RmResource),
59 };
60
61 static const struct NVOC_CASTINFO __nvoc_castinfo_P2PApi = {
62 /*numRelatives=*/ 5,
63 /*relatives=*/ {
64 &__nvoc_rtti_P2PApi_P2PApi,
65 &__nvoc_rtti_P2PApi_RmResource,
66 &__nvoc_rtti_P2PApi_RmResourceCommon,
67 &__nvoc_rtti_P2PApi_RsResource,
68 &__nvoc_rtti_P2PApi_Object,
69 },
70 };
71
72 const struct NVOC_CLASS_DEF __nvoc_class_def_P2PApi =
73 {
74 /*classInfo=*/ {
75 /*size=*/ sizeof(P2PApi),
76 /*classId=*/ classId(P2PApi),
77 /*providerId=*/ &__nvoc_rtti_provider,
78 #if NV_PRINTF_STRINGS_ALLOWED
79 /*name=*/ "P2PApi",
80 #endif
81 },
82 /*objCreatefn=*/ (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_P2PApi,
83 /*pCastInfo=*/ &__nvoc_castinfo_P2PApi,
84 /*pExportInfo=*/ &__nvoc_export_info_P2PApi
85 };
86
__nvoc_thunk_RmResource_p2papiShareCallback(struct P2PApi * pResource,struct RsClient * pInvokingClient,struct RsResourceRef * pParentRef,RS_SHARE_POLICY * pSharePolicy)87 static NvBool __nvoc_thunk_RmResource_p2papiShareCallback(struct P2PApi *pResource, struct RsClient *pInvokingClient, struct RsResourceRef *pParentRef, RS_SHARE_POLICY *pSharePolicy) {
88 return rmresShareCallback((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RmResource.offset), pInvokingClient, pParentRef, pSharePolicy);
89 }
90
__nvoc_thunk_RmResource_p2papiCheckMemInterUnmap(struct P2PApi * pRmResource,NvBool bSubdeviceHandleProvided)91 static NV_STATUS __nvoc_thunk_RmResource_p2papiCheckMemInterUnmap(struct P2PApi *pRmResource, NvBool bSubdeviceHandleProvided) {
92 return rmresCheckMemInterUnmap((struct RmResource *)(((unsigned char *)pRmResource) + __nvoc_rtti_P2PApi_RmResource.offset), bSubdeviceHandleProvided);
93 }
94
__nvoc_thunk_RsResource_p2papiControl(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)95 static NV_STATUS __nvoc_thunk_RsResource_p2papiControl(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
96 return resControl((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), pCallContext, pParams);
97 }
98
__nvoc_thunk_RmResource_p2papiGetMemInterMapParams(struct P2PApi * pRmResource,RMRES_MEM_INTER_MAP_PARAMS * pParams)99 static NV_STATUS __nvoc_thunk_RmResource_p2papiGetMemInterMapParams(struct P2PApi *pRmResource, RMRES_MEM_INTER_MAP_PARAMS *pParams) {
100 return rmresGetMemInterMapParams((struct RmResource *)(((unsigned char *)pRmResource) + __nvoc_rtti_P2PApi_RmResource.offset), pParams);
101 }
102
__nvoc_thunk_RmResource_p2papiGetMemoryMappingDescriptor(struct P2PApi * pRmResource,struct MEMORY_DESCRIPTOR ** ppMemDesc)103 static NV_STATUS __nvoc_thunk_RmResource_p2papiGetMemoryMappingDescriptor(struct P2PApi *pRmResource, struct MEMORY_DESCRIPTOR **ppMemDesc) {
104 return rmresGetMemoryMappingDescriptor((struct RmResource *)(((unsigned char *)pRmResource) + __nvoc_rtti_P2PApi_RmResource.offset), ppMemDesc);
105 }
106
__nvoc_thunk_RsResource_p2papiGetRefCount(struct P2PApi * pResource)107 static NvU32 __nvoc_thunk_RsResource_p2papiGetRefCount(struct P2PApi *pResource) {
108 return resGetRefCount((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset));
109 }
110
__nvoc_thunk_RsResource_p2papiControlFilter(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)111 static NV_STATUS __nvoc_thunk_RsResource_p2papiControlFilter(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
112 return resControlFilter((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), pCallContext, pParams);
113 }
114
__nvoc_thunk_RsResource_p2papiAddAdditionalDependants(struct RsClient * pClient,struct P2PApi * pResource,RsResourceRef * pReference)115 static void __nvoc_thunk_RsResource_p2papiAddAdditionalDependants(struct RsClient *pClient, struct P2PApi *pResource, RsResourceRef *pReference) {
116 resAddAdditionalDependants(pClient, (struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), pReference);
117 }
118
__nvoc_thunk_RmResource_p2papiControlSerialization_Prologue(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)119 static NV_STATUS __nvoc_thunk_RmResource_p2papiControlSerialization_Prologue(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
120 return rmresControlSerialization_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RmResource.offset), pCallContext, pParams);
121 }
122
__nvoc_thunk_RmResource_p2papiControl_Prologue(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)123 static NV_STATUS __nvoc_thunk_RmResource_p2papiControl_Prologue(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
124 return rmresControl_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RmResource.offset), pCallContext, pParams);
125 }
126
__nvoc_thunk_RsResource_p2papiCanCopy(struct P2PApi * pResource)127 static NvBool __nvoc_thunk_RsResource_p2papiCanCopy(struct P2PApi *pResource) {
128 return resCanCopy((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset));
129 }
130
__nvoc_thunk_RsResource_p2papiUnmap(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,RsCpuMapping * pCpuMapping)131 static NV_STATUS __nvoc_thunk_RsResource_p2papiUnmap(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, RsCpuMapping *pCpuMapping) {
132 return resUnmap((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), pCallContext, pCpuMapping);
133 }
134
__nvoc_thunk_RsResource_p2papiIsPartialUnmapSupported(struct P2PApi * pResource)135 static NvBool __nvoc_thunk_RsResource_p2papiIsPartialUnmapSupported(struct P2PApi *pResource) {
136 return resIsPartialUnmapSupported((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset));
137 }
138
__nvoc_thunk_RsResource_p2papiPreDestruct(struct P2PApi * pResource)139 static void __nvoc_thunk_RsResource_p2papiPreDestruct(struct P2PApi *pResource) {
140 resPreDestruct((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset));
141 }
142
__nvoc_thunk_RsResource_p2papiMapTo(struct P2PApi * pResource,RS_RES_MAP_TO_PARAMS * pParams)143 static NV_STATUS __nvoc_thunk_RsResource_p2papiMapTo(struct P2PApi *pResource, RS_RES_MAP_TO_PARAMS *pParams) {
144 return resMapTo((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), pParams);
145 }
146
__nvoc_thunk_RsResource_p2papiIsDuplicate(struct P2PApi * pResource,NvHandle hMemory,NvBool * pDuplicate)147 static NV_STATUS __nvoc_thunk_RsResource_p2papiIsDuplicate(struct P2PApi *pResource, NvHandle hMemory, NvBool *pDuplicate) {
148 return resIsDuplicate((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), hMemory, pDuplicate);
149 }
150
__nvoc_thunk_RmResource_p2papiControlSerialization_Epilogue(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)151 static void __nvoc_thunk_RmResource_p2papiControlSerialization_Epilogue(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
152 rmresControlSerialization_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RmResource.offset), pCallContext, pParams);
153 }
154
__nvoc_thunk_RmResource_p2papiControl_Epilogue(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)155 static void __nvoc_thunk_RmResource_p2papiControl_Epilogue(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
156 rmresControl_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RmResource.offset), pCallContext, pParams);
157 }
158
__nvoc_thunk_RsResource_p2papiUnmapFrom(struct P2PApi * pResource,RS_RES_UNMAP_FROM_PARAMS * pParams)159 static NV_STATUS __nvoc_thunk_RsResource_p2papiUnmapFrom(struct P2PApi *pResource, RS_RES_UNMAP_FROM_PARAMS *pParams) {
160 return resUnmapFrom((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), pParams);
161 }
162
__nvoc_thunk_RsResource_p2papiMap(struct P2PApi * pResource,struct CALL_CONTEXT * pCallContext,RS_CPU_MAP_PARAMS * pParams,RsCpuMapping * pCpuMapping)163 static NV_STATUS __nvoc_thunk_RsResource_p2papiMap(struct P2PApi *pResource, struct CALL_CONTEXT *pCallContext, RS_CPU_MAP_PARAMS *pParams, RsCpuMapping *pCpuMapping) {
164 return resMap((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RsResource.offset), pCallContext, pParams, pCpuMapping);
165 }
166
__nvoc_thunk_RmResource_p2papiAccessCallback(struct P2PApi * pResource,struct RsClient * pInvokingClient,void * pAllocParams,RsAccessRight accessRight)167 static NvBool __nvoc_thunk_RmResource_p2papiAccessCallback(struct P2PApi *pResource, struct RsClient *pInvokingClient, void *pAllocParams, RsAccessRight accessRight) {
168 return rmresAccessCallback((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_P2PApi_RmResource.offset), pInvokingClient, pAllocParams, accessRight);
169 }
170
171 const struct NVOC_EXPORT_INFO __nvoc_export_info_P2PApi =
172 {
173 /*numEntries=*/ 0,
174 /*pExportEntries=*/ 0
175 };
176
177 void __nvoc_dtor_RmResource(RmResource*);
__nvoc_dtor_P2PApi(P2PApi * pThis)178 void __nvoc_dtor_P2PApi(P2PApi *pThis) {
179 __nvoc_p2papiDestruct(pThis);
180 __nvoc_dtor_RmResource(&pThis->__nvoc_base_RmResource);
181 PORT_UNREFERENCED_VARIABLE(pThis);
182 }
183
__nvoc_init_dataField_P2PApi(P2PApi * pThis)184 void __nvoc_init_dataField_P2PApi(P2PApi *pThis) {
185 PORT_UNREFERENCED_VARIABLE(pThis);
186 }
187
188 NV_STATUS __nvoc_ctor_RmResource(RmResource* , struct CALL_CONTEXT *, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
__nvoc_ctor_P2PApi(P2PApi * pThis,struct CALL_CONTEXT * arg_pCallContext,struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)189 NV_STATUS __nvoc_ctor_P2PApi(P2PApi *pThis, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) {
190 NV_STATUS status = NV_OK;
191 status = __nvoc_ctor_RmResource(&pThis->__nvoc_base_RmResource, arg_pCallContext, arg_pParams);
192 if (status != NV_OK) goto __nvoc_ctor_P2PApi_fail_RmResource;
193 __nvoc_init_dataField_P2PApi(pThis);
194
195 status = __nvoc_p2papiConstruct(pThis, arg_pCallContext, arg_pParams);
196 if (status != NV_OK) goto __nvoc_ctor_P2PApi_fail__init;
197 goto __nvoc_ctor_P2PApi_exit; // Success
198
199 __nvoc_ctor_P2PApi_fail__init:
200 __nvoc_dtor_RmResource(&pThis->__nvoc_base_RmResource);
201 __nvoc_ctor_P2PApi_fail_RmResource:
202 __nvoc_ctor_P2PApi_exit:
203
204 return status;
205 }
206
__nvoc_init_funcTable_P2PApi_1(P2PApi * pThis)207 static void __nvoc_init_funcTable_P2PApi_1(P2PApi *pThis) {
208 PORT_UNREFERENCED_VARIABLE(pThis);
209
210 pThis->__p2papiShareCallback__ = &__nvoc_thunk_RmResource_p2papiShareCallback;
211
212 pThis->__p2papiCheckMemInterUnmap__ = &__nvoc_thunk_RmResource_p2papiCheckMemInterUnmap;
213
214 pThis->__p2papiControl__ = &__nvoc_thunk_RsResource_p2papiControl;
215
216 pThis->__p2papiGetMemInterMapParams__ = &__nvoc_thunk_RmResource_p2papiGetMemInterMapParams;
217
218 pThis->__p2papiGetMemoryMappingDescriptor__ = &__nvoc_thunk_RmResource_p2papiGetMemoryMappingDescriptor;
219
220 pThis->__p2papiGetRefCount__ = &__nvoc_thunk_RsResource_p2papiGetRefCount;
221
222 pThis->__p2papiControlFilter__ = &__nvoc_thunk_RsResource_p2papiControlFilter;
223
224 pThis->__p2papiAddAdditionalDependants__ = &__nvoc_thunk_RsResource_p2papiAddAdditionalDependants;
225
226 pThis->__p2papiControlSerialization_Prologue__ = &__nvoc_thunk_RmResource_p2papiControlSerialization_Prologue;
227
228 pThis->__p2papiControl_Prologue__ = &__nvoc_thunk_RmResource_p2papiControl_Prologue;
229
230 pThis->__p2papiCanCopy__ = &__nvoc_thunk_RsResource_p2papiCanCopy;
231
232 pThis->__p2papiUnmap__ = &__nvoc_thunk_RsResource_p2papiUnmap;
233
234 pThis->__p2papiIsPartialUnmapSupported__ = &__nvoc_thunk_RsResource_p2papiIsPartialUnmapSupported;
235
236 pThis->__p2papiPreDestruct__ = &__nvoc_thunk_RsResource_p2papiPreDestruct;
237
238 pThis->__p2papiMapTo__ = &__nvoc_thunk_RsResource_p2papiMapTo;
239
240 pThis->__p2papiIsDuplicate__ = &__nvoc_thunk_RsResource_p2papiIsDuplicate;
241
242 pThis->__p2papiControlSerialization_Epilogue__ = &__nvoc_thunk_RmResource_p2papiControlSerialization_Epilogue;
243
244 pThis->__p2papiControl_Epilogue__ = &__nvoc_thunk_RmResource_p2papiControl_Epilogue;
245
246 pThis->__p2papiUnmapFrom__ = &__nvoc_thunk_RsResource_p2papiUnmapFrom;
247
248 pThis->__p2papiMap__ = &__nvoc_thunk_RsResource_p2papiMap;
249
250 pThis->__p2papiAccessCallback__ = &__nvoc_thunk_RmResource_p2papiAccessCallback;
251 }
252
__nvoc_init_funcTable_P2PApi(P2PApi * pThis)253 void __nvoc_init_funcTable_P2PApi(P2PApi *pThis) {
254 __nvoc_init_funcTable_P2PApi_1(pThis);
255 }
256
257 void __nvoc_init_RmResource(RmResource*);
__nvoc_init_P2PApi(P2PApi * pThis)258 void __nvoc_init_P2PApi(P2PApi *pThis) {
259 pThis->__nvoc_pbase_P2PApi = pThis;
260 pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object;
261 pThis->__nvoc_pbase_RsResource = &pThis->__nvoc_base_RmResource.__nvoc_base_RsResource;
262 pThis->__nvoc_pbase_RmResourceCommon = &pThis->__nvoc_base_RmResource.__nvoc_base_RmResourceCommon;
263 pThis->__nvoc_pbase_RmResource = &pThis->__nvoc_base_RmResource;
264 __nvoc_init_RmResource(&pThis->__nvoc_base_RmResource);
265 __nvoc_init_funcTable_P2PApi(pThis);
266 }
267
__nvoc_objCreate_P2PApi(P2PApi ** ppThis,Dynamic * pParent,NvU32 createFlags,struct CALL_CONTEXT * arg_pCallContext,struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)268 NV_STATUS __nvoc_objCreate_P2PApi(P2PApi **ppThis, Dynamic *pParent, NvU32 createFlags, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)
269 {
270 NV_STATUS status;
271 Object *pParentObj = NULL;
272 P2PApi *pThis;
273
274 // Assign `pThis`, allocating memory unless suppressed by flag.
275 status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(P2PApi), (void**)&pThis, (void**)ppThis);
276 if (status != NV_OK)
277 return status;
278
279 // Zero is the initial value for everything.
280 portMemSet(pThis, 0, sizeof(P2PApi));
281
282 // Initialize runtime type information.
283 __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_P2PApi);
284
285 pThis->__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.createFlags = createFlags;
286
287 // Link the child into the parent if there is one unless flagged not to do so.
288 if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
289 {
290 pParentObj = dynamicCast(pParent, Object);
291 objAddChild(pParentObj, &pThis->__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object);
292 }
293 else
294 {
295 pThis->__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.pParent = NULL;
296 }
297
298 __nvoc_init_P2PApi(pThis);
299 status = __nvoc_ctor_P2PApi(pThis, arg_pCallContext, arg_pParams);
300 if (status != NV_OK) goto __nvoc_objCreate_P2PApi_cleanup;
301
302 // Assignment has no effect if NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT is set.
303 *ppThis = pThis;
304
305 return NV_OK;
306
307 __nvoc_objCreate_P2PApi_cleanup:
308
309 // Unlink the child from the parent if it was linked above.
310 if (pParentObj != NULL)
311 objRemoveChild(pParentObj, &pThis->__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object);
312
313 // Do not call destructors here since the constructor already called them.
314 if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
315 portMemSet(pThis, 0, sizeof(P2PApi));
316 else
317 {
318 portMemFree(pThis);
319 *ppThis = NULL;
320 }
321
322 // coverity[leaked_storage:FALSE]
323 return status;
324 }
325
__nvoc_objCreateDynamic_P2PApi(P2PApi ** ppThis,Dynamic * pParent,NvU32 createFlags,va_list args)326 NV_STATUS __nvoc_objCreateDynamic_P2PApi(P2PApi **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
327 NV_STATUS status;
328 struct CALL_CONTEXT * arg_pCallContext = va_arg(args, struct CALL_CONTEXT *);
329 struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams = va_arg(args, struct RS_RES_ALLOC_PARAMS_INTERNAL *);
330
331 status = __nvoc_objCreate_P2PApi(ppThis, pParent, createFlags, arg_pCallContext, arg_pParams);
332
333 return status;
334 }
335
336