configfs: remove old API
Remove the old show_attribute and store_attribute methods and update the documentation. Also replace the two C samples with a single new one in the proper samples directory where people expect to find it. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
committed by
Nicholas Bellinger
parent
45b997737a
commit
517982229f
@@ -154,86 +154,6 @@ static struct configfs_attribute _pfx##attr_##_name = { \
|
||||
.store = _pfx##_name##_store, \
|
||||
}
|
||||
|
||||
/*
|
||||
* Users often need to create attribute structures for their configurable
|
||||
* attributes, containing a configfs_attribute member and function pointers
|
||||
* for the show() and store() operations on that attribute. If they don't
|
||||
* need anything else on the extended attribute structure, they can use
|
||||
* this macro to define it The argument _item is the name of the
|
||||
* config_item structure.
|
||||
*/
|
||||
#define CONFIGFS_ATTR_STRUCT(_item) \
|
||||
struct _item##_attribute { \
|
||||
struct configfs_attribute attr; \
|
||||
ssize_t (*show)(struct _item *, char *); \
|
||||
ssize_t (*store)(struct _item *, const char *, size_t); \
|
||||
}
|
||||
|
||||
/*
|
||||
* With the extended attribute structure, users can use this macro
|
||||
* (similar to sysfs' __ATTR) to make defining attributes easier.
|
||||
* An example:
|
||||
* #define MYITEM_ATTR(_name, _mode, _show, _store) \
|
||||
* struct myitem_attribute childless_attr_##_name = \
|
||||
* __CONFIGFS_ATTR(_name, _mode, _show, _store)
|
||||
*/
|
||||
#define __CONFIGFS_ATTR(_name, _mode, _show, _store) \
|
||||
{ \
|
||||
.attr = { \
|
||||
.ca_name = __stringify(_name), \
|
||||
.ca_mode = _mode, \
|
||||
.ca_owner = THIS_MODULE, \
|
||||
}, \
|
||||
.show = _show, \
|
||||
.store = _store, \
|
||||
}
|
||||
/* Here is a readonly version, only requiring a show() operation */
|
||||
#define __CONFIGFS_ATTR_RO(_name, _show) \
|
||||
{ \
|
||||
.attr = { \
|
||||
.ca_name = __stringify(_name), \
|
||||
.ca_mode = 0444, \
|
||||
.ca_owner = THIS_MODULE, \
|
||||
}, \
|
||||
.show = _show, \
|
||||
}
|
||||
|
||||
/*
|
||||
* With these extended attributes, the simple show_attribute() and
|
||||
* store_attribute() operations need to call the show() and store() of the
|
||||
* attributes. This is a common pattern, so we provide a macro to define
|
||||
* them. The argument _item is the name of the config_item structure.
|
||||
* This macro expects the attributes to be named "struct <name>_attribute"
|
||||
* and the function to_<name>() to exist;
|
||||
*/
|
||||
#define CONFIGFS_ATTR_OPS(_item) \
|
||||
static ssize_t _item##_attr_show(struct config_item *item, \
|
||||
struct configfs_attribute *attr, \
|
||||
char *page) \
|
||||
{ \
|
||||
struct _item *_item = to_##_item(item); \
|
||||
struct _item##_attribute *_item##_attr = \
|
||||
container_of(attr, struct _item##_attribute, attr); \
|
||||
ssize_t ret = 0; \
|
||||
\
|
||||
if (_item##_attr->show) \
|
||||
ret = _item##_attr->show(_item, page); \
|
||||
return ret; \
|
||||
} \
|
||||
static ssize_t _item##_attr_store(struct config_item *item, \
|
||||
struct configfs_attribute *attr, \
|
||||
const char *page, size_t count) \
|
||||
{ \
|
||||
struct _item *_item = to_##_item(item); \
|
||||
struct _item##_attribute *_item##_attr = \
|
||||
container_of(attr, struct _item##_attribute, attr); \
|
||||
ssize_t ret = -EINVAL; \
|
||||
\
|
||||
if (_item##_attr->store) \
|
||||
ret = _item##_attr->store(_item, page, count); \
|
||||
return ret; \
|
||||
}
|
||||
|
||||
/*
|
||||
* If allow_link() exists, the item can symlink(2) out to other
|
||||
* items. If the item is a group, it may support mkdir(2).
|
||||
@@ -250,8 +170,6 @@ static ssize_t _item##_attr_store(struct config_item *item, \
|
||||
*/
|
||||
struct configfs_item_operations {
|
||||
void (*release)(struct config_item *);
|
||||
ssize_t (*show_attribute)(struct config_item *, struct configfs_attribute *,char *);
|
||||
ssize_t (*store_attribute)(struct config_item *,struct configfs_attribute *,const char *, size_t);
|
||||
int (*allow_link)(struct config_item *src, struct config_item *target);
|
||||
int (*drop_link)(struct config_item *src, struct config_item *target);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user