October 2017
Intermediate to advanced
586 pages
14h 8m
English
The struct class_attribute is the base structure here:
struct class_attribute {
struct attribute attr;
ssize_t (*show)(struct device_driver *, char * buf);
ssize_t (*store)(struct device_driver *, const char * buf,
size_t count);
};
The declaration of a class attribute relies on CLASS_ATTR:
CLASS_ATTR(_name, _mode, _show, _store)
As the macro's definition shows, any class attribute declared with CLASS_ATTR will have the prefix class_attr_ added to the attribute variable name:
#define CLASS_ATTR(_name, _mode, _show, _store) \ struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store)
Finally, file creation and removal are done with the class_{create|remove}_file functions:
int class_create_file(struct ...