Hidrawとhiddevのカーネルドキュメントを読み、違いは理解していますが、デバイスを/dev/hidraw*
または/dev/usb/hiddev*
として表示するかどうかをカーネルがどのように決定するのか疑問に思っています。
これは、ドライバーごとのパラメーターとしてhid_hw_start()
/hid_connect()
に渡されます。例えば:
hid-thingm.c: err = hid_hw_start(hdev, HID_CONNECT_HIDRAW);
ほとんどのドライバーは次のようなことをしていると思います。
hid-logitech-dj.c: retval = hid_hw_start(hdev, HID_CONNECT_DEFAULT);
そして、HID_CONNECT_DEFAULT
にはHID_CONNECT_HIDRAW
が含まれます。
#define HID_CONNECT_DEFAULT (HID_CONNECT_HIDINPUT|HID_CONNECT_HIDRAW| \
HID_CONNECT_HIDDEV|HID_CONNECT_FF)
hidraw
とhiddev
の両方でまったく同じことが起こります。