snapshot: sagernet/gvisor v0.0.0-20250811.0-sing-box-mod.1

Содержимое пина, зафиксированного в go.mod sing-box-lx, одним коммитом
без истории. Полная история SagerNet/gvisor — 1.45 ГБ и клонируется в
каждой CI-джобе; наша дельта — одна вставка в одну функцию, история для
неё не нужна.

Module path github.com/sagernet/gvisor сохранён намеренно: на него
опирается replace-директива суперпроекта.

Патч поверх — отдельным коммитом, чтобы дельта читалась одним git show
и переносилась на новый пин копированием.

SPECS/TASKS/048-GVISOR_HANDSHAKE_NIL_CRASH
This commit is contained in:
Leadaxe 2026-08-04 15:50:08 +03:00
commit 2c4ae3b0a4
712 changed files with 185689 additions and 0 deletions

805
pkg/abi/nvgpu/frontend.go Normal file
View file

@ -0,0 +1,805 @@
// Copyright 2023 The gVisor Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package nvgpu
import (
"github.com/sagernet/gvisor/pkg/marshal"
)
// NV_IOCTL_MAGIC is the "canonical" IOC_TYPE for frontend ioctls.
// The driver ignores IOC_TYPE, allowing any value to be passed.
const NV_IOCTL_MAGIC = uint32('F')
// Frontend ioctl numbers.
// Note that these are only the IOC_NR part of the ioctl command.
const (
// From kernel-open/common/inc/nv-ioctl-numbers.h:
NV_IOCTL_BASE = 200
NV_ESC_CARD_INFO = NV_IOCTL_BASE + 0
NV_ESC_REGISTER_FD = NV_IOCTL_BASE + 1
NV_ESC_ALLOC_OS_EVENT = NV_IOCTL_BASE + 6
NV_ESC_FREE_OS_EVENT = NV_IOCTL_BASE + 7
NV_ESC_CHECK_VERSION_STR = NV_IOCTL_BASE + 10
NV_ESC_ATTACH_GPUS_TO_FD = NV_IOCTL_BASE + 12
NV_ESC_SYS_PARAMS = NV_IOCTL_BASE + 14
NV_ESC_WAIT_OPEN_COMPLETE = NV_IOCTL_BASE + 18
// From kernel-open/common/inc/nv-ioctl-numa.h:
NV_ESC_NUMA_INFO = NV_IOCTL_BASE + 15
// From src/nvidia/arch/nvalloc/unix/include/nv_escape.h:
NV_ESC_RM_ALLOC_MEMORY = 0x27
NV_ESC_RM_FREE = 0x29
NV_ESC_RM_CONTROL = 0x2a
NV_ESC_RM_ALLOC = 0x2b
NV_ESC_RM_DUP_OBJECT = 0x34
NV_ESC_RM_SHARE = 0x35
NV_ESC_RM_IDLE_CHANNELS = 0x41
NV_ESC_RM_VID_HEAP_CONTROL = 0x4a
NV_ESC_RM_MAP_MEMORY = 0x4e
NV_ESC_RM_UNMAP_MEMORY = 0x4f
NV_ESC_RM_ALLOC_CONTEXT_DMA2 = 0x54
NV_ESC_RM_MAP_MEMORY_DMA = 0x57
NV_ESC_RM_UNMAP_MEMORY_DMA = 0x58
NV_ESC_RM_UPDATE_DEVICE_MAPPING_INFO = 0x5e
)
// Frontend ioctl parameter structs, from src/common/sdk/nvidia/inc/nvos.h or
// kernel-open/common/inc/nv-ioctl.h.
// IoctlRegisterFD is the parameter type for NV_ESC_REGISTER_FD.
//
// +marshal
type IoctlRegisterFD struct {
CtlFD int32
}
// IoctlAllocOSEvent is the parameter type for NV_ESC_ALLOC_OS_EVENT.
//
// +marshal
type IoctlAllocOSEvent struct {
HClient Handle
HDevice Handle
FD uint32
Status uint32
}
// GetFrontendFD implements HasFrontendFD.GetFrontendFD.
func (p *IoctlAllocOSEvent) GetFrontendFD() int32 {
return int32(p.FD)
}
// SetFrontendFD implements HasFrontendFD.SetFrontendFD.
func (p *IoctlAllocOSEvent) SetFrontendFD(fd int32) {
p.FD = uint32(fd)
}
// GetStatus implements HasStatus.GetStatus.
func (p *IoctlAllocOSEvent) GetStatus() uint32 {
return p.Status
}
// SetStatus implements HasStatus.SetStatus.
func (p *IoctlAllocOSEvent) SetStatus(status uint32) {
p.Status = status
}
// IoctlFreeOSEvent is the parameter type for NV_ESC_FREE_OS_EVENT.
//
// +marshal
type IoctlFreeOSEvent struct {
HClient Handle
HDevice Handle
FD uint32
Status uint32
}
// GetFrontendFD implements HasFrontendFD.GetFrontendFD.
func (p *IoctlFreeOSEvent) GetFrontendFD() int32 {
return int32(p.FD)
}
// SetFrontendFD implements HasFrontendFD.SetFrontendFD.
func (p *IoctlFreeOSEvent) SetFrontendFD(fd int32) {
p.FD = uint32(fd)
}
// GetStatus implements HasStatus.GetStatus.
func (p *IoctlFreeOSEvent) GetStatus() uint32 {
return p.Status
}
// SetStatus implements HasStatus.SetStatus.
func (p *IoctlFreeOSEvent) SetStatus(status uint32) {
p.Status = status
}
// RMAPIVersion is the parameter type for NV_ESC_CHECK_VERSION_STR.
//
// +marshal
type RMAPIVersion struct {
Cmd uint32
Reply uint32
VersionString [64]byte
}
// IoctlSysParams is the parameter type for NV_ESC_SYS_PARAMS.
//
// +marshal
type IoctlSysParams struct {
MemblockSize uint64
}
// IoctlWaitOpenComplete is the parameter type for NV_ESC_WAIT_OPEN_COMPLETE.
//
// +marshal
type IoctlWaitOpenComplete struct {
Rc int32
AdapterStatus uint32
}
// GetStatus implements HasStatus.GetStatus.
func (p *IoctlWaitOpenComplete) GetStatus() uint32 {
return p.AdapterStatus
}
// SetStatus implements HasStatus.SetStatus.
func (p *IoctlWaitOpenComplete) SetStatus(status uint32) {
p.AdapterStatus = status
}
// IoctlNVOS02ParametersWithFD is the parameter type for NV_ESC_RM_ALLOC_MEMORY.
//
// +marshal
type IoctlNVOS02ParametersWithFD struct {
Params NVOS02_PARAMETERS
FD int32
Pad0 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (p *IoctlNVOS02ParametersWithFD) GetStatus() uint32 {
return p.Params.Status
}
// SetStatus implements HasStatus.SetStatus.
func (p *IoctlNVOS02ParametersWithFD) SetStatus(status uint32) {
p.Params.Status = status
}
// +marshal
type NVOS02_PARAMETERS struct {
HRoot Handle
HObjectParent Handle
HObjectNew Handle
HClass ClassID
Flags uint32
Pad0 [4]byte
PMemory P64 // address of application mapping, without indirection
Limit uint64
Status uint32
Pad1 [4]byte
}
// Bitfields in NVOS02_PARAMETERS.Flags:
const (
NVOS02_FLAGS_ALLOC_SHIFT = 16
NVOS02_FLAGS_ALLOC_MASK = 0x3
NVOS02_FLAGS_ALLOC_NONE = 0x00000001
NVOS02_FLAGS_MAPPING_SHIFT = 30
NVOS02_FLAGS_MAPPING_MASK = 0x3
NVOS02_FLAGS_MAPPING_NO_MAP = 0x00000001
)
// NVOS00_PARAMETERS is the parameter type for NV_ESC_RM_FREE.
//
// +marshal
type NVOS00_PARAMETERS struct {
HRoot Handle
HObjectParent Handle
HObjectOld Handle
Status uint32
}
// GetStatus implements HasStatus.GetStatus.
func (p *NVOS00_PARAMETERS) GetStatus() uint32 {
return p.Status
}
// SetStatus implements HasStatus.SetStatus.
func (p *NVOS00_PARAMETERS) SetStatus(status uint32) {
p.Status = status
}
// RmAllocParamType should be implemented by all possible parameter types for
// NV_ESC_RM_ALLOC.
type RmAllocParamType interface {
GetHClass() ClassID
GetPAllocParms() P64
GetPRightsRequested() P64
SetPAllocParms(p P64)
SetPRightsRequested(p P64)
FromOS64(other NVOS64_PARAMETERS)
ToOS64() NVOS64_PARAMETERS
GetPointer() uintptr
HasStatus
marshal.Marshallable
}
// GetRmAllocParamObj returns the appropriate implementation of
// RmAllocParamType based on passed parameters.
func GetRmAllocParamObj(isNVOS64 bool) RmAllocParamType {
if isNVOS64 {
return &NVOS64_PARAMETERS{}
}
return &NVOS21_PARAMETERS{}
}
// NVOS21_PARAMETERS is one possible parameter type for NV_ESC_RM_ALLOC.
//
// +marshal
type NVOS21_PARAMETERS struct {
HRoot Handle
HObjectParent Handle
HObjectNew Handle
HClass ClassID
PAllocParms P64
ParamsSize uint32
Status uint32
}
// GetHClass implements RmAllocParamType.GetHClass.
func (n *NVOS21_PARAMETERS) GetHClass() ClassID {
return n.HClass
}
// GetPAllocParms implements RmAllocParamType.GetPAllocParms.
func (n *NVOS21_PARAMETERS) GetPAllocParms() P64 {
return n.PAllocParms
}
// GetPRightsRequested implements RmAllocParamType.GetPRightsRequested.
func (n *NVOS21_PARAMETERS) GetPRightsRequested() P64 {
return 0
}
// SetPAllocParms implements RmAllocParamType.SetPAllocParms.
func (n *NVOS21_PARAMETERS) SetPAllocParms(p P64) { n.PAllocParms = p }
// SetPRightsRequested implements RmAllocParamType.SetPRightsRequested.
func (n *NVOS21_PARAMETERS) SetPRightsRequested(p P64) {
panic("impossible")
}
// FromOS64 implements RmAllocParamType.FromOS64.
func (n *NVOS21_PARAMETERS) FromOS64(other NVOS64_PARAMETERS) {
n.HRoot = other.HRoot
n.HObjectParent = other.HObjectParent
n.HObjectNew = other.HObjectNew
n.HClass = other.HClass
n.PAllocParms = other.PAllocParms
n.ParamsSize = other.ParamsSize
n.Status = other.Status
}
// ToOS64 implements RmAllocParamType.ToOS64.
func (n *NVOS21_PARAMETERS) ToOS64() NVOS64_PARAMETERS {
return NVOS64_PARAMETERS{
HRoot: n.HRoot,
HObjectParent: n.HObjectParent,
HObjectNew: n.HObjectNew,
HClass: n.HClass,
PAllocParms: n.PAllocParms,
ParamsSize: n.ParamsSize,
Status: n.Status,
}
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS21_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS21_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS55_PARAMETERS is the parameter type for NV_ESC_RM_DUP_OBJECT.
//
// +marshal
type NVOS55_PARAMETERS struct {
HClient Handle
HParent Handle
HObject Handle
HClientSrc Handle
HObjectSrc Handle
Flags uint32
Status uint32
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS55_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS55_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS57_PARAMETERS is the parameter type for NV_ESC_RM_SHARE.
//
// +marshal
type NVOS57_PARAMETERS struct {
HClient Handle
HObject Handle
SharePolicy RS_SHARE_POLICY
Status uint32
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS57_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS57_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS30_PARAMETERS is the parameter type for NV_ESC_RM_IDLE_CHANNELS.
//
// +marshal
type NVOS30_PARAMETERS struct {
Client Handle
Device Handle
Channel Handle
NumChannels uint32
Clients P64
Devices P64
Channels P64
Flags uint32
Timeout uint32
Status uint32
Pad0 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS30_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS30_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS32_PARAMETERS is the parameter type for NV_ESC_RM_VID_HEAP_CONTROL.
//
// +marshal
type NVOS32_PARAMETERS struct {
HRoot Handle
HObjectParent Handle
Function uint32
HVASpace Handle
IVCHeapNumber int16
Pad [2]byte
Status uint32
Total uint64
Free uint64
Data [144]byte // union
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS32_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS32_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// Possible values for NVOS32Parameters.Function:
const (
NVOS32_FUNCTION_ALLOC_SIZE = 2
)
// NVOS32AllocSize is the type of NVOS32Parameters.Data for
// NVOS32_FUNCTION_ALLOC_SIZE.
type NVOS32AllocSize struct {
Owner uint32
HMemory Handle
Type uint32
Flags uint32
Attr uint32
Format uint32
ComprCovg uint32
ZcullCovg uint32
PartitionStride uint32
Width uint32
Height uint32
Pad0 [4]byte
Size uint64
Alignment uint64
Offset uint64
Limit uint64
Address P64
RangeBegin uint64
RangeEnd uint64
Attr2 uint32
CtagOffset uint32
}
// Flags in NVOS32AllocSize.Flags:
const (
NVOS32_ALLOC_FLAGS_VIRTUAL = 0x00080000
)
// Bitfields in NVOS32AllocSize.Attr:
const (
NVOS32_ATTR_LOCATION_SHIFT = 25
NVOS32_ATTR_LOCATION_MASK = 0x3
NVOS32_ATTR_LOCATION_VIDMEM = 0
)
// Bitfields in NVOS32AllocSize.Attr2:
const (
NVOS32_ATTR2_USE_EGM_SHIFT = 24
NVOS32_ATTR2_USE_EGM_MASK = 0x1
NVOS32_ATTR2_USE_EGM_FALSE = 0
NVOS32_ATTR2_USE_EGM_TRUE = 1
)
// IoctlNVOS33ParametersWithFD is the parameter type for NV_ESC_RM_MAP_MEMORY,
// from src/nvidia/arch/nvalloc/unix/include/nv-unix-nvos-params-wrappers.h.
//
// +marshal
type IoctlNVOS33ParametersWithFD struct {
Params NVOS33_PARAMETERS
FD int32
Pad0 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (p *IoctlNVOS33ParametersWithFD) GetStatus() uint32 {
return p.Params.Status
}
// SetStatus implements HasStatus.SetStatus.
func (p *IoctlNVOS33ParametersWithFD) SetStatus(status uint32) {
p.Params.Status = status
}
// +marshal
type NVOS33_PARAMETERS struct {
HClient Handle
HDevice Handle
HMemory Handle
Pad0 [4]byte
Offset uint64
Length uint64
PLinearAddress P64 // address of application mapping, without indirection
Status uint32
Flags uint32
}
// Bitfields in NVOS33_PARAMETERS.Flags:
const (
NVOS33_FLAGS_CACHING_TYPE_SHIFT = 23
NVOS33_FLAGS_CACHING_TYPE_MASK = 0x7
NVOS33_FLAGS_CACHING_TYPE_CACHED = 0
NVOS33_FLAGS_CACHING_TYPE_UNCACHED = 1
NVOS33_FLAGS_CACHING_TYPE_WRITECOMBINED = 2
NVOS33_FLAGS_CACHING_TYPE_WRITEBACK = 5
NVOS33_FLAGS_CACHING_TYPE_DEFAULT = 6
NVOS33_FLAGS_CACHING_TYPE_UNCACHED_WEAK = 7
)
// NVOS34_PARAMETERS is the parameter type for NV_ESC_RM_UNMAP_MEMORY.
//
// +marshal
type NVOS34_PARAMETERS struct {
HClient Handle
HDevice Handle
HMemory Handle
Pad0 [4]byte
PLinearAddress P64 // address of application mapping, without indirection
Status uint32
Flags uint32
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS34_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS34_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS39_PARAMETERS is the parameter type for NV_ESC_RM_ALLOC_CONTEXT_DMA2.
//
// +marshal
type NVOS39_PARAMETERS struct {
HObjectParent Handle
HSubDevice Handle
HObjectNew Handle
HClass ClassID
Flags uint32
Selector uint32
HMemory Handle
Pad0 [4]byte
Offset uint64
Limit uint64
Status uint32
Pad1 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS39_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS39_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS46_PARAMETERS is the parameter type for NV_ESC_RM_MAP_MEMORY_DMA.
//
// +marshal
type NVOS46_PARAMETERS struct {
Client Handle
Device Handle
Dma Handle
Memory Handle
Offset uint64
Length uint64
Flags uint32
Pad0 [4]byte
DmaOffset uint64
Status uint32
Pad1 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS46_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS46_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS46_PARAMETERS_V580 is the updated version of NVOS46_PARAMETERS since
// 580.65.06.
//
// +marshal
type NVOS46_PARAMETERS_V580 struct {
Client Handle
Device Handle
Dma Handle
Memory Handle
Offset uint64
Length uint64
Flags uint32
Flags2 uint32
KindOverride uint32
Pad0 [4]byte
DmaOffset uint64
Status uint32
Pad1 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS46_PARAMETERS_V580) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS46_PARAMETERS_V580) SetStatus(status uint32) {
n.Status = status
}
// NVOS47_PARAMETERS is the parameter type for NV_ESC_RM_UNMAP_MEMORY_DMA.
//
// +marshal
type NVOS47_PARAMETERS struct {
Client Handle
Device Handle
Dma Handle
Memory Handle
Flags uint32
Pad0 [4]byte
DmaOffset uint64
Status uint32
Pad1 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS47_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS47_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS47_PARAMETERS_V550 is the updated version of NVOS47_PARAMETERS since
// 550.54.04.
//
// +marshal
type NVOS47_PARAMETERS_V550 struct {
Client Handle
Device Handle
Dma Handle
Memory Handle
Flags uint32
Pad0 [4]byte
DmaOffset uint64
Size uint64
Status uint32
Pad1 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS47_PARAMETERS_V550) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS47_PARAMETERS_V550) SetStatus(status uint32) {
n.Status = status
}
// NVOS54_PARAMETERS is the parameter type for NV_ESC_RM_CONTROL.
//
// +marshal
type NVOS54_PARAMETERS struct {
HClient Handle
HObject Handle
Cmd uint32
Flags uint32
Params P64
ParamsSize uint32
Status uint32
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS54_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS54_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS56_PARAMETERS is the parameter type for NV_ESC_RM_UPDATE_DEVICE_MAPPING_INFO.
//
// +marshal
type NVOS56_PARAMETERS struct {
HClient Handle
HDevice Handle
HMemory Handle
Pad0 [4]byte
POldCPUAddress P64
PNewCPUAddress P64
Status uint32
Pad1 [4]byte
}
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS56_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS56_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// NVOS64_PARAMETERS is one possible parameter type for NV_ESC_RM_ALLOC.
//
// +marshal
// +stateify savable
type NVOS64_PARAMETERS struct {
HRoot Handle
HObjectParent Handle
HObjectNew Handle
HClass ClassID
PAllocParms P64
PRightsRequested P64
ParamsSize uint32
Flags uint32
Status uint32
_ uint32
}
// GetHClass implements RmAllocParamType.GetHClass.
func (n *NVOS64_PARAMETERS) GetHClass() ClassID {
return n.HClass
}
// GetPAllocParms implements RmAllocParamType.GetPAllocParms.
func (n *NVOS64_PARAMETERS) GetPAllocParms() P64 {
return n.PAllocParms
}
// GetPRightsRequested implements RmAllocParamType.GetPRightsRequested.
func (n *NVOS64_PARAMETERS) GetPRightsRequested() P64 {
return n.PRightsRequested
}
// SetPAllocParms implements RmAllocParamType.SetPAllocParms.
func (n *NVOS64_PARAMETERS) SetPAllocParms(p P64) { n.PAllocParms = p }
// SetPRightsRequested implements RmAllocParamType.SetPRightsRequested.
func (n *NVOS64_PARAMETERS) SetPRightsRequested(p P64) { n.PRightsRequested = p }
// FromOS64 implements RmAllocParamType.FromOS64.
func (n *NVOS64_PARAMETERS) FromOS64(other NVOS64_PARAMETERS) { *n = other }
// ToOS64 implements RmAllocParamType.ToOS64.
func (n *NVOS64_PARAMETERS) ToOS64() NVOS64_PARAMETERS { return *n }
// GetStatus implements HasStatus.GetStatus.
func (n *NVOS64_PARAMETERS) GetStatus() uint32 {
return n.Status
}
// SetStatus implements HasStatus.SetStatus.
func (n *NVOS64_PARAMETERS) SetStatus(status uint32) {
n.Status = status
}
// HasFrontendFD is a type constraint for parameter structs containing a
// frontend FD field. This is necessary because, as of this writing (Go 1.20),
// there is no way to enable field access using a Go type constraint.
type HasFrontendFD interface {
GetFrontendFD() int32
SetFrontendFD(int32)
}
// Frontend ioctl parameter struct sizes.
var (
SizeofIoctlRegisterFD = uint32((*IoctlRegisterFD)(nil).SizeBytes())
SizeofIoctlAllocOSEvent = uint32((*IoctlAllocOSEvent)(nil).SizeBytes())
SizeofIoctlFreeOSEvent = uint32((*IoctlFreeOSEvent)(nil).SizeBytes())
SizeofRMAPIVersion = uint32((*RMAPIVersion)(nil).SizeBytes())
SizeofIoctlSysParams = uint32((*IoctlSysParams)(nil).SizeBytes())
SizeofIoctlWaitOpenComplete = uint32((*IoctlWaitOpenComplete)(nil).SizeBytes())
SizeofIoctlNVOS02ParametersWithFD = uint32((*IoctlNVOS02ParametersWithFD)(nil).SizeBytes())
SizeofNVOS00Parameters = uint32((*NVOS00_PARAMETERS)(nil).SizeBytes())
SizeofNVOS21Parameters = uint32((*NVOS21_PARAMETERS)(nil).SizeBytes())
SizeofIoctlNVOS33ParametersWithFD = uint32((*IoctlNVOS33ParametersWithFD)(nil).SizeBytes())
SizeofNVOS30Parameters = uint32((*NVOS30_PARAMETERS)(nil).SizeBytes())
SizeofNVOS32Parameters = uint32((*NVOS32_PARAMETERS)(nil).SizeBytes())
SizeofNVOS34Parameters = uint32((*NVOS34_PARAMETERS)(nil).SizeBytes())
SizeofNVOS39Parameters = uint32((*NVOS39_PARAMETERS)(nil).SizeBytes())
SizeofNVOS54Parameters = uint32((*NVOS54_PARAMETERS)(nil).SizeBytes())
SizeofNVOS55Parameters = uint32((*NVOS55_PARAMETERS)(nil).SizeBytes())
SizeofNVOS56Parameters = uint32((*NVOS56_PARAMETERS)(nil).SizeBytes())
SizeofNVOS57Parameters = uint32((*NVOS57_PARAMETERS)(nil).SizeBytes())
SizeofNVOS64Parameters = uint32((*NVOS64_PARAMETERS)(nil).SizeBytes())
)