Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fba7f020 authored by Michael S. Tsirkin's avatar Michael S. Tsirkin
Browse files

virtio_scsi: export to userspace



Replace uXX by __uXX and _packed by __attribute((packed))
as seems to be the norm for userspace headers.

Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Acked-by: default avatarPaolo Bonzini <pbonzini@redhat.com>


parent 106d81f5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -428,6 +428,7 @@ header-y += virtio_net.h
header-y += virtio_pci.h
header-y += virtio_ring.h
header-y += virtio_rng.h
header-y += virtio_scsi.h
header-y += vm_sockets.h
header-y += vt.h
header-y += wait.h
+37 −37
Original line number Diff line number Diff line
@@ -34,78 +34,78 @@

/* SCSI command request, followed by data-out */
struct virtio_scsi_cmd_req {
	u8 lun[8];		/* Logical Unit Number */
	__u8 lun[8];		/* Logical Unit Number */
	__virtio64 tag;		/* Command identifier */
	u8 task_attr;		/* Task attribute */
	u8 prio;		/* SAM command priority field */
	u8 crn;
	u8 cdb[VIRTIO_SCSI_CDB_SIZE];
} __packed;
	__u8 task_attr;		/* Task attribute */
	__u8 prio;		/* SAM command priority field */
	__u8 crn;
	__u8 cdb[VIRTIO_SCSI_CDB_SIZE];
} __attribute__((packed));

/* SCSI command request, followed by protection information */
struct virtio_scsi_cmd_req_pi {
	u8 lun[8];		/* Logical Unit Number */
	__u8 lun[8];		/* Logical Unit Number */
	__virtio64 tag;		/* Command identifier */
	u8 task_attr;		/* Task attribute */
	u8 prio;		/* SAM command priority field */
	u8 crn;
	__u8 task_attr;		/* Task attribute */
	__u8 prio;		/* SAM command priority field */
	__u8 crn;
	__virtio32 pi_bytesout;	/* DataOUT PI Number of bytes */
	__virtio32 pi_bytesin;		/* DataIN PI Number of bytes */
	u8 cdb[VIRTIO_SCSI_CDB_SIZE];
} __packed;
	__u8 cdb[VIRTIO_SCSI_CDB_SIZE];
} __attribute__((packed));

/* Response, followed by sense data and data-in */
struct virtio_scsi_cmd_resp {
	__virtio32 sense_len;		/* Sense data length */
	__virtio32 resid;		/* Residual bytes in data buffer */
	__virtio16 status_qualifier;	/* Status qualifier */
	u8 status;		/* Command completion status */
	u8 response;		/* Response values */
	u8 sense[VIRTIO_SCSI_SENSE_SIZE];
} __packed;
	__u8 status;		/* Command completion status */
	__u8 response;		/* Response values */
	__u8 sense[VIRTIO_SCSI_SENSE_SIZE];
} __attribute__((packed));

/* Task Management Request */
struct virtio_scsi_ctrl_tmf_req {
	__virtio32 type;
	__virtio32 subtype;
	u8 lun[8];
	__u8 lun[8];
	__virtio64 tag;
} __packed;
} __attribute__((packed));

struct virtio_scsi_ctrl_tmf_resp {
	u8 response;
} __packed;
	__u8 response;
} __attribute__((packed));

/* Asynchronous notification query/subscription */
struct virtio_scsi_ctrl_an_req {
	__virtio32 type;
	u8 lun[8];
	__u8 lun[8];
	__virtio32 event_requested;
} __packed;
} __attribute__((packed));

struct virtio_scsi_ctrl_an_resp {
	__virtio32 event_actual;
	u8 response;
} __packed;
	__u8 response;
} __attribute__((packed));

struct virtio_scsi_event {
	__virtio32 event;
	u8 lun[8];
	__u8 lun[8];
	__virtio32 reason;
} __packed;
} __attribute__((packed));

struct virtio_scsi_config {
	u32 num_queues;
	u32 seg_max;
	u32 max_sectors;
	u32 cmd_per_lun;
	u32 event_info_size;
	u32 sense_size;
	u32 cdb_size;
	u16 max_channel;
	u16 max_target;
	u32 max_lun;
} __packed;
	__u32 num_queues;
	__u32 seg_max;
	__u32 max_sectors;
	__u32 cmd_per_lun;
	__u32 event_info_size;
	__u32 sense_size;
	__u32 cdb_size;
	__u16 max_channel;
	__u16 max_target;
	__u32 max_lun;
} __attribute__((packed));

/* Feature Bits */
#define VIRTIO_SCSI_F_INOUT                    0