vfio_device_ops
Regular
4.4
: Absent ⚠️
4.8
: Absent ⚠️
4.10
: Absent ⚠️
4.13
: Absent ⚠️
4.15
: Absent ⚠️
4.18
: Absent ⚠️
5.0
: Absent ⚠️
5.3
: Absent ⚠️
5.4
: ✅struct vfio_device_ops {
char *name;
int (*open)(void *);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
void (*request)(void *, unsigned int);
};
5.8
: ✅struct vfio_device_ops {
char *name;
int (*open)(void *);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
void (*request)(void *, unsigned int);
int (*match)(void *, char *);
};
5.11
: ✅struct vfio_device_ops {
char *name;
int (*open)(void *);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
void (*request)(void *, unsigned int);
int (*match)(void *, char *);
};
5.13
: ✅struct vfio_device_ops {
char *name;
int (*open)(struct vfio_device *);
void (*release)(struct vfio_device *);
ssize_t (*read)(struct vfio_device *, char *, size_t, loff_t *);
ssize_t (*write)(struct vfio_device *, const char *, size_t, loff_t *);
long int (*ioctl)(struct vfio_device *, unsigned int, long unsigned int);
int (*mmap)(struct vfio_device *, struct vm_area_struct *);
void (*request)(struct vfio_device *, unsigned int);
int (*match)(struct vfio_device *, char *);
};
5.15
: ✅struct vfio_device_ops {
char *name;
int (*open_device)(struct vfio_device *);
void (*close_device)(struct vfio_device *);
ssize_t (*read)(struct vfio_device *, char *, size_t, loff_t *);
ssize_t (*write)(struct vfio_device *, const char *, size_t, loff_t *);
long int (*ioctl)(struct vfio_device *, unsigned int, long unsigned int);
int (*mmap)(struct vfio_device *, struct vm_area_struct *);
void (*request)(struct vfio_device *, unsigned int);
int (*match)(struct vfio_device *, char *);
};
5.19
: ✅struct vfio_device_ops {
char *name;
int (*open_device)(struct vfio_device *);
void (*close_device)(struct vfio_device *);
ssize_t (*read)(struct vfio_device *, char *, size_t, loff_t *);
ssize_t (*write)(struct vfio_device *, const char *, size_t, loff_t *);
long int (*ioctl)(struct vfio_device *, unsigned int, long unsigned int);
int (*mmap)(struct vfio_device *, struct vm_area_struct *);
void (*request)(struct vfio_device *, unsigned int);
int (*match)(struct vfio_device *, char *);
int (*device_feature)(struct vfio_device *, u32, void *, size_t);
};
6.2
: Absent ⚠️
6.5
: Absent ⚠️
6.8
: Absent ⚠️
arm64
: Absent ⚠️
armhf
: Absent ⚠️
ppc64el
: ✅struct vfio_device_ops {
char *name;
int (*open)(void *);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
void (*request)(void *, unsigned int);
};
riscv64
: Absent ⚠️
aws
: Absent ⚠️
azure
: ✅struct vfio_device_ops {
char *name;
int (*open)(void *);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
void (*request)(void *, unsigned int);
};
gcp
: ✅struct vfio_device_ops {
char *name;
int (*open)(void *);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
void (*request)(void *, unsigned int);
};
lowlatency
: ✅struct vfio_device_ops {
char *name;
int (*open)(void *);
void (*release)(void *);
ssize_t (*read)(void *, char *, size_t, loff_t *);
ssize_t (*write)(void *, const char *, size_t, loff_t *);
long int (*ioctl)(void *, unsigned int, long unsigned int);
int (*mmap)(void *, struct vm_area_struct *);
void (*request)(void *, unsigned int);
};
Regular
5.4
and 5.8
⚠️int (*match)(void *, char *)
5.8
and 5.11
✅
5.11
and 5.13
⚠️int (*open)(void *)
➡️ int (*open)(struct vfio_device *)
void (*release)(void *)
➡️ void (*release)(struct vfio_device *)
ssize_t (*read)(void *, char *, size_t, loff_t *)
➡️ ssize_t (*read)(struct vfio_device *, char *, size_t, loff_t *)
ssize_t (*write)(void *, const char *, size_t, loff_t *)
➡️ ssize_t (*write)(struct vfio_device *, const char *, size_t, loff_t *)
long int (*ioctl)(void *, unsigned int, long unsigned int)
➡️ long int (*ioctl)(struct vfio_device *, unsigned int, long unsigned int)
int (*mmap)(void *, struct vm_area_struct *)
➡️ int (*mmap)(struct vfio_device *, struct vm_area_struct *)
void (*request)(void *, unsigned int)
➡️ void (*request)(struct vfio_device *, unsigned int)
int (*match)(void *, char *)
➡️ int (*match)(struct vfio_device *, char *)
5.13
and 5.15
⚠️int (*open_device)(struct vfio_device *)
void (*close_device)(struct vfio_device *)
int (*open)(struct vfio_device *)
void (*release)(struct vfio_device *)
5.15
and 5.19
⚠️int (*device_feature)(struct vfio_device *, u32, void *, size_t)
amd64
and ppc64el
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅