Skip to contentSkip to conversation

psaux and udev/sysfs

DISCUSSION Michael Gruner 2 participants 6 messages Nov 26, 2003 – Dec 4, 2003 Char and misc drivers

lore
Share & tools
lore
#0 lore raw

Hello out there,

tryed to test udev on my gentoo box and hey i got it running up to login-prompt.

Tryed to start my X but there was no /dev/psaux and no /dev/agpgart. agpgart i could find within my /sys dir. But there was no psaux there.

What should my udev.config look like to get my mouse to /dev/mouse and my intel-agpgart to /dev/agpgart ?

udev-version installed 006

thanks

michael gruner

__________________________________________________________________

Gesendet von Yahoo! Mail - http://mail.yahoo.de
Logos und Klingeltöne fürs Handy bei http://sms.yahoo.de

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#1 lore raw
Quoted 11 lines · Michael Gruner

Hello out there,

tryed to test udev on my gentoo box and hey i got it running up to login-prompt.

Tryed to start my X but there was no /dev/psaux and no /dev/agpgart. agpgart i could find within my /sys dir. But there was no psaux there.

What should my udev.config look like to get my mouse to /dev/mouse and my intel-agpgart to /dev/agpgart ?

You need to patch your kernel with the misc sysfs patch I posted to lkml a few weeks ago to get psaux support.

Where in /sys does the agpgart directory show up?

thanks,

greg k-h

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#2 lore raw
In reply to Michael Gruner

--- Greg KH <[email protected]> schrieb: >

Quoted 8 lines
Quoted 1 line

Tryed to start my X but there was no /dev/psaux

and no

Quoted 1 line

/dev/agpgart. agpgart i could find within my /sys

dir.

Quoted 3 lines

But there was no psaux there.

What should my udev.config look like to get my

mouse

Quoted 9 lines
Quoted 1 line

to /dev/mouse and my intel-agpgart to /dev/agpgart

?

You need to patch your kernel with the misc sysfs
patch I posted to lkml
a few weeks ago to get psaux support.

Where in /sys does the agpgart directory show up?

Ok, here we go.

agpgart is located here:

mgruner@mobile sys >find |grep agpgart
./bus/pci/drivers/agpgart-intel
./bus/pci/drivers/agpgart-intel/new_id
./bus/pci/drivers/agpgart-intel/0000:00:00.0

Ok, i thought i could use this to get a /dev/agpgart

REPLACE, KERNEL_NAME="psaux", NAME="mouse"
NUMBER, BUS="pci", ID="00:00.0", NAME="agpgart"

but nothing happend.

Maybe I'm kinda blind but searching the patch you mentioned I had no sucess :-(. Could you please point me to right direction?

thanks,

Michael Gruner

__________________________________________________________________

Gesendet von Yahoo! Mail - http://mail.yahoo.de
Logos und Klingeltöne fürs Handy bei http://sms.yahoo.de

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#3 lore raw
In reply to Michael Gruner
Quoted 20 lines · Michael Gruner

--- Greg KH <[email protected]> schrieb: >

Quoted 8 lines
Quoted 1 line

Tryed to start my X but there was no /dev/psaux

and no

Quoted 1 line

/dev/agpgart. agpgart i could find within my /sys

dir.

Quoted 3 lines

But there was no psaux there.

What should my udev.config look like to get my

mouse

Quoted 9 lines
Quoted 1 line

to /dev/mouse and my intel-agpgart to /dev/agpgart

?

You need to patch your kernel with the misc sysfs
patch I posted to lkml
a few weeks ago to get psaux support.

Where in /sys does the agpgart directory show up?

Ok, here we go.

Quoted 8 lines

agpgart is located here:

mgruner@mobile sys >find |grep agpgart
./bus/pci/drivers/agpgart-intel
./bus/pci/drivers/agpgart-intel/new_id
./bus/pci/drivers/agpgart-intel/0000:00:00.0

Ok, i thought i could use this to get a /dev/agpgart

No, you need a location in sysfs that has a file called "dev" in order for udev to work. agpgart uses the misc char interface, so you will need the patch posted to lkml that adds sysfs support to that part of the kernel in order for agpgart to work with udev.

Quoted 8 lines

REPLACE, KERNEL_NAME="psaux", NAME="mouse"
NUMBER, BUS="pci", ID="00:00.0", NAME="agpgart"

but nothing happend.

Maybe I'm kinda blind but searching the patch you mentioned I had no sucess :-(. Could you please point me to right direction?

Here's the patch against 2.6.0-test11.

thanks,

greg k-h

drivers/char/misc.c +89 -1
@@ -47,7 +47,7 @@
 #include <linux/devfs_fs_kernel.h>
 #include <linux/stat.h>
 #include <linux/init.h>
-
+#include <linux/device.h>
 #include <linux/tty.h>
 #include <linux/kmod.h>
 
@@ -180,6 +180,91 @@
 	return err;
 }
 
+/* Misc class implementation */
+
+/* 
+ * TODO for 2.7:
+ *  - add a struct class_device to struct miscdevice and make all usages of
+ *    them dynamic.  This will let us get rid of struct misc_dev below.
+ */
+struct misc_dev {
+	struct list_head node;
+	dev_t dev;
+	struct class_device class_dev;
+};
+#define to_misc_dev(d) container_of(d, struct misc_dev, class_dev)
+
+static LIST_HEAD(misc_dev_list);
+static spinlock_t misc_dev_list_lock = SPIN_LOCK_UNLOCKED;
+
+static void release_misc_dev(struct class_device *class_dev)
+{
+	struct misc_dev *misc_dev = to_misc_dev(class_dev);
+	kfree(misc_dev);
+}
+
+static struct class misc_class = {
+	.name		= "misc",
+	.release	= &release_misc_dev,
+};
+
+static ssize_t show_dev(struct class_device *class_dev, char *buf)
+{
+	struct misc_dev *misc_dev = to_misc_dev(class_dev);
+	return print_dev_t(buf, misc_dev->dev);
+}
+static CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, NULL);
+
+static void misc_add_class_device(struct miscdevice *misc)
+{
+	struct misc_dev *misc_dev = NULL;
+	int retval;
+
+	misc_dev = kmalloc(sizeof(*misc_dev), GFP_KERNEL);
+	if (!misc_dev)
+		return;
+	memset(misc_dev, 0x00, sizeof(*misc_dev));
+
+	misc_dev->dev = MKDEV(MISC_MAJOR, misc->minor);
+	misc_dev->class_dev.dev = misc->dev;
+	misc_dev->class_dev.class = &misc_class;
+	snprintf(misc_dev->class_dev.class_id, BUS_ID_SIZE, "%s", misc->name);
+	retval = class_device_register(&misc_dev->class_dev);
+	if (retval)
+		goto error;
+	class_device_create_file(&misc_dev->class_dev, &class_device_attr_dev);
+	spin_lock(&misc_dev_list_lock);
+	list_add(&misc_dev->node, &misc_dev_list);
+	spin_unlock(&misc_dev_list_lock);
+	return;
+error:
+	kfree(misc_dev);
+}
+
+static void misc_remove_class_device(struct miscdevice *misc)
+{
+	struct misc_dev *misc_dev = NULL;
+	struct list_head *tmp;
+	int found = 0;
+
+	spin_lock(&misc_dev_list_lock);
+	list_for_each(tmp, &misc_dev_list) {
+		misc_dev = list_entry(tmp, struct misc_dev, node);
+		if ((MINOR(misc_dev->dev) = misc->minor)) {
+			found = 1;
+			break;
+		}
+	}
+	if (found) {
+		list_del(&misc_dev->node);
+		spin_unlock(&misc_dev_list_lock);
+		class_device_unregister(&misc_dev->class_dev);
+	} else {
+		spin_unlock(&misc_dev_list_lock);
+	}
+}
+
+
 static struct file_operations misc_fops = {
 	.owner		= THIS_MODULE,
 	.open		= misc_open,
@@ -236,6 +321,7 @@
 
 	devfs_mk_cdev(MKDEV(MISC_MAJOR, misc->minor),
 			S_IFCHR|S_IRUSR|S_IWUSR|S_IRGRP, misc->devfs_name);
+	misc_add_class_device(misc);
 
 	/*
 	 * Add it to the front, so that later devices can "override"
@@ -265,6 +351,7 @@
 
 	down(&misc_sem);
 	list_del(&misc->list);
+	misc_remove_class_device(misc);
 	devfs_remove(misc->devfs_name);
 	if (i < DYNAMIC_MINORS && i>0) {
 		misc_minors[i>>3] &= ~(1 << (misc->minor & 7));
@@ -285,6 +372,7 @@
 	if (ent)
 		ent->proc_fops = &misc_proc_fops;
 #endif
+	class_register(&misc_class);
 #ifdef CONFIG_MVME16x
 	rtc_MK48T08_init();
 #endif
include/linux/miscdevice.h +3 -0
@@ -36,12 +36,15 @@
 
 #define TUN_MINOR	     200
 
+struct device;
+
 struct miscdevice 
 {
 	int minor;
 	const char *name;
 	struct file_operations *fops;
 	struct list_head list;
+	struct device *dev;
 	char devfs_name[64];
 };
 

-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#4 lore raw
In reply to Michael Gruner

--- Greg KH <[email protected]> schrieb: > On Thu, Nov
27, 2003 at 10:27:57PM +0100, Michael

Quoted 2 lines

Here's the patch against 2.6.0-test11.

Sorry for asking a stupid question again here. I'm working on a gentoo box and I'm in contact to the gentoo-dev-sources maintainers for adding some patches to that sources including a better udev support. Does anybody know a source i can find all the patches that make the agpgart or ps2 etc. devs shown up in sysfs?

thank you

Michael

__________________________________________________________________

Gesendet von Yahoo! Mail - http://mail.yahoo.de
Logos und Klingeltöne fürs Handy bei http://sms.yahoo.de

-------------------------------------------------------
This SF.net email is sponsored by OSDN's Audience Survey. Help shape OSDN's sites and tell us what you think. Take this five minute survey and you could win a $250 Gift Certificate.
http://www.wrgsurveys.com/2003/osdntech03.php?site=8
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#5 lore raw
In reply to Michael Gruner
Quoted 10 lines · Michael Gruner

--- Greg KH <[email protected]> schrieb: > On Thu, Nov
27, 2003 at 10:27:57PM +0100, Michael

Quoted 2 lines

Here's the patch against 2.6.0-test11.

Sorry for asking a stupid question again here. I'm working on a gentoo box and I'm in contact to the gentoo-dev-sources maintainers for adding some patches to that sources including a better udev support. Does anybody know a source i can find all the patches that make the agpgart or ps2 etc. devs shown up in sysfs?

The patch in the message you responded to will do that :)

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_id78&alloc_id371&op=click
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel