2013-10-29 85 views
1

我想创建一个sysfs,用于在android中执行我的程序,并坚持在我自己的文件夹中创建一个CLASS如何在sysfs文件夹中创建一个文件夹

我的要求:

/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); 

我在这里贴上我的代码, 请帮我在这方面。

回答

2

这不是“手动”创建sysfs目录/文件的原因。

每个sysfs属性都应该关联到设备。如果你的目标是设备的驱动程序,迟早你会使用结构device。这里有一个related answer

相关问题