include/xen/interface/io/usbif.h

Source file repositories/reference/linux-study-clean/include/xen/interface/io/usbif.h

File Facts

System
Linux kernel
Corpus path
include/xen/interface/io/usbif.h
Extension
.h
Size
16888 bytes
Lines
406
Domain
Repository Root And Misc
Bucket
include
Inferred role
Repository Root And Misc: implementation source
Status
source implementation candidate

Why This File Exists

Top-level or miscellaneous repository surface. Use this as map coverage unless a later manual pass promotes the file into a deeper subsystem dossier.

Dependency Surface

Detected Declarations

Annotated Snippet

struct xenusb_request_segment {
	grant_ref_t gref;
	uint16_t offset;
	uint16_t length;
};

struct xenusb_urb_request {
	uint16_t id;			/* request id */
	uint16_t nr_buffer_segs;	/* number of urb->transfer_buffer segments */

	/* basic urb parameter */
	uint32_t pipe;
	uint16_t transfer_flags;
#define XENUSB_SHORT_NOT_OK	0x0001
	uint16_t buffer_length;
	union {
		uint8_t ctrl[8];	/* setup_packet (Ctrl) */

		struct {
			uint16_t interval;	/* maximum (1024*8) in usb core */
			uint16_t start_frame;	/* start frame */
			uint16_t number_of_packets;	/* number of ISO packet */
			uint16_t nr_frame_desc_segs;	/* number of iso_frame_desc segments */
		} isoc;

		struct {
			uint16_t interval;	/* maximum (1024*8) in usb core */
			uint16_t pad[3];
		} intr;

		struct {
			uint16_t unlink_id;	/* unlink request id */
			uint16_t pad[3];
		} unlink;

	} u;

	/* urb data segments */
	struct xenusb_request_segment seg[XENUSB_MAX_SEGMENTS_PER_REQUEST];
};

struct xenusb_urb_response {
	uint16_t id;		/* request id */
	uint16_t start_frame;	/* start frame (ISO) */
	int32_t status;		/* status (non-ISO) */
#define XENUSB_STATUS_OK	0
#define XENUSB_STATUS_NODEV	(-19)
#define XENUSB_STATUS_INVAL	(-22)
#define XENUSB_STATUS_STALL	(-32)
#define XENUSB_STATUS_IOERROR	(-71)
#define XENUSB_STATUS_BABBLE	(-75)
#define XENUSB_STATUS_SHUTDOWN	(-108)
	int32_t actual_length;	/* actual transfer length */
	int32_t error_count;	/* number of ISO errors */
};

DEFINE_RING_TYPES(xenusb_urb, struct xenusb_urb_request, struct xenusb_urb_response);
#define XENUSB_URB_RING_SIZE __CONST_RING_SIZE(xenusb_urb, XENUSB_RING_SIZE)

/*
 * RING for notifying connect/disconnect events to frontend
 */
struct xenusb_conn_request {
	uint16_t id;
};

struct xenusb_conn_response {
	uint16_t id;		/* request id */
	uint8_t portnum;	/* port number */
	uint8_t speed;		/* usb_device_speed */
#define XENUSB_SPEED_NONE	0
#define XENUSB_SPEED_LOW	1
#define XENUSB_SPEED_FULL	2
#define XENUSB_SPEED_HIGH	3
};

DEFINE_RING_TYPES(xenusb_conn, struct xenusb_conn_request, struct xenusb_conn_response);
#define XENUSB_CONN_RING_SIZE __CONST_RING_SIZE(xenusb_conn, XENUSB_RING_SIZE)

#endif /* __XEN_PUBLIC_IO_USBIF_H__ */

Annotation

Implementation Notes