brintos

brintos / linux-shallow public Read only

0
0
Text · 3.7 KiB · 73a367a Raw
153 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * Copyright (C) 2005-2007 Takahiro Hirofuchi4 */5 6#ifndef __USBIP_COMMON_H7#define __USBIP_COMMON_H8 9#include <libudev.h>10 11#include <stdint.h>12#include <stdio.h>13#include <stdlib.h>14#include <string.h>15 16#include <syslog.h>17#include <unistd.h>18#include <linux/usb/ch9.h>19#include <linux/usbip.h>20 21#ifndef USBIDS_FILE22#define USBIDS_FILE "/usr/share/hwdata/usb.ids"23#endif24 25#ifndef VHCI_STATE_PATH26#define VHCI_STATE_PATH "/var/run/vhci_hcd"27#endif28 29#define VUDC_DEVICE_DESCR_FILE "dev_desc"30 31/* kernel module names */32#define USBIP_CORE_MOD_NAME	"usbip-core"33#define USBIP_HOST_DRV_NAME	"usbip-host"34#define USBIP_DEVICE_DRV_NAME	"usbip-vudc"35#define USBIP_VHCI_DRV_NAME	"vhci_hcd"36 37/* sysfs constants */38#define SYSFS_MNT_PATH         "/sys"39#define SYSFS_BUS_NAME         "bus"40#define SYSFS_BUS_TYPE         "usb"41#define SYSFS_DRIVERS_NAME     "drivers"42 43#define SYSFS_PATH_MAX		25644#define SYSFS_BUS_ID_SIZE	3245 46/* Defines for op_code status in server/client op_common PDUs */47#define ST_OK	0x0048#define ST_NA	0x0149	/* Device requested for import is not available */50#define ST_DEV_BUSY	0x0251	/* Device requested for import is in error state */52#define ST_DEV_ERR	0x0353#define ST_NODEV	0x0454#define ST_ERROR	0x0555 56extern int usbip_use_syslog;57extern int usbip_use_stderr;58extern int usbip_use_debug ;59 60#define PROGNAME "usbip"61 62#define pr_fmt(fmt)	"%s: %s: " fmt "\n", PROGNAME63#define dbg_fmt(fmt)	pr_fmt("%s:%d:[%s] " fmt), "debug",	\64		        __FILE__, __LINE__, __func__65 66#define err(fmt, args...)						\67	do {								\68		if (usbip_use_syslog) {					\69			syslog(LOG_ERR, pr_fmt(fmt), "error", ##args);	\70		}							\71		if (usbip_use_stderr) {					\72			fprintf(stderr, pr_fmt(fmt), "error", ##args);	\73		}							\74	} while (0)75 76#define info(fmt, args...)						\77	do {								\78		if (usbip_use_syslog) {					\79			syslog(LOG_INFO, pr_fmt(fmt), "info", ##args);	\80		}							\81		if (usbip_use_stderr) {					\82			fprintf(stderr, pr_fmt(fmt), "info", ##args);	\83		}							\84	} while (0)85 86#define dbg(fmt, args...)						\87	do {								\88	if (usbip_use_debug) {						\89		if (usbip_use_syslog) {					\90			syslog(LOG_DEBUG, dbg_fmt(fmt), ##args);	\91		}							\92		if (usbip_use_stderr) {					\93			fprintf(stderr, dbg_fmt(fmt), ##args);		\94		}							\95	}								\96	} while (0)97 98#define BUG()						\99	do {						\100		err("sorry, it's a bug!");		\101		abort();				\102	} while (0)103 104struct usbip_usb_interface {105	uint8_t bInterfaceClass;106	uint8_t bInterfaceSubClass;107	uint8_t bInterfaceProtocol;108	uint8_t padding;	/* alignment */109} __attribute__((packed));110 111struct usbip_usb_device {112	char path[SYSFS_PATH_MAX];113	char busid[SYSFS_BUS_ID_SIZE];114 115	uint32_t busnum;116	uint32_t devnum;117	uint32_t speed;118 119	uint16_t idVendor;120	uint16_t idProduct;121	uint16_t bcdDevice;122 123	uint8_t bDeviceClass;124	uint8_t bDeviceSubClass;125	uint8_t bDeviceProtocol;126	uint8_t bConfigurationValue;127	uint8_t bNumConfigurations;128	uint8_t bNumInterfaces;129} __attribute__((packed));130 131#define to_string(s)	#s132 133void dump_usb_interface(struct usbip_usb_interface *);134void dump_usb_device(struct usbip_usb_device *);135int read_usb_device(struct udev_device *sdev, struct usbip_usb_device *udev);136int read_attr_value(struct udev_device *dev, const char *name,137		    const char *format);138int read_usb_interface(struct usbip_usb_device *udev, int i,139		       struct usbip_usb_interface *uinf);140 141const char *usbip_speed_string(int num);142const char *usbip_status_string(int32_t status);143const char *usbip_op_common_status_string(int status);144 145int usbip_names_init(char *);146void usbip_names_free(void);147void usbip_names_get_product(char *buff, size_t size, uint16_t vendor,148			     uint16_t product);149void usbip_names_get_class(char *buff, size_t size, uint8_t class,150			   uint8_t subclass, uint8_t protocol);151 152#endif /* __USBIP_COMMON_H */153