All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, linux-hotplug-devel@lists.sourceforge.net
Subject: [PATCH] add sysfs mem device support  [2/4]
Date: Mon, 22 Dec 2003 16:26:09 -0800	[thread overview]
Message-ID: <20031223002609.GC4805@kroah.com> (raw)
In-Reply-To: <20031223002439.GB4805@kroah.com>

This adds /sys/class/mem which enables all mem char devices to show up
properly in udev.

Has been posted to linux-kernel every so often since last July, and
acked by a number of other kernel developers.


diff -Nru a/drivers/char/mem.c b/drivers/char/mem.c
--- a/drivers/char/mem.c	Mon Dec 22 16:02:08 2003
+++ b/drivers/char/mem.c	Mon Dec 22 16:02:08 2003
@@ -24,6 +24,7 @@
 #include <linux/smp_lock.h>
 #include <linux/devfs_fs_kernel.h>
 #include <linux/ptrace.h>
+#include <linux/device.h>
 
 #include <asm/uaccess.h>
 #include <asm/io.h>
@@ -657,7 +658,7 @@
 	.open		= memory_open,	/* just a selector for the real open */
 };
 
-static const struct {
+static const struct mem_dev {
 	unsigned int		minor;
 	char			*name;
 	umode_t			mode;
@@ -676,6 +677,23 @@
 	{11,"kmsg",    S_IRUGO | S_IWUSR,           &kmsg_fops},
 };
 
+static void release_mem_dev(struct class_device *class_dev)
+{
+	kfree(class_dev);
+}
+
+static struct class mem_class = {
+	.name		= "mem",
+	.release	= &release_mem_dev,
+};
+
+static ssize_t show_dev(struct class_device *class_dev, char *buf)
+{
+	struct mem_dev *mem_dev = class_get_devdata(class_dev);
+	return print_dev_t(buf, MKDEV(MEM_MAJOR, mem_dev->minor));
+}
+static CLASS_DEVICE_ATTR(dev, S_IRUGO, show_dev, NULL);
+
 static int __init chr_dev_init(void)
 {
 	int i;
@@ -683,7 +701,20 @@
 	if (register_chrdev(MEM_MAJOR,"mem",&memory_fops))
 		printk("unable to get major %d for memory devs\n", MEM_MAJOR);
 
+	class_register(&mem_class);
 	for (i = 0; i < ARRAY_SIZE(devlist); i++) {
+		struct class_device *class_dev;
+
+		class_dev = kmalloc(sizeof(*class_dev), GFP_KERNEL);
+		if (class_dev) {
+			memset(class_dev, 0x00, sizeof(*class_dev));
+			class_dev->class = &mem_class;
+			strncpy(class_dev->class_id, devlist[i].name, BUS_ID_SIZE);
+			class_set_devdata(class_dev, (void *)&devlist[i]);
+			if (!class_device_register(class_dev));
+				class_device_create_file(class_dev, &class_device_attr_dev);
+		}
+
 		devfs_mk_cdev(MKDEV(MEM_MAJOR, devlist[i].minor),
 				S_IFCHR | devlist[i].mode, devlist[i].name);
 	}

  reply	other threads:[~2003-12-23  0:31 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-23  0:21 [PATCH] some sysfs patches for 2.6.0 [0/4] Greg KH
2003-12-23  0:24 ` [PATCH] fix sysfs oops [1/4] Greg KH
2003-12-23  0:26   ` Greg KH [this message]
2003-12-23  0:28     ` [PATCH] add sysfs misc device support [3/4] Greg KH
2003-12-23  0:28       ` [PATCH] add sysfs vc device support [4/4] Greg KH
2003-12-23 13:17         ` Christoph Hellwig
2003-12-23  0:29       ` [PATCH] add sysfs misc device support [3/4] Greg KH
2003-12-23 13:16       ` Christoph Hellwig
2003-12-23 13:15     ` [PATCH] add sysfs mem device support [2/4] Christoph Hellwig
2003-12-23 15:31       ` Rob Love
2003-12-23 16:07         ` Rob Love
2003-12-23 16:39         ` Christoph Hellwig
2003-12-23 17:56           ` Rob Love
2003-12-23 20:00           ` Stephan Maciej
2003-12-23 20:33             ` viro
2003-12-25 17:48           ` Andreas Jellinghaus
2003-12-25 18:45             ` Christoph Hellwig
2003-12-25 19:41               ` Martin Schlemmer
2003-12-25 20:57                 ` Martin J. Bligh
2003-12-25 22:02                   ` Martin Schlemmer
2003-12-26 16:19                 ` Christoph Hellwig
2003-12-26 16:54                   ` Tomasz Torcz
2003-12-26 20:18                     ` Martin Schlemmer
2003-12-23 18:01       ` Greg KH
2003-12-23 19:16         ` Christoph Hellwig
2003-12-23 19:19           ` Rob Love
2003-12-23 19:22             ` Christoph Hellwig
2003-12-23 19:25               ` Rob Love
2003-12-23 19:42                 ` Jeff Garzik
2003-12-23 19:45                   ` Rob Love
2003-12-23 19:24             ` viro
2003-12-23 19:28               ` Rob Love
2003-12-23 11:07 ` [PATCH] some sysfs patches for 2.6.0 [0/4] Andreas Jellinghaus
2003-12-23 23:26   ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2003-12-23  0:26 [PATCH] add sysfs mem device support [2/4] Greg KH
2003-12-23 13:15 ` Christoph Hellwig
2003-12-23 15:31 ` Rob Love
2003-12-23 16:07 ` Rob Love
2003-12-23 16:39 ` Christoph Hellwig
2003-12-23 17:56 ` Rob Love
2003-12-23 18:01 ` Greg KH
2003-12-23 19:16 ` Christoph Hellwig
2003-12-23 19:19 ` Rob Love
2003-12-23 19:22 ` Christoph Hellwig
2003-12-23 19:24 ` viro
2003-12-23 19:25 ` Rob Love
2003-12-23 19:28 ` Rob Love
2003-12-23 19:42 ` Jeff Garzik
2003-12-23 19:45 ` Rob Love
2003-12-23 20:00 ` Stephan Maciej
2003-12-23 20:33 ` viro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031223002609.GC4805@kroah.com \
    --to=greg@kroah.com \
    --cc=akpm@osdl.org \
    --cc=linux-hotplug-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.