sys下创建文件的相关

在sys下的对某个文件进行cat和echo是调用在用sysfs_create_file创建文件的时候,填的第二参数;里面有实现show和store的函数


device_create
    |
   + -- kzalloc struct device
    |
   +---device_register
                |
               +-----device_initialize
                |
               +-----device_add
--------------------- 

device_register()函数会在/sys/devices下创建一个对应的目录;
bus_create_file()是在sysfs下创建一个文件夹
create_dir(kobj),这个函数作用是在sysfs下创建一个文件夹

device_create函数来在/dev目录下创建相应的设备节点
加载模块的时候,用户空间中的udev会自动响应 device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点

uevent根据dev的属性文件在/dev下创建文件

 而uevent把事件上报给用户空间有两种途径:
  1.通过kmod模块,直接调用用户空间的可执行程序或脚本。
  2.通过netlink通信机制,将事件从内核空间传递到用户空间。

kobject_add()  ->  create_dir() -> sysfs_create_dir()
每当我们新增一个kobject结构的时候,同时会在/sys下创建一个目录。

sysfs_create_file(struct kobject * kobj, const struct attribute * attr) 

传给它的参数是kobj和attr,其中,kobject对应的是文件夹,attribute对应的是该文件夹下的文件。

1、目录项(/sys/kernel/helloworld):通过函数kobject_create_and_add("helloworld", kernel_kobj)可以在/sys/kernel下建立一个helloworld目录项。

2、属性文件(hello_value):通过函数sysfs_create_file(helloworld_kobj, &hello_value_attribute)建立。这个也同时建立了文件与操作之间的联系和对应。

3、操作(hello_show、hello_store):在sys系统中对文件的操作有2个函数,一个是show,一个是store,这两个函数和普通文件的read和write函数有点类似,是他们的精简版。对于sprintf和sscanf是对copy_from_user和copy_to_user函数的封装。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值