[已解决]zram_drv.c的"compact_store"函数是如何被调用的?

内核编译和嵌入式产品的设计与开发
回复
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

[已解决]zram_drv.c的"compact_store"函数是如何被调用的?

#1

帖子 科学之子 » 2016-05-19 1:55

zram_drv.c的"compact_store"函数是如何被调用的?
grep整个4.5内核代码也没发现指针之类的间接传递,只有一个该函数的定义
Thu May 19 04:47:06 CST 2016:
原来这个宏就是在注册compact_store

代码: 全选

static DEVICE_ATTR_WO(compact);

代码: 全选

#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_ATTR_WO(_name) \
	struct device_attribute dev_attr_##_name = __ATTR_WO(_name)

代码: 全选

#define __ATTR_RO(_name) {						\
	.attr	= { .name = __stringify(_name), .mode = S_IRUGO },	\
	.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)
原来compact_store中的"_store"后缀是为了符合宏的定义.
上次由 科学之子 在 2016-05-19 4:53,总共编辑 1 次。
回复