![](https://img-blog.csdnimg.cn/b8953e27ace948c59794fa4ae546cb97.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
文件系统
文章平均质量分 84
Linux内核文件系统
苦梨甜
嵌入式全栈ing
展开
-
通过sysfs文件系统接口来改变内核模块中的变量值(二)
给出一个完整的源码来展示如何创建、初始化并向系统中添加一个对象,以及如何通过sysfs文件系统接口在用户空间和内核空间进行沟通,另一个有趣的事情是它通过/sbin/hotplug机制来通知用户空间某一个kobject状态的变化。在这个例子中,我们将用自己编译的一个应用程序取代系统的/sbin/hotplug,该应用程序会打出一些环境变量,记在/var/log/messages文件中。原创 2023-03-17 13:24:47 · 170 阅读 · 0 评论 -
通过sysfs文件系统接口来改变内核模块中的变量值(一)--通过fasync实现
下面用一个具体的例子来展示设备驱动程序如何实现fasync方法,以及应用程序如何得到来自设备驱动程序的异步通知。这个例了同时也展示了sysfs文件系统在驱动程序中的用法,以及通过Linux设各模型来创建设备节点及其他一些特性(这个看起来很简单的内核模块其实体现了设备驱动程序中一些比较重要且典型的特征)。原创 2023-03-14 19:42:16 · 200 阅读 · 0 评论 -
kset与热插拔中的uevent和call_usermodehelper
kset可以认为是一组kobject的集合,是kobject的容器。kset本身也是一个内核对象,所以需要内嵌一个kobject对象。其完整定义如下: struct_kset_uevent_ops类型声明如下: kset上的一些主要操作有: kset_register 用来初始化并向系统注册一个kset对象,函数的实现如下: 其中kset_init和koadd_intemal的功能都比较直观,分别用来初始化kset对象和向系统注册该kset对象,因为kset对象本身就是一个由kobject代表的内核对原创 2022-12-05 23:21:53 · 722 阅读 · 0 评论 -
sysfs文件系统与kobject
kernfs_mount_ns函数用来产生sysfs文件系统的超级块,其内部调用的最主要的函数是kernfs_fill_super,后者再经过一系列的函数调用链进入到kernfs_init_inode函数,这里之所以重点强调这个函数,是因为在接下来谈到内核对象的属性问题时会看到用户空间和内核对象的沟通问题,这种文件接口形式的交互发生在内核空间和用户空间,所以我们需要知道这条沟通的通道是如何建立起来的。运行上面的代码后,可在/sys/pa_obj/cld_obj目录下看到一名为"cldatt"的属性文件。原创 2022-12-05 20:39:01 · 516 阅读 · 0 评论