driver core: device.h: add RW and RO attribute macros
Make it easier to create attributes without having to always audit the mode settings. Reviewed-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
e4b63603c2
Коммит
ced321bf91
|
@ -47,7 +47,11 @@ struct bus_attribute {
|
|||
};
|
||||
|
||||
#define BUS_ATTR(_name, _mode, _show, _store) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
|
||||
struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
|
||||
#define BUS_ATTR_RW(_name) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR_RW(_name)
|
||||
#define BUS_ATTR_RO(_name) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR_RO(_name)
|
||||
|
||||
extern int __must_check bus_create_file(struct bus_type *,
|
||||
struct bus_attribute *);
|
||||
|
@ -261,9 +265,12 @@ struct driver_attribute {
|
|||
size_t count);
|
||||
};
|
||||
|
||||
#define DRIVER_ATTR(_name, _mode, _show, _store) \
|
||||
struct driver_attribute driver_attr_##_name = \
|
||||
__ATTR(_name, _mode, _show, _store)
|
||||
#define DRIVER_ATTR(_name, _mode, _show, _store) \
|
||||
struct driver_attribute driver_attr_##_name = __ATTR(_name, _mode, _show, _store)
|
||||
#define DRIVER_ATTR_RW(_name) \
|
||||
struct driver_attribute driver_attr_##_name = __ATTR_RW(_name)
|
||||
#define DRIVER_ATTR_RO(_name) \
|
||||
struct driver_attribute driver_attr_##_name = __ATTR_RO(_name)
|
||||
|
||||
extern int __must_check driver_create_file(struct device_driver *driver,
|
||||
const struct driver_attribute *attr);
|
||||
|
@ -414,8 +421,12 @@ struct class_attribute {
|
|||
const struct class_attribute *attr);
|
||||
};
|
||||
|
||||
#define CLASS_ATTR(_name, _mode, _show, _store) \
|
||||
struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store)
|
||||
#define CLASS_ATTR(_name, _mode, _show, _store) \
|
||||
struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store)
|
||||
#define CLASS_ATTR_RW(_name) \
|
||||
struct class_attribute class_attr_##_name = __ATTR_RW(_name)
|
||||
#define CLASS_ATTR_RO(_name) \
|
||||
struct class_attribute class_attr_##_name = __ATTR_RO(_name)
|
||||
|
||||
extern int __must_check class_create_file(struct class *class,
|
||||
const struct class_attribute *attr);
|
||||
|
@ -423,7 +434,6 @@ extern void class_remove_file(struct class *class,
|
|||
const struct class_attribute *attr);
|
||||
|
||||
/* Simple class attribute that is just a static string */
|
||||
|
||||
struct class_attribute_string {
|
||||
struct class_attribute attr;
|
||||
char *str;
|
||||
|
@ -512,6 +522,10 @@ ssize_t device_store_bool(struct device *dev, struct device_attribute *attr,
|
|||
|
||||
#define DEVICE_ATTR(_name, _mode, _show, _store) \
|
||||
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
|
||||
#define DEVICE_ATTR_RW(_name) \
|
||||
struct device_attribute dev_attr_##_name = __ATTR_RW(_name)
|
||||
#define DEVICE_ATTR_RO(_name) \
|
||||
struct device_attribute dev_attr_##_name = __ATTR_RO(_name)
|
||||
#define DEVICE_ULONG_ATTR(_name, _mode, _var) \
|
||||
struct dev_ext_attribute dev_attr_##_name = \
|
||||
{ __ATTR(_name, _mode, device_show_ulong, device_store_ulong), &(_var) }
|
||||
|
|
Загрузка…
Ссылка в новой задаче