Messages in this thread | | | Date | Fri, 20 May 2005 08:00:28 -0500 | From | Corey Minyard <> | Subject | Re: [PATCH] Add sysfs support for the IPMI device interface |
| |
Philipp Matthias Hahn wrote:
> > >What happend to Dimitry Torokovs comment in >http://marc.theaimsgroup.com/?l=linux-kernel&m=111232712029756&w=2 >and your reply in >http://marc.theaimsgroup.com/?l=linux-kernel&m=111232954415119&w=2 >According to linux/device.h:250, class_simple_device_add() has a >printf() like argument, so you don't need to snprintf() the name on your >own. > > Thank you. My stupid mailer ate the tabs, and you fixed that, too. This looks good to go in.
-Corey
>Add support for sysfs to the IPMI device interface. > >Signed-off-by: Corey Minyard <minyard@acm.org> >Signed-off-by: Philipp Hahn <pmhahn@titan.lahn.de> > >Index: linux-2.6.12-rc1/drivers/char/ipmi/ipmi_devintf.c >=================================================================== >--- linux-2.6.12-rc1.orig/drivers/char/ipmi/ipmi_devintf.c >+++ linux-2.6.12-rc1/drivers/char/ipmi/ipmi_devintf.c >@@ -44,6 +44,7 @@ > #include <linux/ipmi.h> > #include <asm/semaphore.h> > #include <linux/init.h> >+#include <linux/device.h> > > #define IPMI_DEVINTF_VERSION "v33" > >@@ -519,15 +520,21 @@ > " interface. Other values will set the major device number" > " to that value."); > >+static struct class *ipmi_class; >+ > static void ipmi_new_smi(int if_num) > { >- devfs_mk_cdev(MKDEV(ipmi_major, if_num), >- S_IFCHR | S_IRUSR | S_IWUSR, >+ dev_t dev = MKDEV(ipmi_major, if_num); >+ >+ devfs_mk_cdev(dev, S_IFCHR | S_IRUSR | S_IWUSR, > "ipmidev/%d", if_num); >+ >+ class_simple_device_add(ipmi_class, dev, NULL, "ipmi%d", if_num); > } > > static void ipmi_smi_gone(int if_num) > { >+ class_simple_device_remove(ipmi_class, MKDEV(ipmi_major, if_num)); > devfs_remove("ipmidev/%d", if_num); > } > >@@ -548,8 +555,15 @@ > printk(KERN_INFO "ipmi device interface version " > IPMI_DEVINTF_VERSION "\n"); > >+ ipmi_class = class_simple_create(THIS_MODULE, "ipmi"); >+ if (IS_ERR(ipmi_class)) { >+ printk(KERN_ERR "ipmi: can't register device class\n"); >+ return PTR_ERR(ipmi_class); >+ } >+ > rv = register_chrdev(ipmi_major, DEVICE_NAME, &ipmi_fops); > if (rv < 0) { >+ class_simple_destroy(ipmi_class); > printk(KERN_ERR "ipmi: can't get major %d\n", ipmi_major); > return rv; > } >@@ -563,6 +577,7 @@ > rv = ipmi_smi_watcher_register(&smi_watcher); > if (rv) { > unregister_chrdev(ipmi_major, DEVICE_NAME); >+ class_simple_destroy(ipmi_class); > printk(KERN_WARNING "ipmi: can't register smi watcher\n"); > return rv; > } >@@ -573,6 +588,7 @@ > > static __exit void cleanup_ipmi(void) > { >+ class_simple_destroy(ipmi_class); > ipmi_smi_watcher_unregister(&smi_watcher); > devfs_remove(DEVICE_NAME); > unregister_chrdev(ipmi_major, DEVICE_NAME); > >BYtE >Philipp > >
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |