virtual device: android_usb
首先来看 drivers/usb/gadget/android.c。
init() 创建了虚拟设备 /sys/devices/virtual/android_usb/.
static int __init init(void)
{
struct android_dev *dev;
int err;
android_class = class_create(THIS_MODULE, "android_usb");
if (IS_ERR(android_class))
return PTR_ERR(android_class);
}
其中,指定了 Google usb 的缺省信息:
static const char longname[] = "Gadget Android";
/* Default vendor and product IDs, overridden by userspace */
#define VENDOR_ID 0x18D1
#define PRODUCT_ID 0x0001
定义了一个非常重要的 android_usb_function 数据结构。
struct android_usb_function {
char *name;
void *config;
struct device *dev;
char *dev_name;
struct device_attribute **attributes;
/* for android_dev.enabled_functions */
struct list_head enable