linux sysfs设备模型中经常需要用到各种link,比如、sys/bus/device下链接到该bus内的所有device, driver链接所有驱动,可见link在设备模型中经常需要使用到。

sysfs设备模型中,可以通过一下AP进行创建一个sysfs link:

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

  • kobj:在当前kobj创建link
  • target: kobj的link所指向的target
  • name:创建link名称

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

  • kobj:要删除link所属的kobj,即sysfs_create_link()创建的kobj
  • name:要删除的link 名称。

 在sysfs目录下创建两个kobj分别为mytest和mytest2, 并在mytest2目录内创建一个mylink的链接链接指向mytest,继续创建mylink2链接指向mytest。

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kobject.h>
MODULE_LICENSE("GPL v2");static struct kobject * testKobj = NULL;
static struct kobject * testKobj2 = NULL;
static int __init sysfs_test_init(void)
{int err=0;testKobj = kobject_create_and_add("mytest", NULL);if (!testKobj){printk(KERN_INFO "create test kbject failed\n");return 1;}testKobj2 = kobject_create_and_add("mytest2", NULL);if (!testKobj2){printk(KERN_INFO "create test kbject2 failed\n");return 1;}err = sysfs_create_link(testKobj2, testKobj,"my_link");if (err){kobject_put(testKobj);kobject_put(testKobj2);printk(KERN_INFO "create link failed\n");return  err;}err = sysfs_create_link(testKobj2, testKobj,"my_link2");if (err){sysfs_remove_link(testKobj2, "my_link");kobject_put(testKobj);kobject_put(testKobj2);printk(KERN_INFO "create link failed\n");return  err;}return 0;
}static void __exit sysfs_test_exit(void)
{sysfs_remove_link(testKobj2, "my_link");sysfs_remove_link(testKobj2, "my_link2");kobject_put(testKobj);kobject_put(testKobj2);
}module_init(sysfs_test_init);
module_exit(sysfs_test_exit);
MODULE_AUTHOR("hzk");
MODULE_DESCRIPTION("A simple moudule for sysft test");
MODULE_VERSION("V1.0");

运行结果:

linux sysfs link(sysfs_create_link)相关推荐

  1. linux ln(link) 命令详解

    linux ln(link) 命令详解 功能说明:连接文件或目录. 语 法:ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--v ...

  2. Linux那些事儿之Linux sysfs -- 剖析版本虽旧,桃花依旧笑春风

    "sysfs is a ram-based filesystem initially based on ramfs. It provides a means to export kernel ...

  3. Linux sysfs文件系统分析

    "sysfs is a ram-based filesystem initially based on ramfs. It provides a means to export kernel ...

  4. Linux sysfs文件系统

    前言 ioctl:注册虚拟的字符设备文件,以这个虚拟设备上的 read/write/ioctl 等接口与用户交互 但这种方式有几个明显的缺点. read/write接口功能单一,一般只能做一件事情 i ...

  5. linux symbolic link attack tutorial

    Yaseng · 2015/01/27 10:01 0×00 前言 Linux作为应用最广泛的开源系统,其中独特的文件系统可以算是支撑Linux强大功能 的核心组件之一,而在文件系统中,符号链接(sy ...

  6. 认识 linux sysfs文件系统

    先看一下相关资料的描述: 自2.6版本开始,linux内核开始使用sysfs文件系统,它的作用是将设备和驱动程序的信息导出到用户空间,方便了用户读取设备信息,同时支持修改和调整. 与ext系列和fat ...

  7. linux删除link文件,在 Linux 中怎样移除(删除)符号链接

    原标题:在 Linux 中怎样移除(删除)符号链接 你可能有时需要在 Linux 上创建或者删除符号链接.如果有,你知道该怎样做吗?之前你做过吗?你踩坑没有?如果你踩过坑,那没什么问题.如果还没有,别 ...

  8. linux hard link和soft link(硬链接和软链接)的简单介绍

    文件由何决定? 首先需要说明linux的文件的概念,我们如何分辨两个在linux里边的文件(以下简称文件)是不同的文件?由此就不得不说到一个东西,inode. 根据维基的定义: inode是指在许多& ...

  9. Linux - sysfs module

    有关Linux系统的模块,其信息及参数可以在/sys/module里进行查找或设置. /sys/module文件夹由以下结构组成: 内容:/sys/module/<MODULENAME>. ...

最新文章

  1. 深度学习也利用进化论!李飞飞谈创建具身智能体,学动物进化法则
  2. Linux下的man命令
  3. ecshop $user
  4. 系统集成资质培训 - 在线答疑(17:00更新)
  5. 新电脑怎么分盘_电脑新系统装了杀毒软件之后,原本非常流畅,怎么突然变卡了?...
  6. 浅谈python中的一般方法、静态方法(staticmethod)和类方法(classmethod)
  7. 亚马逊云科技首次发布“三驾马车”中国业务战略
  8. 汲取Linux灵感 Pivotal开源大数据套件
  9. 多媒体计算机的关键技术有哪些,多媒体计算机的定义分类和关键技术
  10. c fscanf 按行读取文件_语言 文件 看这一篇就够了
  11. 怎么彻底移除虚拟机_Parallels Desktop虚拟机怎么完全卸载? PD虚拟机完全卸载方法...
  12. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 09课
  13. 计算机与科学 研究生考试内容,计算机科学与技术考研考哪些科目 备考技巧有哪些...
  14. 索尼电视android屡次停止,索尼电视撤回安卓8.0固件包:存在无法连接WiFi问题
  15. 【云原生】设备云之前端可视化编程
  16. 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据,程序输出读到的数据中的奇数和偶数的个数。(Java经典编程案例)
  17. TestNG跳过某个测试方法
  18. 电子书Epub文件剖析
  19. web前端工作有哪些职业发展方向
  20. python用什么软件编程-初学 Python 需要安装哪些软件?

热门文章

  1. 1-AII--BroadcastReceiver广播的静态注册与动态注册
  2. 知识库的构建 6-1 语义网 Semantic Web
  3. Apple Notification Center Service--ANCS【转】
  4. 【Python】07、python内置数据结构之字符串
  5. #淘宝#复制分享宝贝内容,打开淘宝APP,自己主动弹出宝贝提示信息
  6. [模拟] hdu 4452 Running Rabbits
  7. quartz2d 实现太极图
  8. 绕过安全沙箱限制加载在线图片
  9. Red Hat Linux 253 实验部分
  10. ZZULIOJ 1100: 求组合数(函数专题)