#ifndef __USBIP_COMMON_H
#define __USBIP_COMMON_H
#include <linux/compiler.h>
#include <linux/device.h>
#include <linux/interrupt.h>
#include <linux/net.h>
#include <linux/printk.h>
#include <linux/spinlock.h>
#include <linux/types.h>
#include <linux/usb.h>
#include <linux/wait.h>
#include <linux/sched/task.h>
#include <linux/kcov.h>
#include <uapi/linux/usbip.h>
#undef pr_fmt
#ifdef DEBUG
#define pr_fmt(fmt) …
#else
#define pr_fmt …
#endif
enum { … };
#define usbip_dbg_flag_xmit …
#define usbip_dbg_flag_vhci_rh …
#define usbip_dbg_flag_vhci_hc …
#define usbip_dbg_flag_vhci_rx …
#define usbip_dbg_flag_vhci_tx …
#define usbip_dbg_flag_stub_rx …
#define usbip_dbg_flag_stub_tx …
#define usbip_dbg_flag_vhci_sysfs …
extern unsigned long usbip_debug_flag;
extern struct device_attribute dev_attr_usbip_debug;
#define usbip_dbg_with_flag(flag, fmt, args...) …
#define usbip_dbg_sysfs(fmt, args...) …
#define usbip_dbg_xmit(fmt, args...) …
#define usbip_dbg_urb(fmt, args...) …
#define usbip_dbg_eh(fmt, args...) …
#define usbip_dbg_vhci_rh(fmt, args...) …
#define usbip_dbg_vhci_hc(fmt, args...) …
#define usbip_dbg_vhci_rx(fmt, args...) …
#define usbip_dbg_vhci_tx(fmt, args...) …
#define usbip_dbg_vhci_sysfs(fmt, args...) …
#define usbip_dbg_stub_cmp(fmt, args...) …
#define usbip_dbg_stub_rx(fmt, args...) …
#define usbip_dbg_stub_tx(fmt, args...) …
#define USBIP_CMD_SUBMIT …
#define USBIP_CMD_UNLINK …
#define USBIP_RET_SUBMIT …
#define USBIP_RET_UNLINK …
#define USBIP_DIR_OUT …
#define USBIP_DIR_IN …
#define USBIP_MAX_ISO_PACKETS …
struct usbip_header_basic { … } __packed;
struct usbip_header_cmd_submit { … } __packed;
struct usbip_header_ret_submit { … } __packed;
struct usbip_header_cmd_unlink { … } __packed;
struct usbip_header_ret_unlink { … } __packed;
struct usbip_header { … } __packed;
struct usbip_iso_packet_descriptor { … } __packed;
enum usbip_side { … };
#define USBIP_EH_SHUTDOWN …
#define USBIP_EH_BYE …
#define USBIP_EH_RESET …
#define USBIP_EH_UNUSABLE …
#define SDEV_EVENT_REMOVED …
#define SDEV_EVENT_DOWN …
#define SDEV_EVENT_ERROR_TCP …
#define SDEV_EVENT_ERROR_SUBMIT …
#define SDEV_EVENT_ERROR_MALLOC …
#define VUDC_EVENT_REMOVED …
#define VUDC_EVENT_DOWN …
#define VUDC_EVENT_ERROR_TCP …
#define VUDC_EVENT_ERROR_USB …
#define VUDC_EVENT_ERROR_MALLOC …
#define VDEV_EVENT_REMOVED …
#define VDEV_EVENT_DOWN …
#define VDEV_EVENT_ERROR_TCP …
#define VDEV_EVENT_ERROR_MALLOC …
struct usbip_device { … };
#define kthread_get_run(threadfn, data, namefmt, ...) …
void usbip_dump_urb(struct urb *purb);
void usbip_dump_header(struct usbip_header *pdu);
int usbip_recv(struct socket *sock, void *buf, int size);
void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd,
int pack);
void usbip_header_correct_endian(struct usbip_header *pdu, int send);
struct usbip_iso_packet_descriptor*
usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen);
int usbip_recv_iso(struct usbip_device *ud, struct urb *urb);
void usbip_pad_iso(struct usbip_device *ud, struct urb *urb);
int usbip_recv_xbuff(struct usbip_device *ud, struct urb *urb);
int usbip_init_eh(void);
void usbip_finish_eh(void);
int usbip_start_eh(struct usbip_device *ud);
void usbip_stop_eh(struct usbip_device *ud);
void usbip_event_add(struct usbip_device *ud, unsigned long event);
int usbip_event_happened(struct usbip_device *ud);
int usbip_in_eh(struct task_struct *task);
static inline int interface_to_busnum(struct usb_interface *interface)
{ … }
static inline int interface_to_devnum(struct usb_interface *interface)
{ … }
#ifdef CONFIG_KCOV
static inline void usbip_kcov_handle_init(struct usbip_device *ud)
{ … }
static inline void usbip_kcov_remote_start(struct usbip_device *ud)
{ … }
static inline void usbip_kcov_remote_stop(void)
{ … }
#else
static inline void usbip_kcov_handle_init(struct usbip_device *ud) { }
static inline void usbip_kcov_remote_start(struct usbip_device *ud) { }
static inline void usbip_kcov_remote_stop(void) { }
#endif
#endif