1 #ifndef _G_OBJGPUMON_NVOC_H_
2 #define _G_OBJGPUMON_NVOC_H_
3 #include "nvoc/runtime.h"
4 
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 /*
10  * SPDX-FileCopyrightText: Copyright (c) 2014-2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
11  * SPDX-License-Identifier: MIT
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining a
14  * copy of this software and associated documentation files (the "Software"),
15  * to deal in the Software without restriction, including without limitation
16  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17  * and/or sell copies of the Software, and to permit persons to whom the
18  * Software is furnished to do so, subject to the following conditions:
19  *
20  * The above copyright notice and this permission notice shall be included in
21  * all copies or substantial portions of the Software.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29  * DEALINGS IN THE SOFTWARE.
30  */
31 
32 #include "g_objgpumon_nvoc.h"
33 
34 #ifndef _OBJGPUMON_H_
35 #define _OBJGPUMON_H_
36 
37 /****************** Resource Manager Defines and Structures *****************\
38 *                                                                            *
39 *       Defines and structures used for the Gpumon Object.                   *
40 *                                                                            *
41 \****************************************************************************/
42 
43 #include "gpu/gpu.h"
44 #include "gpu/eng_state.h"
45 
46 #include "ctrl/ctrl2080/ctrl2080perf.h"
47 
48 typedef struct OBJGPUMON *POBJGPUMON;
49 
50 #ifdef NVOC_OBJGPUMON_H_PRIVATE_ACCESS_ALLOWED
51 #define PRIVATE_FIELD(x) x
52 #else
53 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
54 #endif
55 struct OBJGPUMON {
56     const struct NVOC_RTTI *__nvoc_rtti;
57     struct OBJENGSTATE __nvoc_base_OBJENGSTATE;
58     struct Object *__nvoc_pbase_Object;
59     struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE;
60     struct OBJGPUMON *__nvoc_pbase_OBJGPUMON;
61     NV_STATUS (*__gpumonStateLoad__)(POBJGPU, struct OBJGPUMON *, NvU32);
62     NV_STATUS (*__gpumonStateUnload__)(POBJGPU, struct OBJGPUMON *, NvU32);
63     NV_STATUS (*__gpumonStateInitLocked__)(POBJGPU, struct OBJGPUMON *);
64     NV_STATUS (*__gpumonStatePreLoad__)(POBJGPU, struct OBJGPUMON *, NvU32);
65     NV_STATUS (*__gpumonStatePostUnload__)(POBJGPU, struct OBJGPUMON *, NvU32);
66     void (*__gpumonStateDestroy__)(POBJGPU, struct OBJGPUMON *);
67     NV_STATUS (*__gpumonStatePreUnload__)(POBJGPU, struct OBJGPUMON *, NvU32);
68     NV_STATUS (*__gpumonStateInitUnlocked__)(POBJGPU, struct OBJGPUMON *);
69     void (*__gpumonInitMissing__)(POBJGPU, struct OBJGPUMON *);
70     NV_STATUS (*__gpumonStatePreInitLocked__)(POBJGPU, struct OBJGPUMON *);
71     NV_STATUS (*__gpumonStatePreInitUnlocked__)(POBJGPU, struct OBJGPUMON *);
72     NV_STATUS (*__gpumonStatePostLoad__)(POBJGPU, struct OBJGPUMON *, NvU32);
73     NV_STATUS (*__gpumonConstructEngine__)(POBJGPU, struct OBJGPUMON *, ENGDESCRIPTOR);
74     NvBool (*__gpumonIsPresent__)(POBJGPU, struct OBJGPUMON *);
75 };
76 
77 #ifndef __NVOC_CLASS_OBJGPUMON_TYPEDEF__
78 #define __NVOC_CLASS_OBJGPUMON_TYPEDEF__
79 typedef struct OBJGPUMON OBJGPUMON;
80 #endif /* __NVOC_CLASS_OBJGPUMON_TYPEDEF__ */
81 
82 #ifndef __nvoc_class_id_OBJGPUMON
83 #define __nvoc_class_id_OBJGPUMON 0x2b424b
84 #endif /* __nvoc_class_id_OBJGPUMON */
85 
86 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJGPUMON;
87 
88 #define __staticCast_OBJGPUMON(pThis) \
89     ((pThis)->__nvoc_pbase_OBJGPUMON)
90 
91 #ifdef __nvoc_objgpumon_h_disabled
92 #define __dynamicCast_OBJGPUMON(pThis) ((OBJGPUMON*)NULL)
93 #else //__nvoc_objgpumon_h_disabled
94 #define __dynamicCast_OBJGPUMON(pThis) \
95     ((OBJGPUMON*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJGPUMON)))
96 #endif //__nvoc_objgpumon_h_disabled
97 
98 #define PDB_PROP_GPUMON_IS_MISSING_BASE_CAST __nvoc_base_OBJENGSTATE.
99 #define PDB_PROP_GPUMON_IS_MISSING_BASE_NAME PDB_PROP_ENGSTATE_IS_MISSING
100 
101 NV_STATUS __nvoc_objCreateDynamic_OBJGPUMON(OBJGPUMON**, Dynamic*, NvU32, va_list);
102 
103 NV_STATUS __nvoc_objCreate_OBJGPUMON(OBJGPUMON**, Dynamic*, NvU32);
104 #define __objCreate_OBJGPUMON(ppNewObj, pParent, createFlags) \
105     __nvoc_objCreate_OBJGPUMON((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
106 
107 #define gpumonStateLoad(pGpu, pEngstate, arg0) gpumonStateLoad_DISPATCH(pGpu, pEngstate, arg0)
108 #define gpumonStateUnload(pGpu, pEngstate, arg0) gpumonStateUnload_DISPATCH(pGpu, pEngstate, arg0)
109 #define gpumonStateInitLocked(pGpu, pEngstate) gpumonStateInitLocked_DISPATCH(pGpu, pEngstate)
110 #define gpumonStatePreLoad(pGpu, pEngstate, arg0) gpumonStatePreLoad_DISPATCH(pGpu, pEngstate, arg0)
111 #define gpumonStatePostUnload(pGpu, pEngstate, arg0) gpumonStatePostUnload_DISPATCH(pGpu, pEngstate, arg0)
112 #define gpumonStateDestroy(pGpu, pEngstate) gpumonStateDestroy_DISPATCH(pGpu, pEngstate)
113 #define gpumonStatePreUnload(pGpu, pEngstate, arg0) gpumonStatePreUnload_DISPATCH(pGpu, pEngstate, arg0)
114 #define gpumonStateInitUnlocked(pGpu, pEngstate) gpumonStateInitUnlocked_DISPATCH(pGpu, pEngstate)
115 #define gpumonInitMissing(pGpu, pEngstate) gpumonInitMissing_DISPATCH(pGpu, pEngstate)
116 #define gpumonStatePreInitLocked(pGpu, pEngstate) gpumonStatePreInitLocked_DISPATCH(pGpu, pEngstate)
117 #define gpumonStatePreInitUnlocked(pGpu, pEngstate) gpumonStatePreInitUnlocked_DISPATCH(pGpu, pEngstate)
118 #define gpumonStatePostLoad(pGpu, pEngstate, arg0) gpumonStatePostLoad_DISPATCH(pGpu, pEngstate, arg0)
119 #define gpumonConstructEngine(pGpu, pEngstate, arg0) gpumonConstructEngine_DISPATCH(pGpu, pEngstate, arg0)
120 #define gpumonIsPresent(pGpu, pEngstate) gpumonIsPresent_DISPATCH(pGpu, pEngstate)
121 void gpumonGetContextProcessInfo_GM107(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NvU32 arg0, NvU32 *arg1, NvU32 *arg2, const char **arg3);
122 
123 
124 #ifdef __nvoc_objgpumon_h_disabled
125 static inline void gpumonGetContextProcessInfo(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NvU32 arg0, NvU32 *arg1, NvU32 *arg2, const char **arg3) {
126     NV_ASSERT_FAILED_PRECOMP("OBJGPUMON was disabled!");
127 }
128 #else //__nvoc_objgpumon_h_disabled
129 #define gpumonGetContextProcessInfo(pGpu, pGpumon, arg0, arg1, arg2, arg3) gpumonGetContextProcessInfo_GM107(pGpu, pGpumon, arg0, arg1, arg2, arg3)
130 #endif //__nvoc_objgpumon_h_disabled
131 
132 #define gpumonGetContextProcessInfo_HAL(pGpu, pGpumon, arg0, arg1, arg2, arg3) gpumonGetContextProcessInfo(pGpu, pGpumon, arg0, arg1, arg2, arg3)
133 
134 static inline NV_STATUS gpumonStateLoad_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) {
135     return pEngstate->__gpumonStateLoad__(pGpu, pEngstate, arg0);
136 }
137 
138 static inline NV_STATUS gpumonStateUnload_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) {
139     return pEngstate->__gpumonStateUnload__(pGpu, pEngstate, arg0);
140 }
141 
142 static inline NV_STATUS gpumonStateInitLocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) {
143     return pEngstate->__gpumonStateInitLocked__(pGpu, pEngstate);
144 }
145 
146 static inline NV_STATUS gpumonStatePreLoad_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) {
147     return pEngstate->__gpumonStatePreLoad__(pGpu, pEngstate, arg0);
148 }
149 
150 static inline NV_STATUS gpumonStatePostUnload_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) {
151     return pEngstate->__gpumonStatePostUnload__(pGpu, pEngstate, arg0);
152 }
153 
154 static inline void gpumonStateDestroy_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) {
155     pEngstate->__gpumonStateDestroy__(pGpu, pEngstate);
156 }
157 
158 static inline NV_STATUS gpumonStatePreUnload_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) {
159     return pEngstate->__gpumonStatePreUnload__(pGpu, pEngstate, arg0);
160 }
161 
162 static inline NV_STATUS gpumonStateInitUnlocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) {
163     return pEngstate->__gpumonStateInitUnlocked__(pGpu, pEngstate);
164 }
165 
166 static inline void gpumonInitMissing_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) {
167     pEngstate->__gpumonInitMissing__(pGpu, pEngstate);
168 }
169 
170 static inline NV_STATUS gpumonStatePreInitLocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) {
171     return pEngstate->__gpumonStatePreInitLocked__(pGpu, pEngstate);
172 }
173 
174 static inline NV_STATUS gpumonStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) {
175     return pEngstate->__gpumonStatePreInitUnlocked__(pGpu, pEngstate);
176 }
177 
178 static inline NV_STATUS gpumonStatePostLoad_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, NvU32 arg0) {
179     return pEngstate->__gpumonStatePostLoad__(pGpu, pEngstate, arg0);
180 }
181 
182 static inline NV_STATUS gpumonConstructEngine_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate, ENGDESCRIPTOR arg0) {
183     return pEngstate->__gpumonConstructEngine__(pGpu, pEngstate, arg0);
184 }
185 
186 static inline NvBool gpumonIsPresent_DISPATCH(POBJGPU pGpu, struct OBJGPUMON *pEngstate) {
187     return pEngstate->__gpumonIsPresent__(pGpu, pEngstate);
188 }
189 
190 NV_STATUS gpumonGetPerfmonUtilSamples_IMPL(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NV2080_CTRL_PERF_GPUMON_PERFMON_UTIL_SAMPLE *arg0, NvU32 arg1, NvU32 *arg2);
191 
192 #ifdef __nvoc_objgpumon_h_disabled
193 static inline NV_STATUS gpumonGetPerfmonUtilSamples(struct OBJGPU *pGpu, struct OBJGPUMON *pGpumon, NV2080_CTRL_PERF_GPUMON_PERFMON_UTIL_SAMPLE *arg0, NvU32 arg1, NvU32 *arg2) {
194     NV_ASSERT_FAILED_PRECOMP("OBJGPUMON was disabled!");
195     return NV_ERR_NOT_SUPPORTED;
196 }
197 #else //__nvoc_objgpumon_h_disabled
198 #define gpumonGetPerfmonUtilSamples(pGpu, pGpumon, arg0, arg1, arg2) gpumonGetPerfmonUtilSamples_IMPL(pGpu, pGpumon, arg0, arg1, arg2)
199 #endif //__nvoc_objgpumon_h_disabled
200 
201 #undef PRIVATE_FIELD
202 
203 
204 #endif //_OBJGPUMON_H_
205 
206 #ifdef __cplusplus
207 } // extern "C"
208 #endif
209 #endif // _G_OBJGPUMON_NVOC_H_
210