On Mon, Oct 19, 2020 at 11:09 PM Michael S. Tsirkin wrote: > On Mon, Oct 19, 2020 at 10:56:21PM +0800, Xie Yongji wrote: > > diff --git a/include/uapi/linux/vduse.h b/include/uapi/linux/vduse.h > > new file mode 100644 > > index 000000000000..855d2116b3a6 > > --- /dev/null > > +++ b/include/uapi/linux/vduse.h > > @@ -0,0 +1,85 @@ > > +/* SPDX-License-Identifier: GPL-2.0 */ > > +#ifndef _UAPI_VDUSE_H_ > > +#define _UAPI_VDUSE_H_ > > + > > +#include > > + > > +#define VDUSE_CONFIG_DATA_LEN 8 > > + > > +enum vduse_req_type { > > + VDUSE_SET_VQ_STATE, > > + VDUSE_SET_FEATURES, > > + VDUSE_GET_FEATURES, > > + VDUSE_SET_STATUS, > > + VDUSE_GET_STATUS, > > + VDUSE_SET_CONFIG, > > + VDUSE_GET_CONFIG, > > +}; > > + > > +struct vduse_vq_state { > > + __u32 index; > > + __u32 num; > > + __u64 desc_addr; > > + __u64 driver_addr; > > + __u64 device_addr; > > + __u8 ready; > > +}; > > + > > +struct vduse_dev_config_data { > > + __u32 offset; > > + __u32 len; > > + __u8 data[VDUSE_CONFIG_DATA_LEN]; > > +}; > > + > > +struct vduse_dev_request { > > + __u32 type; > > + __u32 unique; > > + __u32 flags; > > + __u32 size; > > + union { > > + struct vduse_vq_state vq_state; > > + struct vduse_dev_config_data config; > > + __u64 features; > > + __u8 status; > > + }; > > +}; > > + > > +struct vduse_dev_response { > > + __u32 unique; > > + __s32 result; > > + union { > > + struct vduse_dev_config_data config; > > + __u64 features; > > + __u8 status; > > + }; > > +}; > > + > > +/* ioctl */ > > + > > +struct vduse_dev_config { > > + __u32 id; > > + __u32 vendor_id; > > + __u32 device_id; > > + __u64 iova_size; > > + __u16 vq_num; > > + __u16 vq_size_max; > > + __u32 vq_align; > > +}; > > + > > +struct vduse_vq_eventfd { > > + __u32 index; > > + __u32 fd; > > +}; > > + > > +#define VDUSE_BASE 'V' > > + > > +#define VDUSE_CREATE_DEV _IOW(VDUSE_BASE, 0x01, struct > vduse_dev_config) > > +#define VDUSE_GET_DEV _IO(VDUSE_BASE, 0x02) > > +#define VDUSE_DESTROY_DEV _IO(VDUSE_BASE, 0x03) > > + > > +#define VDUSE_DEV_START _IO(VDUSE_BASE, 0x04) > > +#define VDUSE_DEV_STOP _IO(VDUSE_BASE, 0x05) > > +#define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x06, struct > vduse_vq_eventfd) > > +#define VDUSE_VQ_SETUP_IRQFD _IOW(VDUSE_BASE, 0x07, struct > vduse_vq_eventfd) > > + > > +#endif /* _UAPI_VDUSE_H_ */ > > > Could we see some documentation about the user interface of this module > please? > > Sure. Will do it! Thanks, Yongji > > -- > > 2.25.1 > >