devfs
[Top] [All Lists]

[PATCH] port of msr to devfs

To: hpa@xxxxxxxxx
Subject: [PATCH] port of msr to devfs
From: Duncan Sands <sands@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 19 Mar 2001 18:12:43 +0100
Cc: devfs@xxxxxxxxxxx
Sender: owner-devfs@xxxxxxxxxxx
User-agent: Mutt/1.3.15i
I ported msr for kernel version 2.4.2 to devfs.  It now creates
the /dev/cpu/%d/msr devices.  The changes are straightforward.

Duncan Sands.

--- arch/i386/kernel/msr.c.orig Mon Mar 19 18:10:12 2001
+++ arch/i386/kernel/msr.c      Mon Mar 19 16:13:17 2001
@@ -34,12 +34,15 @@
 #include <linux/poll.h>
 #include <linux/smp.h>
 #include <linux/major.h>
+#include <linux/devfs_fs_kernel.h>
 
 #include <asm/processor.h>
 #include <asm/msr.h>
 #include <asm/uaccess.h>
 #include <asm/system.h>
 
+static devfs_handle_t dir_handle;      /*  For the directory */
+
 /* Note: "err" is handled in a funny way below.  Otherwise one version
    of gcc or another breaks. */
 
@@ -250,18 +253,37 @@
 
 int __init msr_init(void)
 {
-  if (register_chrdev(MSR_MAJOR, "cpu/msr", &msr_fops)) {
+  if (devfs_register_chrdev(MSR_MAJOR, "cpu/msr", &msr_fops)) {
     printk(KERN_ERR "msr: unable to get major %d for msr\n",
           MSR_MAJOR);
     return -EBUSY;
   }
   
+  dir_handle = devfs_mk_dir(NULL, "cpu", NULL);
+  devfs_register_series (dir_handle, "%u/msr", smp_num_cpus, DEVFS_FL_DEFAULT,
+                         MSR_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR |
+                         S_IRGRP | S_IROTH, &msr_fops, NULL);
+
   return 0;
 }
 
 void __exit msr_exit(void)
 {
-  unregister_chrdev(MSR_MAJOR, "cpu/msr");
+  char devname[16];
+  devfs_handle_t handle;
+  unsigned int minor;
+
+#ifdef CONFIG_DEVFS_FS
+  for (minor=0; minor < smp_num_cpus; ++minor)
+  {
+    sprintf (devname, "%u/msr", minor);
+    handle = devfs_find_handle(dir_handle, devname, MSR_MAJOR, minor,
+                               DEVFS_SPECIAL_CHR, 0);
+    devfs_unregister(handle);
+  }
+#endif /* CONFIG_DEVFS_FS */
+
+  devfs_unregister_chrdev(MSR_MAJOR, "cpu/msr");
 }
 
 module_init(msr_init);

<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH] port of msr to devfs, Duncan Sands <=