sysfs学习

Posted xuxia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sysfs学习相关的知识,希望对你有一定的参考价值。

1. sysfs是一种用户态与内核的交互机制。在/sys/目录下每个文件可以通过读,写操作下发命令到内核,内核定义相应的读写操作完成指定的功能。

比如现在做的一个项目,需要在/sys/devices/目录下创建自己模块的一个目录,假设是mpath,同时要在mpath下创建文件info, action,同时创建目录km*。info用来通过sysfs文件实施查看内核中相关信息,而action则通过对文件输入不同的命令字让内核执行不同操作,比如对action文件输入1,对应到内核去执行一个添加操作,输入2,对应到内核执行删除操作。

首先,在目录下创建文件可以用到函数:

int sysfs_create_group(struct kobject *kobj, const struct attribute_group *grp)
int __must_check sysfs_create_file(struct kobject *kobj,const struct attribute *attr)
int sysfs_create_files(struct kobject *kobj, const struct attribute **ptr)

int sysfs_create_group(struct kobject *kobj,
               const struct attribute_group *grp)
struct attribute_group 
    const char        *name;
    umode_t            (*is_visible)(struct kobject *,
                          struct attribute *, int);
    umode_t            (*is_bin_visible)(struct kobject *,
                          struct bin_attribute *, int);
    struct attribute    **attrs;
    struct bin_attribute    **bin_attrs;
;

 

以上是关于sysfs学习的主要内容,如果未能解决你的问题,请参考以下文章

Linux驱动学习 —— 在/sys下面创建目录示例

(todo)Linux 内核:设备驱动模型sysfs与kobject基类

sysfs 文件系统

sysfs 文件系统

sysfs 文件系统

linux下GPIO的用户层操作(sysfs)