Tôi đã đọc tài liệu kernel cho hidraw và hiddev và tôi hiểu sự khác biệt, nhưng tôi tự hỏi làm thế nào kernel quyết định liệu một thiết bị có hiển thị /dev/hidraw*
hay không/dev/usb/hiddev*
Tôi đã đọc tài liệu kernel cho hidraw và hiddev và tôi hiểu sự khác biệt, nhưng tôi tự hỏi làm thế nào kernel quyết định liệu một thiết bị có hiển thị /dev/hidraw*
hay không/dev/usb/hiddev*
Câu trả lời:
Nó được truyền dưới dạng tham số cho mỗi trình điều khiển tới hid_hw_start()
/ hid_connect()
. Ví dụ:
hid-thingm.c: err = hid_hw_start(hdev, HID_CONNECT_HIDRAW);
Tôi đoán rằng hầu hết các trình điều khiển làm một cái gì đó như thế này:
hid-logitech-dj.c: retval = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
Và HID_CONNECT_DEFAULT
bao gồm HID_CONNECT_HIDRAW
:
#define HID_CONNECT_DEFAULT (HID_CONNECT_HIDINPUT|HID_CONNECT_HIDRAW| \
HID_CONNECT_HIDDEV|HID_CONNECT_FF)
Điều tương tự chính xác xảy ra cho cả hai hidraw
và hiddev
.