linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [HACK] Give hiddev a device link in sysfs
@ 2003-12-16  0:32 Adam Kropelin
  2003-12-22 20:42 ` Greg KH
  2003-12-23  1:47 ` Adam Kropelin
  0 siblings, 2 replies; 3+ messages in thread
From: Adam Kropelin @ 2003-12-16  0:32 UTC (permalink / raw)
  To: linux-hotplug

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [HACK] Give hiddev a device link in sysfs
  2003-12-16  0:32 [HACK] Give hiddev a device link in sysfs Adam Kropelin
@ 2003-12-22 20:42 ` Greg KH
  2003-12-23  1:47 ` Adam Kropelin
  1 sibling, 0 replies; 3+ messages in thread
From: Greg KH @ 2003-12-22 20:42 UTC (permalink / raw)
  To: linux-hotplug

On Mon, Dec 15, 2003 at 07:32:35PM -0500, Adam Kropelin wrote:
> 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.

Yeah, hiddev is wierd.  It needs to dynamically allocate that interface
structure, and then a patch like this will start to make sense.  Right
now bad things can happen if you unload the hiddev module when you have
a file in sysfs open for that device.

But this patch is a start.  Care to finish it up?

thanks,

greg k-h


-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [HACK] Give hiddev a device link in sysfs
  2003-12-16  0:32 [HACK] Give hiddev a device link in sysfs Adam Kropelin
  2003-12-22 20:42 ` Greg KH
@ 2003-12-23  1:47 ` Adam Kropelin
  1 sibling, 0 replies; 3+ messages in thread
From: Adam Kropelin @ 2003-12-23  1:47 UTC (permalink / raw)
  To: linux-hotplug

Greg KH wrote:
> On Mon, Dec 15, 2003 at 07:32:35PM -0500, Adam Kropelin wrote:
>> (/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.
> 
> Yeah, hiddev is wierd.  It needs to dynamically allocate that
> interface structure, and then a patch like this will start to make
> sense.  Right now bad things can happen if you unload the hiddev
> module when you have a file in sysfs open for that device.
> 
> But this patch is a start.  Care to finish it up?

Sure...I'll have a chance to look at it after the holidays.

--Adam



-------------------------------------------------------
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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-12-23  1:47 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-12-16  0:32 [HACK] Give hiddev a device link in sysfs Adam Kropelin
2003-12-22 20:42 ` Greg KH
2003-12-23  1:47 ` Adam Kropelin

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).