linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Adam Kropelin <akropel1@rochester.rr.com>
To: linux-hotplug@vger.kernel.org
Subject: [HACK] Give hiddev a device link in sysfs
Date: Tue, 16 Dec 2003 00:32:35 +0000	[thread overview]
Message-ID: <marc-linux-hotplug-107153465903030@msgid-missing> (raw)

I have a bunch of USB interface UPSes which are managed via the hiddev
interface. Recently I've been working on setting up a dedicated server
to manage them all. I'd like to use udev to manage the device nodes so
that I can have consistent naming no matter what USB port a particular
UPS happens to be plugged into. They have unique serial numbers, so a
udev.rules LABEL entry seemed the appropriate thing to do.

It didn't work. Eventually I tracked it to a bad device link in sysfs
(/sys/class/usb/hiddevN/device). Further investigation showed that the
broken link is due to hiddev's being not-quite-a-usb-device and having a
zero kobj with no parent, etc.

I cooked up the hack-job patch below and it seems to be working. Clearly
this isn't the right solution, but it's a starting point and it solves
my immediate need.

Bearing in mind that I'm a kobj newbie, can anyone suggest what the
right approach is to solve this problem? Do we actually want to grow a
legitimate kobj for the hiddev and register it? Comments in the code
imply that hiddev could eventually be severed from usb altogether. Is
there a shorter term solution that is workable?

Thanks for you input...
--Adam


--- linux-2.6.0-test11/drivers/usb/input/hiddev.c	Fri Oct 17 23:23:08 2003
+++ linux-2.6.0-test11-bk8/drivers/usb/input/hiddev.c	Mon Dec 15 19:05:19 2003
@@ -234,6 +234,7 @@
 static void hiddev_cleanup(struct hiddev *hiddev)
 {
 	usb_deregister_dev(&hiddev->intf, &hiddev_class);
+	kobject_put(hiddev->intf.dev.kobj.parent);
 	hiddev_table[hiddev->minor] = NULL;
 	kfree(hiddev);
 }
@@ -724,6 +725,14 @@
 		return -1;
 	memset(hiddev, 0, sizeof(struct hiddev));
 
+	strcpy(hiddev->intf.dev.kobj.name, hid->dev->dev.kobj.name);
+	kobject_get(hid->dev->dev.kobj.parent);
+	hiddev->intf.dev.kobj.parent = hid->dev->dev.kobj.parent;
+	hiddev->intf.dev.kobj.kset = NULL;
+	hiddev->intf.dev.kobj.ktype = NULL;
+	hiddev->intf.dev.kobj.dentry = NULL;
+	kobject_init(&hiddev->intf.dev.kobj);
+
  	retval = usb_register_dev(&hiddev->intf, &hiddev_class);
 	if (retval) {
 		err("Not able to get a minor for this device.");



-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id\x1278&alloc_id371&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

             reply	other threads:[~2003-12-16  0:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-16  0:32 Adam Kropelin [this message]
2003-12-22 20:42 ` [HACK] Give hiddev a device link in sysfs Greg KH
2003-12-23  1:47 ` Adam Kropelin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=marc-linux-hotplug-107153465903030@msgid-missing \
    --to=akropel1@rochester.rr.com \
    --cc=linux-hotplug@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).