浅析/dev/hidraw0对应的fops操作集-hid设备控制的唯一入口
对于hid设备的完全裸露控制,节点/dev/hidraw0是唯一的入口[luther.gliethttp].
hidraw_init
==> alloc_chrdev_region(&dev_id, HIDRAW_FIRST_MINOR, HIDRAW_MAX_DEVICES, "hidraw"); // 动态获取一个major主设备号[luther.gliethttp]
==> cdev_init(&hidraw_cdev, &hidraw_ops); // /dev/hidraw0...对应的fops方法集
==> cdev_add(&hidraw_cdev, dev_id, HIDRAW_MAX_DEVICES); // 添加到chr数组中,等待open引用
static const struct file_operations hidraw_ops = {
.owner = THIS_MODULE,
.read = hidraw_read, // 获取hid设备的raw数据[luther.gliethttp]
.write = hidraw_write, // 向hid设备直接写入raw数据[luther.gliethttp]
.poll = hidraw_pol