#include <linux/list.h>
#include <linux/lockdep.h>
#include <linux/kobject_ns.h>
-#include <linux/stat.h>
#include <linux/atomic.h>
struct kobject;
* for examples..
*/
-#define __ATTR(_name,_mode,_show,_store) { \
- .attr = {.name = __stringify(_name), .mode = _mode }, \
- .show = _show, \
- .store = _store, \
+#define __ATTR(_name,_mode,_show,_store) { \
+ .attr = {.name = __stringify(_name), .mode = _mode }, \
+ .show = _show, \
+ .store = _store, \
}
-#define __ATTR_RO(_name) { \
- .attr = { .name = __stringify(_name), .mode = S_IRUGO }, \
- .show = _name##_show, \
+#define __ATTR_RO(_name) { \
+ .attr = { .name = __stringify(_name), .mode = 0444 }, \
+ .show = _name##_show, \
}
-#define __ATTR_WO(_name) { \
- .attr = { .name = __stringify(_name), .mode = S_IWUSR }, \
- .store = _name##_store, \
-}
-
-#define __ATTR_RW(_name) __ATTR(_name, (S_IWUSR | S_IRUGO), \
- _name##_show, _name##_store)
-
#define __ATTR_NULL { .attr = { .name = NULL } }
#ifdef CONFIG_DEBUG_LOCK_ALLOC
#define __ATTR_IGNORE_LOCKDEP __ATTR
#endif
-#define __ATTRIBUTE_GROUPS(_name) \
-static const struct attribute_group *_name##_groups[] = { \
- &_name##_group, \
- NULL, \
-}
-
-#define ATTRIBUTE_GROUPS(_name) \
-static const struct attribute_group _name##_group = { \
- .attrs = _name##_attrs, \
-}; \
-__ATTRIBUTE_GROUPS(_name)
-
#define attr_name(_attr) (_attr).attr.name
struct file;
*/
#define sysfs_bin_attr_init(bin_attr) sysfs_attr_init(&(bin_attr)->attr)
-/* macros to create static binary attributes easier */
-#define __BIN_ATTR(_name, _mode, _read, _write, _size) { \
- .attr = { .name = __stringify(_name), .mode = _mode }, \
- .read = _read, \
- .write = _write, \
- .size = _size, \
-}
-
-#define __BIN_ATTR_RO(_name, _size) { \
- .attr = { .name = __stringify(_name), .mode = S_IRUGO }, \
- .read = _name##_read, \
- .size = _size, \
-}
-
-#define __BIN_ATTR_RW(_name, _size) __BIN_ATTR(_name, \
- (S_IWUSR | S_IRUGO), _name##_read, \
- _name##_write)
-
-#define __BIN_ATTR_NULL __ATTR_NULL
-
-#define BIN_ATTR(_name, _mode, _read, _write, _size) \
-struct bin_attribute bin_attr_##_name = __BIN_ATTR(_name, _mode, _read, \
- _write, _size)
-
-#define BIN_ATTR_RO(_name, _size) \
-struct bin_attribute bin_attr_##_name = __BIN_ATTR_RO(_name, _size)
-
-#define BIN_ATTR_RW(_name, _size) \
-struct bin_attribute bin_attr_##_name = __BIN_ATTR_RW(_name, _size)
-
struct sysfs_ops {
ssize_t (*show)(struct kobject *, struct attribute *,char *);
ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);