Files
open-gpu-kernel-modules/src/nvidia/inc/kernel/rmapi/exports.h
Andy Ritger 758b4ee818 525.53
2022-11-10 08:39:33 -08:00

128 lines
7.6 KiB
C

/*
* SPDX-FileCopyrightText: Copyright (c) 1993-2019 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
#ifndef _EXPORTS_H
#define _EXPORTS_H
#include "core/core.h"
//
// !! Deprecated. Do not use these exported API functions. Instead use the
// User or Kernel ones below depending on if they are called from Kernel or
// User space.
//
// A User export is to be used for code paths originating from user space and
// MUST pass only user client handles and user-mode pointers. On most OSes, RM
// will sanity check the use of handles and pointers against incorrect or
// malicious use.
//
// A Kernel export is to be used for code paths originating from kernel space
// and MUST pass only kernel client handles and kernel-mode pointers. By default
// RM will skip any validation checks when a Kernel export is called. The onus
// is on the caller that only valid handles and pointers are passed.
// TBD. RM may enable the checks on debug builds or when a regkey is set.
//
// For more information refer to the Kernel_Client_Data_Validation wiki page
//
// WARNING!! RM has validation checks for handles and pointers. An incorrect use
// of export can cause RM failing the API.
//
void Nv01AllocMemory (NVOS02_PARAMETERS*);
void Nv01AllocObject (NVOS05_PARAMETERS*);
void Nv04Alloc (NVOS21_PARAMETERS*);
void Nv04AllocWithAccess (NVOS64_PARAMETERS*);
void Nv01Free (NVOS00_PARAMETERS*);
void Nv04Control (NVOS54_PARAMETERS*);
void Nv04VidHeapControl (NVOS32_PARAMETERS*);
void Nv04IdleChannels (NVOS30_PARAMETERS*);
void Nv04MapMemory (NVOS33_PARAMETERS*);
void Nv04UnmapMemory (NVOS34_PARAMETERS*);
void Nv04I2CAccess (NVOS_I2C_ACCESS_PARAMS*);
void Nv04AllocContextDma (NVOS39_PARAMETERS*);
void Nv04BindContextDma (NVOS49_PARAMETERS*);
void Nv04MapMemoryDma (NVOS46_PARAMETERS*);
void Nv04UnmapMemoryDma (NVOS47_PARAMETERS*);
void Nv04DupObject (NVOS55_PARAMETERS*);
void Nv04Share (NVOS57_PARAMETERS*);
void Nv04AddVblankCallback (NVOS61_PARAMETERS*);
// exported "User" API functions
void Nv01AllocMemoryUser (NVOS02_PARAMETERS*);
void Nv01AllocObjectUser (NVOS05_PARAMETERS*);
void Nv04AllocUser (NVOS21_PARAMETERS*);
void Nv04AllocWithAccessUser (NVOS64_PARAMETERS*);
void Nv01FreeUser (NVOS00_PARAMETERS*);
void Nv04ControlUser (NVOS54_PARAMETERS*);
void Nv04VidHeapControlUser (NVOS32_PARAMETERS*);
void Nv04IdleChannelsUser (NVOS30_PARAMETERS*);
void Nv04MapMemoryUser (NVOS33_PARAMETERS*);
void Nv04UnmapMemoryUser (NVOS34_PARAMETERS*);
void Nv04I2CAccessUser (NVOS_I2C_ACCESS_PARAMS*);
void Nv04AllocContextDmaUser (NVOS39_PARAMETERS*);
void Nv04BindContextDmaUser (NVOS49_PARAMETERS*);
void Nv04MapMemoryDmaUser (NVOS46_PARAMETERS*);
void Nv04UnmapMemoryDmaUser (NVOS47_PARAMETERS*);
void Nv04DupObjectUser (NVOS55_PARAMETERS*);
void Nv04ShareUser (NVOS57_PARAMETERS*);
void Nv04AddVblankCallbackUser (NVOS61_PARAMETERS*);
// exported "Kernel" API functions
void Nv01AllocMemoryKernel (NVOS02_PARAMETERS*);
void Nv01AllocObjectKernel (NVOS05_PARAMETERS*);
void Nv04AllocKernel (NVOS21_PARAMETERS*);
void Nv04AllocWithAccessKernel (NVOS64_PARAMETERS*);
void Nv01FreeKernel (NVOS00_PARAMETERS*);
void Nv04ControlKernel (NVOS54_PARAMETERS*);
void Nv04VidHeapControlKernel (NVOS32_PARAMETERS*);
void Nv04IdleChannelsKernel (NVOS30_PARAMETERS*);
void Nv04MapMemoryKernel (NVOS33_PARAMETERS*);
void Nv04UnmapMemoryKernel (NVOS34_PARAMETERS*);
void Nv04I2CAccessKernel (NVOS_I2C_ACCESS_PARAMS*);
void Nv04AllocContextDmaKernel (NVOS39_PARAMETERS*);
void Nv04BindContextDmaKernel (NVOS49_PARAMETERS*);
void Nv04MapMemoryDmaKernel (NVOS46_PARAMETERS*);
void Nv04UnmapMemoryDmaKernel (NVOS47_PARAMETERS*);
void Nv04DupObjectKernel (NVOS55_PARAMETERS*);
void Nv04ShareKernel (NVOS57_PARAMETERS*);
void Nv04AddVblankCallbackKernel (NVOS61_PARAMETERS*);
// exported "WithSecInfo" API functions
void Nv01AllocMemoryWithSecInfo (NVOS02_PARAMETERS*, API_SECURITY_INFO);
void Nv01AllocObjectWithSecInfo (NVOS05_PARAMETERS*, API_SECURITY_INFO);
void Nv04AllocWithSecInfo (NVOS21_PARAMETERS*, API_SECURITY_INFO);
void Nv04AllocWithAccessSecInfo (NVOS64_PARAMETERS*, API_SECURITY_INFO);
void Nv01FreeWithSecInfo (NVOS00_PARAMETERS*, API_SECURITY_INFO);
void Nv04ControlWithSecInfo (NVOS54_PARAMETERS*, API_SECURITY_INFO);
void Nv04VidHeapControlWithSecInfo (NVOS32_PARAMETERS*, API_SECURITY_INFO);
void Nv04IdleChannelsWithSecInfo (NVOS30_PARAMETERS*, API_SECURITY_INFO);
void Nv04MapMemoryWithSecInfo (NVOS33_PARAMETERS*, API_SECURITY_INFO);
void Nv04UnmapMemoryWithSecInfo (NVOS34_PARAMETERS*, API_SECURITY_INFO);
void Nv04I2CAccessWithSecInfo (NVOS_I2C_ACCESS_PARAMS*, API_SECURITY_INFO);
void Nv04AllocContextDmaWithSecInfo (NVOS39_PARAMETERS*, API_SECURITY_INFO);
void Nv04BindContextDmaWithSecInfo (NVOS49_PARAMETERS*, API_SECURITY_INFO);
void Nv04MapMemoryDmaWithSecInfo (NVOS46_PARAMETERS*, API_SECURITY_INFO);
void Nv04UnmapMemoryDmaWithSecInfo (NVOS47_PARAMETERS*, API_SECURITY_INFO);
void Nv04DupObjectWithSecInfo (NVOS55_PARAMETERS*, API_SECURITY_INFO);
void Nv04ShareWithSecInfo (NVOS57_PARAMETERS*, API_SECURITY_INFO);
#endif // _EXPORTS_H