1 #ifndef _G_VIRT_MEM_MGR_NVOC_H_ 2 #define _G_VIRT_MEM_MGR_NVOC_H_ 3 #include "nvoc/runtime.h" 4 5 #ifdef __cplusplus 6 extern "C" { 7 #endif 8 9 /* 10 * SPDX-FileCopyrightText: Copyright (c) 2013-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_virt_mem_mgr_nvoc.h" 33 34 #ifndef VIRT_MEM_MGR_H 35 #define VIRT_MEM_MGR_H 36 37 /**************** Resource Manager Defines and Structures ******************\ 38 * Defines and structures used for Virtual Memory Management Object. * 39 \***************************************************************************/ 40 41 #include "mem_mgr/vaspace.h" 42 43 typedef struct OBJVMM *POBJVMM; 44 45 #ifndef __NVOC_CLASS_OBJVMM_TYPEDEF__ 46 #define __NVOC_CLASS_OBJVMM_TYPEDEF__ 47 typedef struct OBJVMM OBJVMM; 48 #endif /* __NVOC_CLASS_OBJVMM_TYPEDEF__ */ 49 50 #ifndef __nvoc_class_id_OBJVMM 51 #define __nvoc_class_id_OBJVMM 0xa030ab 52 #endif /* __nvoc_class_id_OBJVMM */ 53 54 55 56 #ifdef NVOC_VIRT_MEM_MGR_H_PRIVATE_ACCESS_ALLOWED 57 #define PRIVATE_FIELD(x) x 58 #else 59 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x) 60 #endif 61 struct OBJVMM { 62 const struct NVOC_RTTI *__nvoc_rtti; 63 struct Object __nvoc_base_Object; 64 struct Object *__nvoc_pbase_Object; 65 struct OBJVMM *__nvoc_pbase_OBJVMM; 66 }; 67 68 #ifndef __NVOC_CLASS_OBJVMM_TYPEDEF__ 69 #define __NVOC_CLASS_OBJVMM_TYPEDEF__ 70 typedef struct OBJVMM OBJVMM; 71 #endif /* __NVOC_CLASS_OBJVMM_TYPEDEF__ */ 72 73 #ifndef __nvoc_class_id_OBJVMM 74 #define __nvoc_class_id_OBJVMM 0xa030ab 75 #endif /* __nvoc_class_id_OBJVMM */ 76 77 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJVMM; 78 79 #define __staticCast_OBJVMM(pThis) \ 80 ((pThis)->__nvoc_pbase_OBJVMM) 81 82 #ifdef __nvoc_virt_mem_mgr_h_disabled 83 #define __dynamicCast_OBJVMM(pThis) ((OBJVMM*)NULL) 84 #else //__nvoc_virt_mem_mgr_h_disabled 85 #define __dynamicCast_OBJVMM(pThis) \ 86 ((OBJVMM*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJVMM))) 87 #endif //__nvoc_virt_mem_mgr_h_disabled 88 89 90 NV_STATUS __nvoc_objCreateDynamic_OBJVMM(OBJVMM**, Dynamic*, NvU32, va_list); 91 92 NV_STATUS __nvoc_objCreate_OBJVMM(OBJVMM**, Dynamic*, NvU32); 93 #define __objCreate_OBJVMM(ppNewObj, pParent, createFlags) \ 94 __nvoc_objCreate_OBJVMM((ppNewObj), staticCast((pParent), Dynamic), (createFlags)) 95 96 NV_STATUS vmmCreateVaspace_IMPL(struct OBJVMM *pVmm, NvU32 _class, NvU32 vaspaceId, NvU32 gpuMask, NvU64 vaStart, NvU64 vaLimit, NvU64 vaInternalStart, NvU64 vaInternalEnd, struct OBJVASPACE *pPteSpaceMap, NvU32 flags, struct OBJVASPACE **ppVAS); 97 98 #ifdef __nvoc_virt_mem_mgr_h_disabled 99 static inline NV_STATUS vmmCreateVaspace(struct OBJVMM *pVmm, NvU32 _class, NvU32 vaspaceId, NvU32 gpuMask, NvU64 vaStart, NvU64 vaLimit, NvU64 vaInternalStart, NvU64 vaInternalEnd, struct OBJVASPACE *pPteSpaceMap, NvU32 flags, struct OBJVASPACE **ppVAS) { 100 NV_ASSERT_FAILED_PRECOMP("OBJVMM was disabled!"); 101 return NV_ERR_NOT_SUPPORTED; 102 } 103 #else //__nvoc_virt_mem_mgr_h_disabled 104 #define vmmCreateVaspace(pVmm, _class, vaspaceId, gpuMask, vaStart, vaLimit, vaInternalStart, vaInternalEnd, pPteSpaceMap, flags, ppVAS) vmmCreateVaspace_IMPL(pVmm, _class, vaspaceId, gpuMask, vaStart, vaLimit, vaInternalStart, vaInternalEnd, pPteSpaceMap, flags, ppVAS) 105 #endif //__nvoc_virt_mem_mgr_h_disabled 106 107 void vmmDestroyVaspace_IMPL(struct OBJVMM *pVmm, struct OBJVASPACE *pVAS); 108 109 #ifdef __nvoc_virt_mem_mgr_h_disabled 110 static inline void vmmDestroyVaspace(struct OBJVMM *pVmm, struct OBJVASPACE *pVAS) { 111 NV_ASSERT_FAILED_PRECOMP("OBJVMM was disabled!"); 112 } 113 #else //__nvoc_virt_mem_mgr_h_disabled 114 #define vmmDestroyVaspace(pVmm, pVAS) vmmDestroyVaspace_IMPL(pVmm, pVAS) 115 #endif //__nvoc_virt_mem_mgr_h_disabled 116 117 NV_STATUS vmmGetVaspaceFromId_IMPL(struct OBJVMM *pVmm, NvU32 vaspaceId, NvU32 classId, struct OBJVASPACE **ppVAS); 118 119 #ifdef __nvoc_virt_mem_mgr_h_disabled 120 static inline NV_STATUS vmmGetVaspaceFromId(struct OBJVMM *pVmm, NvU32 vaspaceId, NvU32 classId, struct OBJVASPACE **ppVAS) { 121 NV_ASSERT_FAILED_PRECOMP("OBJVMM was disabled!"); 122 return NV_ERR_NOT_SUPPORTED; 123 } 124 #else //__nvoc_virt_mem_mgr_h_disabled 125 #define vmmGetVaspaceFromId(pVmm, vaspaceId, classId, ppVAS) vmmGetVaspaceFromId_IMPL(pVmm, vaspaceId, classId, ppVAS) 126 #endif //__nvoc_virt_mem_mgr_h_disabled 127 128 #undef PRIVATE_FIELD 129 130 131 #endif // VIRT_MEM_MGR_H 132 133 #ifdef __cplusplus 134 } // extern "C" 135 #endif 136 137 #endif // _G_VIRT_MEM_MGR_NVOC_H_ 138