device_create_file 和 device_create的区别

/* interface for exporting device attributes */
struct device_attribute {
	struct attribute	attr;
	ssize_t (*show)(struct device *dev, struct device_attribute *attr,
			char *buf);
	ssize_t (*store)(struct device *dev, struct device_attribute *attr,
			 const char *buf, size_t count);
};
int device_create_file(struct device *dev, const struct device_attribute *attr)	//kernel/drivers/base/core.c
	sysfs_create_file(&dev->kobj, &attr->attr);									//kernel/include/linux/sysfs.h
		sysfs_create_file_ns(&dev->kobj, &attr->attr, NULL);					//kernel/fs/sysfs/file.c
			sysfs_add_file_mode_ns(kobj->sd, attr, false, attr->mode, ns);		//kernel/fs/sysfs/file.c
struct device *device_create(struct class *class, struct device *parent,dev_t devt, void *drvdata, const char *fmt, ...)
																					//kernel/drivers/base/core.c
	device_create_vargs(class, parent, devt, drvdata, fmt, vargs);					//kernel/drivers/base/core.c
		device_create_groups_vargs(class, parent, devt, drvdata, NULL,fmt, args);	//kernel/drivers/base/core.c
			device_add(dev);														//kernel/drivers/base/core.c

猜你喜欢

转载自blog.csdn.net/qq543716996/article/details/102976024