2017-03-02 23:13 GMT+09:00 Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx>: > On Mar 02 2017 or thereabouts, Jaejoong Kim wrote: >> The hid-core announces kernel message which driver is loaded if there is >> a hiddev, but hiddev's minor number is always zero even though it's not >> zero. >> >> So, we need to store the minor number asked from usb core and do some >> refactoring work(move from hiddev.c to hiddev.h) to access hiddev in >> hid-core. >> >> Signed-off-by: Jaejoong Kim <climbbb.kim@xxxxxxxxx> >> --- >> drivers/hid/hid-core.c | 2 +- >> drivers/hid/usbhid/hiddev.c | 26 +++----------------------- >> include/linux/hiddev.h | 24 ++++++++++++++++++++++++ >> 3 files changed, 28 insertions(+), 24 deletions(-) >> >> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c >> index e9e87d3..1a0b910 100644 >> --- a/drivers/hid/hid-core.c >> +++ b/drivers/hid/hid-core.c >> @@ -1695,7 +1695,7 @@ int hid_connect(struct hid_device *hdev, unsigned int connect_mask) >> len += sprintf(buf + len, "input"); >> if (hdev->claimed & HID_CLAIMED_HIDDEV) >> len += sprintf(buf + len, "%shiddev%d", len ? "," : "", >> - hdev->minor); >> + ((struct hiddev *)hdev->hiddev)->minor); >> if (hdev->claimed & HID_CLAIMED_HIDRAW) >> len += sprintf(buf + len, "%shidraw%d", len ? "," : "", >> ((struct hidraw *)hdev->hidraw)->minor); >> diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c >> index 5c2c489..ef83d68 100644 >> --- a/drivers/hid/usbhid/hiddev.c >> +++ b/drivers/hid/usbhid/hiddev.c >> @@ -44,29 +44,6 @@ >> #define HIDDEV_MINOR_BASE 96 >> #define HIDDEV_MINORS 16 >> #endif >> -#define HIDDEV_BUFFER_SIZE 2048 >> - >> -struct hiddev { >> - int minor; >> - int exist; >> - int open; >> - struct mutex existancelock; >> - wait_queue_head_t wait; >> - struct hid_device *hid; >> - struct list_head list; >> - spinlock_t list_lock; >> -}; >> - >> -struct hiddev_list { >> - struct hiddev_usage_ref buffer[HIDDEV_BUFFER_SIZE]; >> - int head; >> - int tail; >> - unsigned flags; >> - struct fasync_struct *fasync; >> - struct hiddev *hiddev; >> - struct list_head node; >> - struct mutex thread_lock; >> -}; >> >> /* >> * Find a report, given the report's type and ID. The ID can be specified >> @@ -911,6 +888,9 @@ int hiddev_connect(struct hid_device *hid, unsigned int force) >> kfree(hiddev); >> return -1; >> } >> + >> + hiddev->minor = usbhid->intf->minor; >> + >> return 0; >> } >> >> diff --git a/include/linux/hiddev.h b/include/linux/hiddev.h >> index a5dd814..ff3701b 100644 >> --- a/include/linux/hiddev.h >> +++ b/include/linux/hiddev.h >> @@ -32,6 +32,30 @@ >> * In-kernel definitions. >> */ >> >> +#define HIDDEV_BUFFER_SIZE 2048 >> + >> +struct hiddev { >> + int minor; >> + int exist; >> + int open; >> + struct mutex existancelock; >> + wait_queue_head_t wait; >> + struct hid_device *hid; >> + struct list_head list; >> + spinlock_t list_lock; >> +}; >> + >> +struct hiddev_list { >> + struct hiddev_usage_ref buffer[HIDDEV_BUFFER_SIZE]; >> + int head; >> + int tail; >> + unsigned flags; >> + struct fasync_struct *fasync; >> + struct hiddev *hiddev; >> + struct list_head node; >> + struct mutex thread_lock; >> +}; > > Why do you need to also export struct hiddev_list? Unless I am missing > something we don't need it elsewhere but in hiddev.c, and so there is no > point exporting this struct to the world. You're right. I will export only struct hiddev. > > With this change amended, the end result looks good and the series > should be ready to be integrated IMO. > I will resend v2 patchset your said. Thanks, jaejoong > Cheers, > Benjamin > >> + >> struct hid_device; >> struct hid_usage; >> struct hid_field; >> -- >> 2.7.4 >> -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html