openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

892 lines
32 KiB

# mypy: ignore-errors
# -*- coding: utf-8 -*-
#
# TARGET arch is: []
# WORD_SIZE is: 8
# POINTER_SIZE is: 8
# LONGDOUBLE_SIZE is: 16
#
import ctypes
from tinygrad.runtime.support.hcq import HWInterface
import functools
def _do_ioctl_io(__idir, __base, __nr, __fd:HWInterface, val=0, __len=0):
return __fd.ioctl((__idir<<30) | (__len<<16) | (__base<<8) | __nr, val)
def _do_ioctl(__idir, __base, __nr, __user_struct, __fd:HWInterface, __val=None, **kwargs):
ret = __fd.ioctl((__idir<<30) | (ctypes.sizeof(made := (__made or __user_struct(**kwargs)))<<16) | (__base<<8) | __nr, made)
if ret != 0: raise RuntimeError(f"ioctl returned {ret}")
return made
def _IO(base, nr): return functools.partial(_do_ioctl_io, 0, ord(base) if isinstance(base, str) else base, nr)
def _IOW(base, nr, type): return functools.partial(_do_ioctl, 1, ord(base) if isinstance(base, str) else base, nr, type)
def _IOR(base, nr, type): return functools.partial(_do_ioctl, 2, ord(base) if isinstance(base, str) else base, nr, type)
def _IOWR(base, nr, type): return functools.partial(_do_ioctl, 3, ord(base) if isinstance(base, str) else base, nr, type)
class AsDictMixin:
@classmethod
def as_dict(cls, self):
result = {}
if not isinstance(self, AsDictMixin):
# not a structure, assume it's already a python object
return self
if not hasattr(cls, "_fields_"):
return result
# sys.version_info >= (3, 5)
# for (field, *_) in cls._fields_: # noqa
for field_tuple in cls._fields_: # noqa
field = field_tuple[0]
if field.startswith('PADDING_'):
continue
value = getattr(self, field)
type_ = type(value)
if hasattr(value, "_length_") and hasattr(value, "_type_"):
# array
if not hasattr(type_, "as_dict"):
value = [v for v in value]
else:
type_ = type_._type_
value = [type_.as_dict(v) for v in value]
elif hasattr(value, "contents") and hasattr(value, "_type_"):
# pointer
try:
if not hasattr(type_, "as_dict"):
value = value.contents
else:
type_ = type_._type_
value = type_.as_dict(value.contents)
except ValueError:
# nullptr
value = None
elif isinstance(value, AsDictMixin):
# other structure
value = type_.as_dict(value)
result[field] = value
return result
class Structure(ctypes.Structure, AsDictMixin):
def __init__(self, *args, **kwds):
# We don't want to use positional arguments fill PADDING_* fields
args = dict(zip(self.__class__._field_names_(), args))
args.update(kwds)
super(Structure, self).__init__(**args)
@classmethod
def _field_names_(cls):
if hasattr(cls, '_fields_'):
return (f[0] for f in cls._fields_ if not f[0].startswith('PADDING'))
else:
return ()
@classmethod
def get_type(cls, field):
for f in cls._fields_:
if f[0] == field:
return f[1]
return None
@classmethod
def bind(cls, bound_fields):
fields = {}
for name, type_ in cls._fields_:
if hasattr(type_, "restype"):
if name in bound_fields:
if bound_fields[name] is None:
fields[name] = type_()
else:
# use a closure to capture the callback from the loop scope
fields[name] = (
type_((lambda callback: lambda *args: callback(*args))(
bound_fields[name]))
)
del bound_fields[name]
else:
# default callback implementation (does nothing)
try:
default_ = type_(0).restype().value
except TypeError:
default_ = None
fields[name] = type_((
lambda default_: lambda *args: default_)(default_))
else:
# not a callback function, use default initialization
if name in bound_fields:
fields[name] = bound_fields[name]
del bound_fields[name]
else:
fields[name] = type_()
if len(bound_fields) != 0:
raise ValueError(
"Cannot bind the following unknown callback(s) {}.{}".format(
cls.__name__, bound_fields.keys()
))
return cls(**fields)
class Union(ctypes.Union, AsDictMixin):
pass
VFIO_H = True # macro
VFIO_API_VERSION = 0 # macro
VFIO_TYPE1_IOMMU = 1 # macro
VFIO_SPAPR_TCE_IOMMU = 2 # macro
VFIO_TYPE1v2_IOMMU = 3 # macro
VFIO_DMA_CC_IOMMU = 4 # macro
VFIO_EEH = 5 # macro
VFIO_TYPE1_NESTING_IOMMU = 6 # macro
VFIO_SPAPR_TCE_v2_IOMMU = 7 # macro
VFIO_NOIOMMU_IOMMU = 8 # macro
VFIO_UNMAP_ALL = 9 # macro
VFIO_UPDATE_VADDR = 10 # macro
VFIO_TYPE = (';') # macro
VFIO_BASE = 100 # macro
VFIO_GET_API_VERSION = _IO ( ( ';' ) , 100 + 0 ) # macro (from list)
VFIO_CHECK_EXTENSION = _IO ( ( ';' ) , 100 + 1 ) # macro (from list)
VFIO_SET_IOMMU = _IO ( ( ';' ) , 100 + 2 ) # macro (from list)
VFIO_GROUP_FLAGS_VIABLE = (1<<0) # macro
VFIO_GROUP_FLAGS_CONTAINER_SET = (1<<1) # macro
VFIO_GROUP_GET_STATUS = _IO ( ( ';' ) , 100 + 3 ) # macro (from list)
VFIO_GROUP_SET_CONTAINER = _IO ( ( ';' ) , 100 + 4 ) # macro (from list)
VFIO_GROUP_UNSET_CONTAINER = _IO ( ( ';' ) , 100 + 5 ) # macro (from list)
VFIO_GROUP_GET_DEVICE_FD = _IO ( ( ';' ) , 100 + 6 ) # macro (from list)
VFIO_DEVICE_FLAGS_RESET = (1<<0) # macro
VFIO_DEVICE_FLAGS_PCI = (1<<1) # macro
VFIO_DEVICE_FLAGS_PLATFORM = (1<<2) # macro
VFIO_DEVICE_FLAGS_AMBA = (1<<3) # macro
VFIO_DEVICE_FLAGS_CCW = (1<<4) # macro
VFIO_DEVICE_FLAGS_AP = (1<<5) # macro
VFIO_DEVICE_FLAGS_FSL_MC = (1<<6) # macro
VFIO_DEVICE_FLAGS_CAPS = (1<<7) # macro
VFIO_DEVICE_GET_INFO = _IO ( ( ';' ) , 100 + 7 ) # macro (from list)
VFIO_DEVICE_API_PCI_STRING = "vfio-pci" # macro
VFIO_DEVICE_API_PLATFORM_STRING = "vfio-platform" # macro
VFIO_DEVICE_API_AMBA_STRING = "vfio-amba" # macro
VFIO_DEVICE_API_CCW_STRING = "vfio-ccw" # macro
VFIO_DEVICE_API_AP_STRING = "vfio-ap" # macro
VFIO_DEVICE_INFO_CAP_ZPCI_BASE = 1 # macro
VFIO_DEVICE_INFO_CAP_ZPCI_GROUP = 2 # macro
VFIO_DEVICE_INFO_CAP_ZPCI_UTIL = 3 # macro
VFIO_DEVICE_INFO_CAP_ZPCI_PFIP = 4 # macro
VFIO_REGION_INFO_FLAG_READ = (1<<0) # macro
VFIO_REGION_INFO_FLAG_WRITE = (1<<1) # macro
VFIO_REGION_INFO_FLAG_MMAP = (1<<2) # macro
VFIO_REGION_INFO_FLAG_CAPS = (1<<3) # macro
VFIO_DEVICE_GET_REGION_INFO = _IO ( ( ';' ) , 100 + 8 ) # macro (from list)
VFIO_REGION_INFO_CAP_SPARSE_MMAP = 1 # macro
VFIO_REGION_INFO_CAP_TYPE = 2 # macro
VFIO_REGION_TYPE_PCI_VENDOR_TYPE = (1<<31) # macro
VFIO_REGION_TYPE_PCI_VENDOR_MASK = (0xffff) # macro
VFIO_REGION_TYPE_GFX = (1) # macro
VFIO_REGION_TYPE_CCW = (2) # macro
VFIO_REGION_TYPE_MIGRATION = (3) # macro
VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION = (1) # macro
VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG = (2) # macro
VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG = (3) # macro
VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM = (1) # macro
VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD = (1) # macro
VFIO_REGION_SUBTYPE_GFX_EDID = (1) # macro
VFIO_DEVICE_GFX_LINK_STATE_UP = 1 # macro
VFIO_DEVICE_GFX_LINK_STATE_DOWN = 2 # macro
VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD = (1) # macro
VFIO_REGION_SUBTYPE_CCW_SCHIB = (2) # macro
VFIO_REGION_SUBTYPE_CCW_CRW = (3) # macro
VFIO_REGION_SUBTYPE_MIGRATION = (1) # macro
VFIO_DEVICE_STATE_STOP = (0) # macro
VFIO_DEVICE_STATE_RUNNING = (1<<0) # macro
VFIO_DEVICE_STATE_SAVING = (1<<1) # macro
VFIO_DEVICE_STATE_RESUMING = (1<<2) # macro
VFIO_DEVICE_STATE_MASK = ((1<<0)|(1<<1)|(1<<2)) # macro
# def VFIO_DEVICE_STATE_VALID(state): # macro
# return (state&(1<<2)?(state&((1<<0)|(1<<1)|(1<<2)))==(1<<2):1)
def VFIO_DEVICE_STATE_IS_ERROR(state): # macro
return ((state&((1<<0)|(1<<1)|(1<<2)))==((1<<1)|(1<<2)))
# def VFIO_DEVICE_STATE_SET_ERROR(state): # macro
# return ((state&~((1<<0)|(1<<1)|(1<<2)))|VFIO_DEVICE_SATE_SAVING|(1<<2))
VFIO_REGION_INFO_CAP_MSIX_MAPPABLE = 3 # macro
VFIO_REGION_INFO_CAP_NVLINK2_SSATGT = 4 # macro
VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD = 5 # macro
VFIO_IRQ_INFO_EVENTFD = (1<<0) # macro
VFIO_IRQ_INFO_MASKABLE = (1<<1) # macro
VFIO_IRQ_INFO_AUTOMASKED = (1<<2) # macro
VFIO_IRQ_INFO_NORESIZE = (1<<3) # macro
VFIO_DEVICE_GET_IRQ_INFO = _IO ( ( ';' ) , 100 + 9 ) # macro (from list)
VFIO_IRQ_SET_DATA_NONE = (1<<0) # macro
VFIO_IRQ_SET_DATA_BOOL = (1<<1) # macro
VFIO_IRQ_SET_DATA_EVENTFD = (1<<2) # macro
VFIO_IRQ_SET_ACTION_MASK = (1<<3) # macro
VFIO_IRQ_SET_ACTION_UNMASK = (1<<4) # macro
VFIO_IRQ_SET_ACTION_TRIGGER = (1<<5) # macro
VFIO_DEVICE_SET_IRQS = _IO ( ( ';' ) , 100 + 10 ) # macro (from list)
VFIO_IRQ_SET_DATA_TYPE_MASK = ((1<<0)|(1<<1)|(1<<2)) # macro
VFIO_IRQ_SET_ACTION_TYPE_MASK = ((1<<3)|(1<<4)|(1<<5)) # macro
VFIO_DEVICE_RESET = _IO ( ( ';' ) , 100 + 11 ) # macro (from list)
VFIO_DEVICE_GET_PCI_HOT_RESET_INFO = _IO ( ( ';' ) , 100 + 12 ) # macro (from list)
VFIO_DEVICE_PCI_HOT_RESET = _IO ( ( ';' ) , 100 + 13 ) # macro (from list)
VFIO_GFX_PLANE_TYPE_PROBE = (1<<0) # macro
VFIO_GFX_PLANE_TYPE_DMABUF = (1<<1) # macro
VFIO_GFX_PLANE_TYPE_REGION = (1<<2) # macro
VFIO_DEVICE_QUERY_GFX_PLANE = _IO ( ( ';' ) , 100 + 14 ) # macro (from list)
VFIO_DEVICE_GET_GFX_DMABUF = _IO ( ( ';' ) , 100 + 15 ) # macro (from list)
VFIO_DEVICE_IOEVENTFD_8 = (1<<0) # macro
VFIO_DEVICE_IOEVENTFD_16 = (1<<1) # macro
VFIO_DEVICE_IOEVENTFD_32 = (1<<2) # macro
VFIO_DEVICE_IOEVENTFD_64 = (1<<3) # macro
VFIO_DEVICE_IOEVENTFD_SIZE_MASK = (0xf) # macro
VFIO_DEVICE_IOEVENTFD = _IO ( ( ';' ) , 100 + 16 ) # macro (from list)
VFIO_DEVICE_FEATURE_MASK = (0xffff) # macro
VFIO_DEVICE_FEATURE_GET = (1<<16) # macro
VFIO_DEVICE_FEATURE_SET = (1<<17) # macro
VFIO_DEVICE_FEATURE_PROBE = (1<<18) # macro
VFIO_DEVICE_FEATURE = _IO ( ( ';' ) , 100 + 17 ) # macro (from list)
VFIO_DEVICE_FEATURE_PCI_VF_TOKEN = (0) # macro
VFIO_IOMMU_INFO_PGSIZES = (1<<0) # macro
VFIO_IOMMU_INFO_CAPS = (1<<1) # macro
VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE = 1 # macro
VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION = 2 # macro
VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL = 3 # macro
VFIO_IOMMU_GET_INFO = _IO ( ( ';' ) , 100 + 12 ) # macro (from list)
VFIO_DMA_MAP_FLAG_READ = (1<<0) # macro
VFIO_DMA_MAP_FLAG_WRITE = (1<<1) # macro
VFIO_DMA_MAP_FLAG_VADDR = (1<<2) # macro
VFIO_IOMMU_MAP_DMA = _IO ( ( ';' ) , 100 + 13 ) # macro (from list)
VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP = (1<<0) # macro
VFIO_DMA_UNMAP_FLAG_ALL = (1<<1) # macro
VFIO_DMA_UNMAP_FLAG_VADDR = (1<<2) # macro
VFIO_IOMMU_UNMAP_DMA = _IO ( ( ';' ) , 100 + 14 ) # macro (from list)
VFIO_IOMMU_ENABLE = _IO ( ( ';' ) , 100 + 15 ) # macro (from list)
VFIO_IOMMU_DISABLE = _IO ( ( ';' ) , 100 + 16 ) # macro (from list)
VFIO_IOMMU_DIRTY_PAGES_FLAG_START = (1<<0) # macro
VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP = (1<<1) # macro
VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP = (1<<2) # macro
VFIO_IOMMU_DIRTY_PAGES = _IO ( ( ';' ) , 100 + 17 ) # macro (from list)
VFIO_IOMMU_SPAPR_INFO_DDW = (1<<0) # macro
VFIO_IOMMU_SPAPR_TCE_GET_INFO = _IO ( ( ';' ) , 100 + 12 ) # macro (from list)
VFIO_EEH_PE_DISABLE = 0 # macro
VFIO_EEH_PE_ENABLE = 1 # macro
VFIO_EEH_PE_UNFREEZE_IO = 2 # macro
VFIO_EEH_PE_UNFREEZE_DMA = 3 # macro
VFIO_EEH_PE_GET_STATE = 4 # macro
VFIO_EEH_PE_STATE_NORMAL = 0 # macro
VFIO_EEH_PE_STATE_RESET = 1 # macro
VFIO_EEH_PE_STATE_STOPPED = 2 # macro
VFIO_EEH_PE_STATE_STOPPED_DMA = 4 # macro
VFIO_EEH_PE_STATE_UNAVAIL = 5 # macro
VFIO_EEH_PE_RESET_DEACTIVATE = 5 # macro
VFIO_EEH_PE_RESET_HOT = 6 # macro
VFIO_EEH_PE_RESET_FUNDAMENTAL = 7 # macro
VFIO_EEH_PE_CONFIGURE = 8 # macro
VFIO_EEH_PE_INJECT_ERR = 9 # macro
VFIO_EEH_PE_OP = _IO ( ( ';' ) , 100 + 21 ) # macro (from list)
VFIO_IOMMU_SPAPR_REGISTER_MEMORY = _IO ( ( ';' ) , 100 + 17 ) # macro (from list)
VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY = _IO ( ( ';' ) , 100 + 18 ) # macro (from list)
VFIO_IOMMU_SPAPR_TCE_CREATE = _IO ( ( ';' ) , 100 + 19 ) # macro (from list)
VFIO_IOMMU_SPAPR_TCE_REMOVE = _IO ( ( ';' ) , 100 + 20 ) # macro (from list)
class struct_vfio_info_cap_header(Structure):
pass
struct_vfio_info_cap_header._pack_ = 1 # source:False
struct_vfio_info_cap_header._fields_ = [
('id', ctypes.c_uint16),
('version', ctypes.c_uint16),
('next', ctypes.c_uint32),
]
class struct_vfio_group_status(Structure):
pass
struct_vfio_group_status._pack_ = 1 # source:False
struct_vfio_group_status._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
]
class struct_vfio_device_info(Structure):
pass
struct_vfio_device_info._pack_ = 1 # source:False
struct_vfio_device_info._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('num_regions', ctypes.c_uint32),
('num_irqs', ctypes.c_uint32),
('cap_offset', ctypes.c_uint32),
]
class struct_vfio_region_info(Structure):
pass
struct_vfio_region_info._pack_ = 1 # source:False
struct_vfio_region_info._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('index', ctypes.c_uint32),
('cap_offset', ctypes.c_uint32),
('size', ctypes.c_uint64),
('offset', ctypes.c_uint64),
]
class struct_vfio_region_sparse_mmap_area(Structure):
pass
struct_vfio_region_sparse_mmap_area._pack_ = 1 # source:False
struct_vfio_region_sparse_mmap_area._fields_ = [
('offset', ctypes.c_uint64),
('size', ctypes.c_uint64),
]
class struct_vfio_region_info_cap_sparse_mmap(Structure):
pass
struct_vfio_region_info_cap_sparse_mmap._pack_ = 1 # source:False
struct_vfio_region_info_cap_sparse_mmap._fields_ = [
('header', struct_vfio_info_cap_header),
('nr_areas', ctypes.c_uint32),
('reserved', ctypes.c_uint32),
('areas', struct_vfio_region_sparse_mmap_area * 0),
]
class struct_vfio_region_info_cap_type(Structure):
pass
struct_vfio_region_info_cap_type._pack_ = 1 # source:False
struct_vfio_region_info_cap_type._fields_ = [
('header', struct_vfio_info_cap_header),
('type', ctypes.c_uint32),
('subtype', ctypes.c_uint32),
]
class struct_vfio_region_gfx_edid(Structure):
pass
struct_vfio_region_gfx_edid._pack_ = 1 # source:False
struct_vfio_region_gfx_edid._fields_ = [
('edid_offset', ctypes.c_uint32),
('edid_max_size', ctypes.c_uint32),
('edid_size', ctypes.c_uint32),
('max_xres', ctypes.c_uint32),
('max_yres', ctypes.c_uint32),
('link_state', ctypes.c_uint32),
]
class struct_vfio_device_migration_info(Structure):
pass
struct_vfio_device_migration_info._pack_ = 1 # source:False
struct_vfio_device_migration_info._fields_ = [
('device_state', ctypes.c_uint32),
('reserved', ctypes.c_uint32),
('pending_bytes', ctypes.c_uint64),
('data_offset', ctypes.c_uint64),
('data_size', ctypes.c_uint64),
]
class struct_vfio_region_info_cap_nvlink2_ssatgt(Structure):
pass
struct_vfio_region_info_cap_nvlink2_ssatgt._pack_ = 1 # source:False
struct_vfio_region_info_cap_nvlink2_ssatgt._fields_ = [
('header', struct_vfio_info_cap_header),
('tgt', ctypes.c_uint64),
]
class struct_vfio_region_info_cap_nvlink2_lnkspd(Structure):
pass
struct_vfio_region_info_cap_nvlink2_lnkspd._pack_ = 1 # source:False
struct_vfio_region_info_cap_nvlink2_lnkspd._fields_ = [
('header', struct_vfio_info_cap_header),
('link_speed', ctypes.c_uint32),
('__pad', ctypes.c_uint32),
]
class struct_vfio_irq_info(Structure):
pass
struct_vfio_irq_info._pack_ = 1 # source:False
struct_vfio_irq_info._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('index', ctypes.c_uint32),
('count', ctypes.c_uint32),
]
class struct_vfio_irq_set(Structure):
pass
struct_vfio_irq_set._pack_ = 1 # source:False
struct_vfio_irq_set._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('index', ctypes.c_uint32),
('start', ctypes.c_uint32),
('count', ctypes.c_uint32),
('data', ctypes.c_int * 1),
]
# values for enumeration 'c__Ea_VFIO_PCI_BAR0_REGION_INDEX'
c__Ea_VFIO_PCI_BAR0_REGION_INDEX__enumvalues = {
0: 'VFIO_PCI_BAR0_REGION_INDEX',
1: 'VFIO_PCI_BAR1_REGION_INDEX',
2: 'VFIO_PCI_BAR2_REGION_INDEX',
3: 'VFIO_PCI_BAR3_REGION_INDEX',
4: 'VFIO_PCI_BAR4_REGION_INDEX',
5: 'VFIO_PCI_BAR5_REGION_INDEX',
6: 'VFIO_PCI_ROM_REGION_INDEX',
7: 'VFIO_PCI_CONFIG_REGION_INDEX',
8: 'VFIO_PCI_VGA_REGION_INDEX',
9: 'VFIO_PCI_NUM_REGIONS',
}
VFIO_PCI_BAR0_REGION_INDEX = 0
VFIO_PCI_BAR1_REGION_INDEX = 1
VFIO_PCI_BAR2_REGION_INDEX = 2
VFIO_PCI_BAR3_REGION_INDEX = 3
VFIO_PCI_BAR4_REGION_INDEX = 4
VFIO_PCI_BAR5_REGION_INDEX = 5
VFIO_PCI_ROM_REGION_INDEX = 6
VFIO_PCI_CONFIG_REGION_INDEX = 7
VFIO_PCI_VGA_REGION_INDEX = 8
VFIO_PCI_NUM_REGIONS = 9
c__Ea_VFIO_PCI_BAR0_REGION_INDEX = ctypes.c_uint32 # enum
# values for enumeration 'c__Ea_VFIO_PCI_INTX_IRQ_INDEX'
c__Ea_VFIO_PCI_INTX_IRQ_INDEX__enumvalues = {
0: 'VFIO_PCI_INTX_IRQ_INDEX',
1: 'VFIO_PCI_MSI_IRQ_INDEX',
2: 'VFIO_PCI_MSIX_IRQ_INDEX',
3: 'VFIO_PCI_ERR_IRQ_INDEX',
4: 'VFIO_PCI_REQ_IRQ_INDEX',
5: 'VFIO_PCI_NUM_IRQS',
}
VFIO_PCI_INTX_IRQ_INDEX = 0
VFIO_PCI_MSI_IRQ_INDEX = 1
VFIO_PCI_MSIX_IRQ_INDEX = 2
VFIO_PCI_ERR_IRQ_INDEX = 3
VFIO_PCI_REQ_IRQ_INDEX = 4
VFIO_PCI_NUM_IRQS = 5
c__Ea_VFIO_PCI_INTX_IRQ_INDEX = ctypes.c_uint32 # enum
# values for enumeration 'c__Ea_VFIO_CCW_CONFIG_REGION_INDEX'
c__Ea_VFIO_CCW_CONFIG_REGION_INDEX__enumvalues = {
0: 'VFIO_CCW_CONFIG_REGION_INDEX',
1: 'VFIO_CCW_NUM_REGIONS',
}
VFIO_CCW_CONFIG_REGION_INDEX = 0
VFIO_CCW_NUM_REGIONS = 1
c__Ea_VFIO_CCW_CONFIG_REGION_INDEX = ctypes.c_uint32 # enum
# values for enumeration 'c__Ea_VFIO_CCW_IO_IRQ_INDEX'
c__Ea_VFIO_CCW_IO_IRQ_INDEX__enumvalues = {
0: 'VFIO_CCW_IO_IRQ_INDEX',
1: 'VFIO_CCW_CRW_IRQ_INDEX',
2: 'VFIO_CCW_REQ_IRQ_INDEX',
3: 'VFIO_CCW_NUM_IRQS',
}
VFIO_CCW_IO_IRQ_INDEX = 0
VFIO_CCW_CRW_IRQ_INDEX = 1
VFIO_CCW_REQ_IRQ_INDEX = 2
VFIO_CCW_NUM_IRQS = 3
c__Ea_VFIO_CCW_IO_IRQ_INDEX = ctypes.c_uint32 # enum
class struct_vfio_pci_dependent_device(Structure):
pass
struct_vfio_pci_dependent_device._pack_ = 1 # source:False
struct_vfio_pci_dependent_device._fields_ = [
('group_id', ctypes.c_uint32),
('segment', ctypes.c_uint16),
('bus', ctypes.c_ubyte),
('devfn', ctypes.c_ubyte),
]
class struct_vfio_pci_hot_reset_info(Structure):
pass
struct_vfio_pci_hot_reset_info._pack_ = 1 # source:False
struct_vfio_pci_hot_reset_info._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('count', ctypes.c_uint32),
('devices', struct_vfio_pci_dependent_device * 0),
]
class struct_vfio_pci_hot_reset(Structure):
pass
struct_vfio_pci_hot_reset._pack_ = 1 # source:False
struct_vfio_pci_hot_reset._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('count', ctypes.c_uint32),
('group_fds', ctypes.c_int32 * 0),
]
class struct_vfio_device_gfx_plane_info(Structure):
pass
class union_vfio_device_gfx_plane_info_0(Union):
pass
union_vfio_device_gfx_plane_info_0._pack_ = 1 # source:False
union_vfio_device_gfx_plane_info_0._fields_ = [
('region_index', ctypes.c_uint32),
('dmabuf_id', ctypes.c_uint32),
]
struct_vfio_device_gfx_plane_info._pack_ = 1 # source:False
struct_vfio_device_gfx_plane_info._anonymous_ = ('_0',)
struct_vfio_device_gfx_plane_info._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('drm_plane_type', ctypes.c_uint32),
('drm_format', ctypes.c_uint32),
('drm_format_mod', ctypes.c_uint64),
('width', ctypes.c_uint32),
('height', ctypes.c_uint32),
('stride', ctypes.c_uint32),
('size', ctypes.c_uint32),
('x_pos', ctypes.c_uint32),
('y_pos', ctypes.c_uint32),
('x_hot', ctypes.c_uint32),
('y_hot', ctypes.c_uint32),
('_0', union_vfio_device_gfx_plane_info_0),
('PADDING_0', ctypes.c_ubyte * 4),
]
class struct_vfio_device_ioeventfd(Structure):
pass
struct_vfio_device_ioeventfd._pack_ = 1 # source:False
struct_vfio_device_ioeventfd._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('offset', ctypes.c_uint64),
('data', ctypes.c_uint64),
('fd', ctypes.c_int32),
('PADDING_0', ctypes.c_ubyte * 4),
]
class struct_vfio_device_feature(Structure):
pass
struct_vfio_device_feature._pack_ = 1 # source:False
struct_vfio_device_feature._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('data', ctypes.c_ubyte * 0),
]
class struct_vfio_iommu_type1_info(Structure):
pass
struct_vfio_iommu_type1_info._pack_ = 1 # source:False
struct_vfio_iommu_type1_info._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('iova_pgsizes', ctypes.c_uint64),
('cap_offset', ctypes.c_uint32),
('PADDING_0', ctypes.c_ubyte * 4),
]
class struct_vfio_iova_range(Structure):
pass
struct_vfio_iova_range._pack_ = 1 # source:False
struct_vfio_iova_range._fields_ = [
('start', ctypes.c_uint64),
('end', ctypes.c_uint64),
]
class struct_vfio_iommu_type1_info_cap_iova_range(Structure):
pass
struct_vfio_iommu_type1_info_cap_iova_range._pack_ = 1 # source:False
struct_vfio_iommu_type1_info_cap_iova_range._fields_ = [
('header', struct_vfio_info_cap_header),
('nr_iovas', ctypes.c_uint32),
('reserved', ctypes.c_uint32),
('iova_ranges', struct_vfio_iova_range * 0),
]
class struct_vfio_iommu_type1_info_cap_migration(Structure):
pass
struct_vfio_iommu_type1_info_cap_migration._pack_ = 1 # source:False
struct_vfio_iommu_type1_info_cap_migration._fields_ = [
('header', struct_vfio_info_cap_header),
('flags', ctypes.c_uint32),
('PADDING_0', ctypes.c_ubyte * 4),
('pgsize_bitmap', ctypes.c_uint64),
('max_dirty_bitmap_size', ctypes.c_uint64),
]
class struct_vfio_iommu_type1_info_dma_avail(Structure):
pass
struct_vfio_iommu_type1_info_dma_avail._pack_ = 1 # source:False
struct_vfio_iommu_type1_info_dma_avail._fields_ = [
('header', struct_vfio_info_cap_header),
('avail', ctypes.c_uint32),
]
class struct_vfio_iommu_type1_dma_map(Structure):
pass
struct_vfio_iommu_type1_dma_map._pack_ = 1 # source:False
struct_vfio_iommu_type1_dma_map._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('vaddr', ctypes.c_uint64),
('iova', ctypes.c_uint64),
('size', ctypes.c_uint64),
]
class struct_vfio_bitmap(Structure):
pass
struct_vfio_bitmap._pack_ = 1 # source:False
struct_vfio_bitmap._fields_ = [
('pgsize', ctypes.c_uint64),
('size', ctypes.c_uint64),
('data', ctypes.POINTER(ctypes.c_uint64)),
]
class struct_vfio_iommu_type1_dma_unmap(Structure):
pass
struct_vfio_iommu_type1_dma_unmap._pack_ = 1 # source:False
struct_vfio_iommu_type1_dma_unmap._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('iova', ctypes.c_uint64),
('size', ctypes.c_uint64),
('data', ctypes.c_ubyte * 0),
]
class struct_vfio_iommu_type1_dirty_bitmap(Structure):
pass
struct_vfio_iommu_type1_dirty_bitmap._pack_ = 1 # source:False
struct_vfio_iommu_type1_dirty_bitmap._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('data', ctypes.c_ubyte * 0),
]
class struct_vfio_iommu_type1_dirty_bitmap_get(Structure):
pass
struct_vfio_iommu_type1_dirty_bitmap_get._pack_ = 1 # source:False
struct_vfio_iommu_type1_dirty_bitmap_get._fields_ = [
('iova', ctypes.c_uint64),
('size', ctypes.c_uint64),
('bitmap', struct_vfio_bitmap),
]
class struct_vfio_iommu_spapr_tce_ddw_info(Structure):
pass
struct_vfio_iommu_spapr_tce_ddw_info._pack_ = 1 # source:False
struct_vfio_iommu_spapr_tce_ddw_info._fields_ = [
('pgsizes', ctypes.c_uint64),
('max_dynamic_windows_supported', ctypes.c_uint32),
('levels', ctypes.c_uint32),
]
class struct_vfio_iommu_spapr_tce_info(Structure):
pass
struct_vfio_iommu_spapr_tce_info._pack_ = 1 # source:False
struct_vfio_iommu_spapr_tce_info._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('dma32_window_start', ctypes.c_uint32),
('dma32_window_size', ctypes.c_uint32),
('ddw', struct_vfio_iommu_spapr_tce_ddw_info),
]
class struct_vfio_eeh_pe_err(Structure):
pass
struct_vfio_eeh_pe_err._pack_ = 1 # source:False
struct_vfio_eeh_pe_err._fields_ = [
('type', ctypes.c_uint32),
('func', ctypes.c_uint32),
('addr', ctypes.c_uint64),
('mask', ctypes.c_uint64),
]
class struct_vfio_eeh_pe_op(Structure):
pass
class union_vfio_eeh_pe_op_0(Union):
_pack_ = 1 # source:False
_fields_ = [
('err', struct_vfio_eeh_pe_err),
]
struct_vfio_eeh_pe_op._pack_ = 1 # source:False
struct_vfio_eeh_pe_op._anonymous_ = ('_0',)
struct_vfio_eeh_pe_op._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('op', ctypes.c_uint32),
('PADDING_0', ctypes.c_ubyte * 4),
('_0', union_vfio_eeh_pe_op_0),
]
class struct_vfio_iommu_spapr_register_memory(Structure):
pass
struct_vfio_iommu_spapr_register_memory._pack_ = 1 # source:False
struct_vfio_iommu_spapr_register_memory._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('vaddr', ctypes.c_uint64),
('size', ctypes.c_uint64),
]
class struct_vfio_iommu_spapr_tce_create(Structure):
pass
struct_vfio_iommu_spapr_tce_create._pack_ = 1 # source:False
struct_vfio_iommu_spapr_tce_create._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('page_shift', ctypes.c_uint32),
('__resv1', ctypes.c_uint32),
('window_size', ctypes.c_uint64),
('levels', ctypes.c_uint32),
('__resv2', ctypes.c_uint32),
('start_addr', ctypes.c_uint64),
]
class struct_vfio_iommu_spapr_tce_remove(Structure):
pass
struct_vfio_iommu_spapr_tce_remove._pack_ = 1 # source:False
struct_vfio_iommu_spapr_tce_remove._fields_ = [
('argsz', ctypes.c_uint32),
('flags', ctypes.c_uint32),
('start_addr', ctypes.c_uint64),
]
__all__ = \
['VFIO_API_VERSION', 'VFIO_BASE', 'VFIO_CCW_CONFIG_REGION_INDEX',
'VFIO_CCW_CRW_IRQ_INDEX', 'VFIO_CCW_IO_IRQ_INDEX',
'VFIO_CCW_NUM_IRQS', 'VFIO_CCW_NUM_REGIONS',
'VFIO_CCW_REQ_IRQ_INDEX', 'VFIO_DEVICE_API_AMBA_STRING',
'VFIO_DEVICE_API_AP_STRING', 'VFIO_DEVICE_API_CCW_STRING',
'VFIO_DEVICE_API_PCI_STRING', 'VFIO_DEVICE_API_PLATFORM_STRING',
'VFIO_DEVICE_FEATURE_GET', 'VFIO_DEVICE_FEATURE_MASK',
'VFIO_DEVICE_FEATURE_PCI_VF_TOKEN', 'VFIO_DEVICE_FEATURE_PROBE',
'VFIO_DEVICE_FEATURE_SET', 'VFIO_DEVICE_FLAGS_AMBA',
'VFIO_DEVICE_FLAGS_AP', 'VFIO_DEVICE_FLAGS_CAPS',
'VFIO_DEVICE_FLAGS_CCW', 'VFIO_DEVICE_FLAGS_FSL_MC',
'VFIO_DEVICE_FLAGS_PCI', 'VFIO_DEVICE_FLAGS_PLATFORM',
'VFIO_DEVICE_FLAGS_RESET', 'VFIO_DEVICE_GFX_LINK_STATE_DOWN',
'VFIO_DEVICE_GFX_LINK_STATE_UP', 'VFIO_DEVICE_INFO_CAP_ZPCI_BASE',
'VFIO_DEVICE_INFO_CAP_ZPCI_GROUP',
'VFIO_DEVICE_INFO_CAP_ZPCI_PFIP',
'VFIO_DEVICE_INFO_CAP_ZPCI_UTIL', 'VFIO_DEVICE_IOEVENTFD_16',
'VFIO_DEVICE_IOEVENTFD_32', 'VFIO_DEVICE_IOEVENTFD_64',
'VFIO_DEVICE_IOEVENTFD_8', 'VFIO_DEVICE_IOEVENTFD_SIZE_MASK',
'VFIO_DEVICE_STATE_MASK', 'VFIO_DEVICE_STATE_RESUMING',
'VFIO_DEVICE_STATE_RUNNING', 'VFIO_DEVICE_STATE_SAVING',
'VFIO_DEVICE_STATE_STOP', 'VFIO_DMA_CC_IOMMU',
'VFIO_DMA_MAP_FLAG_READ', 'VFIO_DMA_MAP_FLAG_VADDR',
'VFIO_DMA_MAP_FLAG_WRITE', 'VFIO_DMA_UNMAP_FLAG_ALL',
'VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP',
'VFIO_DMA_UNMAP_FLAG_VADDR', 'VFIO_EEH', 'VFIO_EEH_PE_CONFIGURE',
'VFIO_EEH_PE_DISABLE', 'VFIO_EEH_PE_ENABLE',
'VFIO_EEH_PE_GET_STATE', 'VFIO_EEH_PE_INJECT_ERR',
'VFIO_EEH_PE_RESET_DEACTIVATE', 'VFIO_EEH_PE_RESET_FUNDAMENTAL',
'VFIO_EEH_PE_RESET_HOT', 'VFIO_EEH_PE_STATE_NORMAL',
'VFIO_EEH_PE_STATE_RESET', 'VFIO_EEH_PE_STATE_STOPPED',
'VFIO_EEH_PE_STATE_STOPPED_DMA', 'VFIO_EEH_PE_STATE_UNAVAIL',
'VFIO_EEH_PE_UNFREEZE_DMA', 'VFIO_EEH_PE_UNFREEZE_IO',
'VFIO_GFX_PLANE_TYPE_DMABUF', 'VFIO_GFX_PLANE_TYPE_PROBE',
'VFIO_GFX_PLANE_TYPE_REGION', 'VFIO_GROUP_FLAGS_CONTAINER_SET',
'VFIO_GROUP_FLAGS_VIABLE', 'VFIO_H',
'VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP',
'VFIO_IOMMU_DIRTY_PAGES_FLAG_START',
'VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP', 'VFIO_IOMMU_INFO_CAPS',
'VFIO_IOMMU_INFO_PGSIZES', 'VFIO_IOMMU_SPAPR_INFO_DDW',
'VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE',
'VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION',
'VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL', 'VFIO_IRQ_INFO_AUTOMASKED',
'VFIO_IRQ_INFO_EVENTFD', 'VFIO_IRQ_INFO_MASKABLE',
'VFIO_IRQ_INFO_NORESIZE', 'VFIO_IRQ_SET_ACTION_MASK',
'VFIO_IRQ_SET_ACTION_TRIGGER', 'VFIO_IRQ_SET_ACTION_TYPE_MASK',
'VFIO_IRQ_SET_ACTION_UNMASK', 'VFIO_IRQ_SET_DATA_BOOL',
'VFIO_IRQ_SET_DATA_EVENTFD', 'VFIO_IRQ_SET_DATA_NONE',
'VFIO_IRQ_SET_DATA_TYPE_MASK', 'VFIO_NOIOMMU_IOMMU',
'VFIO_PCI_BAR0_REGION_INDEX', 'VFIO_PCI_BAR1_REGION_INDEX',
'VFIO_PCI_BAR2_REGION_INDEX', 'VFIO_PCI_BAR3_REGION_INDEX',
'VFIO_PCI_BAR4_REGION_INDEX', 'VFIO_PCI_BAR5_REGION_INDEX',
'VFIO_PCI_CONFIG_REGION_INDEX', 'VFIO_PCI_ERR_IRQ_INDEX',
'VFIO_PCI_INTX_IRQ_INDEX', 'VFIO_PCI_MSIX_IRQ_INDEX',
'VFIO_PCI_MSI_IRQ_INDEX', 'VFIO_PCI_NUM_IRQS',
'VFIO_PCI_NUM_REGIONS', 'VFIO_PCI_REQ_IRQ_INDEX',
'VFIO_PCI_ROM_REGION_INDEX', 'VFIO_PCI_VGA_REGION_INDEX',
'VFIO_REGION_INFO_CAP_MSIX_MAPPABLE',
'VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD',
'VFIO_REGION_INFO_CAP_NVLINK2_SSATGT',
'VFIO_REGION_INFO_CAP_SPARSE_MMAP', 'VFIO_REGION_INFO_CAP_TYPE',
'VFIO_REGION_INFO_FLAG_CAPS', 'VFIO_REGION_INFO_FLAG_MMAP',
'VFIO_REGION_INFO_FLAG_READ', 'VFIO_REGION_INFO_FLAG_WRITE',
'VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD',
'VFIO_REGION_SUBTYPE_CCW_CRW', 'VFIO_REGION_SUBTYPE_CCW_SCHIB',
'VFIO_REGION_SUBTYPE_GFX_EDID',
'VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD',
'VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG',
'VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG',
'VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION',
'VFIO_REGION_SUBTYPE_MIGRATION',
'VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM', 'VFIO_REGION_TYPE_CCW',
'VFIO_REGION_TYPE_GFX', 'VFIO_REGION_TYPE_MIGRATION',
'VFIO_REGION_TYPE_PCI_VENDOR_MASK',
'VFIO_REGION_TYPE_PCI_VENDOR_TYPE', 'VFIO_SPAPR_TCE_IOMMU',
'VFIO_SPAPR_TCE_v2_IOMMU', 'VFIO_TYPE', 'VFIO_TYPE1_IOMMU',
'VFIO_TYPE1_NESTING_IOMMU', 'VFIO_TYPE1v2_IOMMU',
'VFIO_UNMAP_ALL', 'VFIO_UPDATE_VADDR', '_IO', '_IOR', '_IOW',
'_IOWR', 'c__Ea_VFIO_CCW_CONFIG_REGION_INDEX',
'c__Ea_VFIO_CCW_IO_IRQ_INDEX', 'c__Ea_VFIO_PCI_BAR0_REGION_INDEX',
'c__Ea_VFIO_PCI_INTX_IRQ_INDEX', 'struct_vfio_bitmap',
'struct_vfio_device_feature', 'struct_vfio_device_gfx_plane_info',
'struct_vfio_device_info', 'struct_vfio_device_ioeventfd',
'struct_vfio_device_migration_info', 'struct_vfio_eeh_pe_err',
'struct_vfio_eeh_pe_op', 'struct_vfio_group_status',
'struct_vfio_info_cap_header',
'struct_vfio_iommu_spapr_register_memory',
'struct_vfio_iommu_spapr_tce_create',
'struct_vfio_iommu_spapr_tce_ddw_info',
'struct_vfio_iommu_spapr_tce_info',
'struct_vfio_iommu_spapr_tce_remove',
'struct_vfio_iommu_type1_dirty_bitmap',
'struct_vfio_iommu_type1_dirty_bitmap_get',
'struct_vfio_iommu_type1_dma_map',
'struct_vfio_iommu_type1_dma_unmap',
'struct_vfio_iommu_type1_info',
'struct_vfio_iommu_type1_info_cap_iova_range',
'struct_vfio_iommu_type1_info_cap_migration',
'struct_vfio_iommu_type1_info_dma_avail',
'struct_vfio_iova_range', 'struct_vfio_irq_info',
'struct_vfio_irq_set', 'struct_vfio_pci_dependent_device',
'struct_vfio_pci_hot_reset', 'struct_vfio_pci_hot_reset_info',
'struct_vfio_region_gfx_edid', 'struct_vfio_region_info',
'struct_vfio_region_info_cap_nvlink2_lnkspd',
'struct_vfio_region_info_cap_nvlink2_ssatgt',
'struct_vfio_region_info_cap_sparse_mmap',
'struct_vfio_region_info_cap_type',
'struct_vfio_region_sparse_mmap_area',
'union_vfio_device_gfx_plane_info_0', 'union_vfio_eeh_pe_op_0']