<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">Subject: [PATCH] add sysfs class support for misc devices [05/10]

This adds class/misc/ for all misc devices (ones that use the
misc_register() function).

diff -Nru a/drivers/char/misc.c b/drivers/char/misc.c
--- a/drivers/char/misc.c	Thu Jan 15 11:05:56 2004
+++ b/drivers/char/misc.c	Thu Jan 15 11:05:56 2004
@@ -47,7 +47,7 @@
 #include &lt;linux/devfs_fs_kernel.h&gt;
 #include &lt;linux/stat.h&gt;
 #include &lt;linux/init.h&gt;
-
+#include &lt;linux/device.h&gt;
 #include &lt;linux/tty.h&gt;
 #include &lt;linux/kmod.h&gt;
 
@@ -180,6 +180,13 @@
 	return err;
 }
 
+/* 
+ * TODO for 2.7:
+ *  - add a struct class_device to struct miscdevice and make all usages of
+ *    them dynamic.
+ */
+static struct class_simple *misc_class;
+
 static struct file_operations misc_fops = {
 	.owner		= THIS_MODULE,
 	.open		= misc_open,
@@ -234,6 +241,8 @@
 				"misc/%s", misc-&gt;name);
 	}
 
+	class_simple_device_add(misc_class, MKDEV(MISC_MAJOR, misc-&gt;minor),
+				misc-&gt;dev, misc-&gt;name);
 	devfs_mk_cdev(MKDEV(MISC_MAJOR, misc-&gt;minor),
 			S_IFCHR|S_IRUSR|S_IWUSR|S_IRGRP, misc-&gt;devfs_name);
 
@@ -265,6 +274,7 @@
 
 	down(&amp;misc_sem);
 	list_del(&amp;misc-&gt;list);
+	class_simple_device_remove(MKDEV(MISC_MAJOR, misc-&gt;minor));
 	devfs_remove(misc-&gt;devfs_name);
 	if (i &lt; DYNAMIC_MINORS &amp;&amp; i&gt;0) {
 		misc_minors[i&gt;&gt;3] &amp;= ~(1 &lt;&lt; (misc-&gt;minor &amp; 7));
@@ -285,6 +295,9 @@
 	if (ent)
 		ent-&gt;proc_fops = &amp;misc_proc_fops;
 #endif
+	misc_class = class_simple_create(THIS_MODULE, "misc");
+	if (IS_ERR(misc_class))
+		return PTR_ERR(misc_class);
 #ifdef CONFIG_MVME16x
 	rtc_MK48T08_init();
 #endif
@@ -319,4 +332,4 @@
 	}
 	return 0;
 }
-module_init(misc_init);
+subsys_initcall(misc_init);
diff -Nru a/include/linux/miscdevice.h b/include/linux/miscdevice.h
--- a/include/linux/miscdevice.h	Thu Jan 15 11:05:53 2004
+++ b/include/linux/miscdevice.h	Thu Jan 15 11:05:53 2004
@@ -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];
 };
 
</pre></body></html>