Linux 内核sysfs 文件系统符号连接

sysfs 文件系统有通常的树结构, 反映它代表的 kobjects 的层次组织. 但是内核中对象 间的关系常常比那个更加复杂. 例如, 一个 sysfs 子树 (/sys/devices )代表所有的系 统已知的设备, 而其他的子树( 在 /sys/bus 之下 )表示设备驱动. 这些树, 但是, 不代 表驱动和它们所管理的设备间的关系. 展示这些附加关系需要额外的指针, 指针在 sysfs 中通过符号连接实现.

 

创建一个符号连接在 sysfs 是容易的:

 

int sysfs_create_link(struct kobject *kobj, struct kobject *target, char *name);

 

这个函数创建一个连接(称为 name)指向目标的 sysfs 入口作为一个 kobj 的属性. 它是 一个相对连接, 因此它不管 sysfs 在任何特殊的系统中安装在哪里都可用.

 

这个连接甚至当目标被从系统中移走也持续. 如果你在创建对其他 kobjects 的符号连接, 你应当可能有一个方法知道对这个 kobjects 的改变, 或者某种保证目标 kobjects 不会 消失. 结果( 在 sysfs 中的死的符号连接 )不是特别严重, 但是它们不代表最好的编程 风格并且可能导致在用户空间的混乱.

 

去除符号连接可使用:

 

void sysfs_remove_link(struct kobject *kobj, char *name);

posted @ 2019-07-07 20:37  樊伟胜  阅读(719)  评论(0编辑  收藏  举报