All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kohei KaiGai <kaigai@ak.jp.nec.com>
To: greg@kroah.com, morgan@kernel.org, serue@us.ibm.com
Cc: Kohei KaiGai <kaigai@ak.jp.nec.com>,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH 1/3] add a private data field within kobj_attribute structure (final#2)
Date: Mon, 25 Feb 2008 15:10:27 +0900	[thread overview]
Message-ID: <47C25BD3.3020205@ak.jp.nec.com> (raw)
In-Reply-To: <47C25AE9.7080305@ak.jp.nec.com>

[PATCH 1/3] add a private data field within kobj_attribute structure.

This patch add a private data field, declared as void *, within kobj_attribute
structure. The _show() and _store() method in the sysfs attribute entries can
refer this information to identify what entry is accessed.
It makes easier to share a single method implementation with several similar
entries, like ones to export the list of capabilities the running kernel
supports.

Signed-off-by: KaiGai Kohei <kaigai@ak.jp.nec.com>
--
 Documentation/kobject.txt |    6 ++++++
 include/linux/kobject.h   |    1 +
 include/linux/sysfs.h     |    7 +++++++
 3 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/Documentation/kobject.txt b/Documentation/kobject.txt
index bf3256e..efa5d71 100644
--- a/Documentation/kobject.txt
+++ b/Documentation/kobject.txt
@@ -207,6 +207,12 @@ Both types of attributes used here, with a kobject that has been created
 with the kobject_create_and_add(), can be of type kobj_attribute, so no
 special custom attribute is needed to be created.

+The simple kobj_attribute is prototyped at include/linux/kobject.h, and can
+contain your own show()/store() method and private data.
+When an attribute is accessed, these methods are invoked with kobject,
+kobj_attribute and read/write buffer. The method can refer the private data
+via given kobj_attribute, to show/store itself in the text representation.
+
 See the example module, samples/kobject/kobject-example.c for an
 implementation of a simple kobject and attributes.

diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index caa3f41..57d5bf1 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -130,6 +130,7 @@ struct kobj_attribute {
 			char *buf);
 	ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr,
 			 const char *buf, size_t count);
+	void *data;	/* a private field */
 };

 extern struct sysfs_ops kobj_sysfs_ops;
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index 8027104..6f40ff9 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -50,6 +50,13 @@ struct attribute_group {
 	.store	= _store,					\
 }

+#define __ATTR_DATA(_name,_mode,_show,_store,_data) {		\
+	.attr = {.name = __stringify(_name), .mode = _mode },   \
+	.show	= _show,					\
+	.store	= _store,					\
+	.data	= (void *)(_data),				\
+}
+	
 #define __ATTR_RO(_name) { \
 	.attr	= { .name = __stringify(_name), .mode = 0444 },	\
 	.show	= _name##_show,					\

-- 
OSS Platform Development Division, NEC
KaiGai Kohei <kaigai@ak.jp.nec.com>

  reply	other threads:[~2008-02-25  6:10 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-25  6:06 [PATCH 0/3] exporting capability name/code pairs (final#2) Kohei KaiGai
2008-02-25  6:10 ` Kohei KaiGai [this message]
2008-02-25  6:51   ` [PATCH 1/3] add a private data field within kobj_attribute structure (final#2) Greg KH
2008-02-25  6:57     ` Kohei KaiGai
2008-02-25  7:47       ` Greg KH
2008-02-25 10:04         ` Kohei KaiGai
2008-02-26 20:09           ` Greg KH
2008-02-28  5:49   ` Valdis.Kletnieks
2008-03-03  4:42     ` Kohei KaiGai
2008-02-25  6:10 ` [PATCH 2/3] exporting capability name/code pairs (final#2) Kohei KaiGai
2008-02-26 14:55   ` Andrew G. Morgan
2008-02-26 20:58     ` Serge E. Hallyn
2008-03-07  4:30       ` Kohei KaiGai
2008-03-07  4:53         ` Greg KH
2008-02-25  6:10 ` [PATCH 3/3] a new example to use kobject/kobj_attribute (final#2) Kohei KaiGai
2008-04-22 11:12 ` [PATCH 0/3] exporting capability name/code pairs (for 2.6.26) KaiGai Kohei
2008-04-22 11:17   ` [PATCH 1/3] add a private data field within kobj_attribute structure KaiGai Kohei
2008-04-22 11:18   ` [PATCH 2/3] exporting capability name/code pairs KaiGai Kohei
2008-04-22 11:18   ` [PATCH 3/3] a new example to use kobject/kobj_attribute KaiGai Kohei
2008-04-22 19:29   ` [PATCH 0/3] exporting capability name/code pairs (for 2.6.26) Alexey Dobriyan
2008-04-23  0:38     ` KaiGai Kohei
2008-04-23  7:03       ` Alexey Dobriyan
2008-04-23  7:37         ` KaiGai Kohei
2008-05-13 22:12           ` Alexey Dobriyan
2008-05-14  0:34             ` KaiGai Kohei
2008-04-23  5:37   ` Chris Wright
2008-04-23  7:15     ` KaiGai Kohei
2008-05-14  0:36       ` KaiGai Kohei
2008-05-14  0:52         ` Chris Wright
2008-05-14  5:57           ` KaiGai Kohei
2008-05-15  5:48             ` Andrew Morgan
2008-05-15  7:47               ` KaiGai Kohei

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=47C25BD3.3020205@ak.jp.nec.com \
    --to=kaigai@ak.jp.nec.com \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=morgan@kernel.org \
    --cc=serue@us.ibm.com \
    /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.