configfs: add show and store methods to struct configfs_attribute
Add methods to struct configfs_attribute to directly show and store attributes without adding boilerplate code to every user. In addition to the methods this also adds 3 helper macros to define read/write, read-only and write-only attributes with a single line of code. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Nicholas Bellinger <nab@linux-iscsi.org> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:

committed by
Nicholas Bellinger

parent
6ff33f3902
commit
870823e629
@@ -125,8 +125,35 @@ struct configfs_attribute {
|
||||
const char *ca_name;
|
||||
struct module *ca_owner;
|
||||
umode_t ca_mode;
|
||||
ssize_t (*show)(struct config_item *, char *);
|
||||
ssize_t (*store)(struct config_item *, const char *, size_t);
|
||||
};
|
||||
|
||||
#define CONFIGFS_ATTR(_pfx, _name) \
|
||||
static struct configfs_attribute _pfx##attr_##_name = { \
|
||||
.ca_name = __stringify(_name), \
|
||||
.ca_mode = S_IRUGO | S_IWUSR, \
|
||||
.ca_owner = THIS_MODULE, \
|
||||
.show = _pfx##_name##_show, \
|
||||
.store = _pfx##_name##_store, \
|
||||
}
|
||||
|
||||
#define CONFIGFS_ATTR_RO(_pfx, _name) \
|
||||
static struct configfs_attribute _pfx##attr_##_name = { \
|
||||
.ca_name = __stringify(_name), \
|
||||
.ca_mode = S_IRUGO, \
|
||||
.ca_owner = THIS_MODULE, \
|
||||
.show = _pfx##_name##_show, \
|
||||
}
|
||||
|
||||
#define CONFIGFS_ATTR_WO(_pfx, _name) \
|
||||
static struct configfs_attribute _pfx##attr_##_name = { \
|
||||
.ca_name = __stringify(_name), \
|
||||
.ca_mode = S_IWUSR, \
|
||||
.ca_owner = THIS_MODULE, \
|
||||
.store = _pfx##_name##_store, \
|
||||
}
|
||||
|
||||
/*
|
||||
* Users often need to create attribute structures for their configurable
|
||||
* attributes, containing a configfs_attribute member and function pointers
|
||||
|
Reference in New Issue
Block a user