我正在尝试为我的android实现创建一个sysfs,并坚持在CLASS
创建我自己的文件夹。
我的要求:
/sys/class/example_class/my_sysfs_directory/file_one.
代码:
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/device.h>
#include <linux/err.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Manoj");
static ssize_t sysfs_demo_show(struct class *class,
struct class_attribute *attr, char *buf)
{
pr_info("%s [%d]: \n", __func__, __LINE__);
return sprintf(buf, "%s \n", __func__);
}
static ssize_t sysfs_demo_store(struct class *class,
struct class_attribute *attr, const char *buf, size_t size)
{
pr_info("%s [%d]: \n", __func__, __LINE__);
return size;
}
static CLASS_ATTR(file_one, 0777, sysfs_demo_show, sysfs_demo_store);
int sysfs_my_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
{
pr_info("%s [%d]: \n", __func__, __LINE__);
return 0;
}
struct class *example_class;
int sysfs_demo_init(void)
{
int ret;
pr_info("%s [%d]: \n", __func__, __LINE__);
example_class = class_create(THIS_MODULE, "demo");
if (IS_ERR(example_class)) {
pr_err("Failed to create sys_class\n");
return -1;
}
example_class->dev_uevent = sysfs_my_dev_uevent;
ret = class_create_file(example_class, &class_attr_file_one);
if (ret) {
pr_err("Failed to create class file @ parent class dirs\n");
return -1;
}
return 0;
}
void sysfs_demo_exit(void)
{
pr_info("%s [%d]: \n", __func__, __LINE__);
class_remove_file(example_class, &class_attr_file_one);
class_destroy(example_class);
}
module_init(sysfs_demo_init);
module_exit(sysfs_demo_exit);
我在这里粘贴了我的代码, 请帮助我。
答案 0 :(得分:3)
“手动”创建sysfs目录/文件并不是一件好事。
每个sysfs属性都应与设备相关联。如果您的目标是设备的驱动程序,迟早您将使用结构device
。这是related answer