首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏linux驱动个人学习

    sysfs_create_group创建sysfs接口

    可通过sysfs接口创建驱动对应的属性,使得可以在用户空间通过sysfs接口的show和store函数与硬件交互; Syss接口可通过sysfs_create_group()来创建,如果设备驱动要创建, ; 6 struct lock_class_key *key; 7 struct lock_class_key skey; 8 #endif 9 }; 创建sysfs 创建属性文件的sysfs接口: 1 ret = sysfs_create_group(&pdev->dev.kobj,&gpio_attr_grp); 2 sysfs_create_group()在kobj 3 4 //删除接口 5 sysfs_remove_group(&pdev->dev.kobj,&gpio_keys_attr_group); 6 sysfs_remove_group()在kobj

    3.3K40发布于 2018-03-07
  • 来自专栏嵌入式随笔

    Linux为什么有些驱动必须用sysfs

    sysfs是一个特殊的文件系统,可以设备驱动模型之间的层级关系。可以通过这个文件系统来操作设备。有些设备还只能用sysfs来使用。sysfs可以通过读写数据对设备进行具体的操作。 ioctl也可以读写数据,但是有些场合还是使用sysfs更合适。 sysfs可以在控制台和shell脚本上直接和用户空间进行交互,而ioctl需要编写个c程序才能运行。 因此在这方面sysfs更合适。 sysfs可以将设备属性直接展示给用户,比如要对一个LED等做一些操作,先查看一下这个led的属性 /sys/class/leds/led1# lsbrightness device 因此有些功能使用sysfs来做更合适。

    46330编辑于 2023-09-01
  • 来自专栏程序手艺人

    13 - sysfs设备节点的创建

    实际项目过程中应用层需要操作内核中GPIO, 除了应用层直接通过export方式操作,具体操作方法[Linux驱动炼成记] 02-用户空间控制GPIO, 还可以通过sysfs设备节点方式操作 具体实现之前可以阅读下 kernel/Documentation/zh_CN/filesystems/sysfs.txt 中关于sysfs相关知识。 kernel 4.9 中部分文档已有中文翻译版本 sysfs 简介: sysfs 是一个最初基于 ramfs 且位于内存的文件系统。 sysfs 始终与 kobject 的底层结构紧密相关。请阅读Documentation/kobject.txt 文档以获得更多关于 kobject 接口的信息。 , size_t count); }; int device_create_file(struct device *, const struct device_attribute *); //按键中sysfs

    3.4K20发布于 2019-02-21
  • 来自专栏韦东山嵌入式

    11_GPIO子系统的sysfs接口

    git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git 视频观看 百问网驱动大全 GPIO子系统的sysfs 驱动程序 驱动程序为drivers\gpio\gpiolib-sysfs.c,这里不打算分析它。 2. 常用的SYSFS文件 2.1 有哪些GPIO控制器 /sys/bus/gpio/devices目录下,列出了所有的GPIO控制器,如下表示有11个GPIO控制器: /sys/bus/gpio/devices label // 名字 ngpio // 引脚个数 power subsystem uevent 2.3 查看GPIO使用情况 cat /sys/kernel/debug/gpio 2.4 通过SYSFS

    1.1K40编辑于 2021-12-08
  • 【udev用户空间设备管理】sysfs文件系统与Linux设备模型

    其实,sysfs和它背后的Linux 设备模型,是 Linux 管理硬件的 “核心大脑”—— 设备模型是 “硬件家谱”,把电脑里的 CPU、USB、硬盘按规则排好序;sysfs 是 “家谱的纸质版”,把这个家谱变成文件系统 三、sysfs:把 “硬件家谱” 变成 “文件系统” 设备模型是内核里的 “抽象结构”,普通用户和程序没法直接访问 —— 这时候sysfs就登场了。 3.1 sysfs 的目录结构:对应设备模型的层级 sysfs 的目录和设备模型的层级一一对应,最关键的几个目录咱们逐个拆解,结合例子讲清楚: sysfs 目录 对应设备模型层级 作用与例子 /sys/ 五、sysfs 的实际应用:不止 “看信息”,还能 “改配置” sysfs 不仅能 “读” 硬件信息,还能 “写” 配置 —— 很多硬件参数可以通过修改 sysfs 的属性文件实时调整,不用重启系统。 六、sysfs 与设备模型的 “核心价值” 为什么说 sysfs 和设备模型是 Linux 硬件管理的 “黄金搭档”?

    16610编辑于 2026-01-21
  • 来自专栏全志嵌入式那些事

    全志模块设备开发之GPIO编程基础介绍

    导出引脚编号的实现代码如下所示,具体详见《sysfs_gpio_1_export_gpio sysfs_gpio_export.c》的sysfs_gpio_export()函数。 设置引脚编号的的实现代码如下所示,具体详见《sysfs_gpio_2_export_gpio sysfs_gpio_export.c》的sysfs_gpio_set_dir ()函数。 相关的代码在程序文件《sysfs_gpio_2_export_gpio/sysfs_gpio_export.c》中main函数,下为对应代码部分。 设置引脚输出高低电平的的实现代码如下所示,具体详见《sysfs_gpio_3_export_gpio sysfs_gpio_export.c》的sysfs_gpio_set_value ()函数。 读取引脚输入电平的、的的实现代码如下所示,具体详见《sysfs_gpio_4_export_gpio sysfs_gpio_export.c》的sysfs_gpio_get_value ()函数。

    63410编辑于 2024-08-16
  • 来自专栏韦东山嵌入式

    Linux应用开发【第九章】GPIO编程应用开发

    导出引脚编号的实现代码如下所示,具体详见《sysfs_gpio_1_export_gpio sysfs_gpio_export.c》的sysfs_gpio_export()函数。 设置引脚编号的的实现代码如下所示,具体详见《sysfs_gpio_2_export_gpio sysfs_gpio_export.c》的sysfs_gpio_set_dir ()函数。 相关的代码在程序文件《sysfs_gpio_2_export_gpio/sysfs_gpio_export.c》中main函数,下为对应代码部分。 设置引脚输出高低电平的的实现代码如下所示,具体详见《sysfs_gpio_3_export_gpio sysfs_gpio_export.c》的sysfs_gpio_set_value ()函数。 读取引脚输入电平的、的的实现代码如下所示,具体详见《sysfs_gpio_4_export_gpio sysfs_gpio_export.c》的sysfs_gpio_get_value ()函数。

    1.9K30编辑于 2021-12-15
  • 来自专栏Linux内核深入分析

    Linux设备驱动模型-Ktype

    分析处理流程 先分析sysfs_create_file函数的处理流程 sysfs_create_file sysfs_create_file_ns sysfs_add_file_mode_ns is_bin) { struct kobject *kobj = parent->priv; const struct sysfs_ops *sysfs_ops = kobj->ktype->sysfs_ops &sysfs_file_kfops_ro; else if (sysfs_ops->store) //只写 ops = &sysfs_file_kfops_wo static const struct kernfs_ops sysfs_file_kfops_rw = { .seq_show = sysfs_kf_seq_show, .write = sysfs_kf_write kobj->ktype->sysfs_ops : NULL; } 通过判断kobj的ktype时候存在,如果存在返回sysfs_ops结构。最终调用到show函数中。

    5K21发布于 2020-03-24
  • 来自专栏linux驱动个人学习

    高通HAL层之bmp18x.cpp

    , SYSFS_CLASS, sizeof(input_sysfs_path)); 14 strlcat(input_sysfs_path, name, sizeof(input_sysfs_path )); 15 strlcat(input_sysfs_path, "/", sizeof(input_sysfs_path)); 16 input_sysfs_path_len , SYSFS_CLASS, sizeof(input_sysfs_path)); 36 strlcat(input_sysfs_path, name, sizeof(input_sysfs_path )); 37 strlcat(input_sysfs_path, "/", sizeof(input_sysfs_path)); 38 input_sysfs_path_len 路径下的文件的enable节点写值“1”; SYSFS_CLASS的路径为(hardware\qcom\sensors\sensors.h): 1 #define SYSFS_CLASS

    1.4K70发布于 2018-03-07
  • 来自专栏韩曙亮的移动开发专栏

    【Android 逆向】修改 Android 系统文件 ( ro 只读文件系统 | 系统文件格式 | rootfs | tmpfs | devpts | sysfs |proc | system )

    type devpts (rw,seclabel,relatime,mode=600) proc on /proc type proc (rw,relatime,gid=3009,hidepid=2) sysfs on /sys type sysfs (rw,seclabel,relatime) selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime) : Temp FileSystem 临时文件系统 , 基于内存的文件系统 , 一般是 rw 格式的 , 读写权限 ; devpts : 远程虚拟终端文件设备 , rw 格式 , 设备允许进行读写 ; sysfs

    3.8K10编辑于 2023-03-29
  • 来自专栏转载gongluck的CSDN博客

    第17章 ioctl操作

    The sysfs entries are available * via /sys/class/net/<dev>/flags. Can be toggled through sysfs. * @IFF_LOOPBACK: is a loopback net. Volatile. Can be toggled through sysfs. * @IFF_PORTSEL: can set media type. Can be toggled through sysfs. = 1<<8, /* sysfs */ IFF_ALLMULTI = 1<<9, /* sysfs */ IFF_MASTER = 1<<10, /* volatile */ 1<<13, /* sysfs */ IFF_AUTOMEDIA = 1<<14, /* sysfs */ IFF_DYNAMIC = 1<<15, /* sysfs */ #

    2K90发布于 2018-03-09
  • 来自专栏三木的博客

    Kobject浅析

    既可以将这些设备和驱动组织成树形结构,又可以让用户通过sysfs直接控制驱动和设备。让我们来搭讪一下kobject,从她那儿看看有对象的好处。 我们哲学老师在提问一个学生之前都会先问学生的家乡在哪儿。 sd这个成员的作用和sysfs相关,kobject是组成sysfs树形结构的结点。kref是该结构体的引用计数,实质是一个原子型的整形量。 每一个属性都应该在sysfs中对应一个文件。而sysfs_ops则存放着读写这些文件时的处理。 每一个kobject都可以属于某一个kset,一个kset就是一群kobject的集合。 kobject和sysfs勾搭在一起就给用户层提供了修改设备和驱动参数的一种方式。 以下代码展示了如何利用kobject使用sysfs。 kobj_type test_kobj_type= { .release = test_release, .sysfs_ops = &test_sysfs_ops, .default_attrs

    1.6K102发布于 2018-02-07
  • 来自专栏hank

    AMD Xilinx MPSoC 加载bit文件方法大全

    (DTBO) fpgautil 实际测试 FSBL 加载bit U-BOot加载bit Linux sysfs 加载 bit Linux sysfs 加载 full bit Linux sysfs 加载 partial bit Linux configfs (DTBO) 加载 bit 和 devicetree Linux sysfs 加载 full bit 和 devicetree Linux sysfs 它通过sysfs,提供了加载Bit文件的办法。 sysfs的使用办法,可以参考MPSoC PL Programming。为了易于使用,我创建了下面的简单脚本。 #! configfs (DTBO) 在sysfs的基础上, configfs也通过加载DTBO, 提供了加载Bit文件的办法。 Linux sysfs 加载 bit Linux sysfs 加载 full bit fpga-load.sh /lib/firmware/xilinx/base/ base.bit.bin full

    2.8K51编辑于 2022-11-14
  • 来自专栏LINUX阅码场

    实例演绎Unix/Linux的"一切皆文件"思想

    实现UDP socket文件机制 UDP socket文件就是基于这种sysfs实现的,我称它UDP socket sysfs。 本文不是讲sysfs原理的,这方面的资源已经很多了,我就不再赘述。这里仅仅提sysfs的最基本特征: 每一个可以表示为文件的对象Obj都是sysfs中的一个目录。 [root@localhost sysfs_test]# 创建一个UDP socket sysfs实例相当于在kobject_udp创建了一个目录instance_0,该UDP socket sysfs 和socket接口的两点最大不同,socket sysfs文件有以下性质: socket用sysfs的一个目录表示 即socket sysfs文件作为一个对象在sysfs是一个目录,该目录下两个属性文件用于实际操作 … UDP socket sysfs文件实现后,TCP呢?我们需要实现一个TCP的socket sysfs文件机制,从而可以用shell脚本粘合独立的小程序实现复杂的TCP客户端和TCP服务器。

    2.7K30发布于 2019-09-24
  • 来自专栏全志嵌入式那些事

    全志v851s GPIO 应用程序编写

    通过sysfs操作gpio 导出gpio 节点 通过终端操作手动导出: echo 238 > /sys/class/gpio/export 查看导出的gpio节点 cd /sys/class/gpio ************ * Constants ****************************************************************/ #define SYSFS_GPIO_DIR ******/ int gpio_export(unsigned int gpio) { int fd, len; char buf[MAX_BUF]; fd = open(SYSFS_GPIO_DIR ************ * Constants ****************************************************************/ #define SYSFS_GPIO_DIR ******/ int gpio_export(unsigned int gpio) { int fd, len; char buf[MAX_BUF]; fd = open(SYSFS_GPIO_DIR

    37310编辑于 2024-02-02
  • 来自专栏Linux内核深入分析

    Linux设备驱动模型-Kset

    kernel/kernel/params.c ------------------------------------ static int __init param_sysfs_init(void) = 1; version_sysfs_builtin(); param_sysfs_builtin(); return 0; } 可以看到通过kset_create_and_add创建一个名字为 static void __init param_sysfs_builtin(void) { const struct kernel_param *kp; unsigned int name_len (modname, kp, name_len); } } 对kernel中在.param段的模块参数,通过kernel_add_sysfs_param添加到sys中。 load_module ->mod_sysfs_setup ->module_param_sysfs_setup ->add_sysfs_param

    4.4K61发布于 2020-03-24
  • 来自专栏鹅厂网事

    腾讯自研交换机标准化之路:S³IP实践

    1.1 痛点1 没有统一的硬件驱动接口规范(sysfs)     Sysfs是应用访问硬件信息的入口,在S³IP sysfs规范制定之前,白盒交换机用户都有自己的sysfs标准,但是这些标准并不统一。 规范包括: 《S3IP Sysfs规范》:规范了平台硬件管理接口。sysfs规范目的是,构建统一的硬件抽象层(对上统一硬件服务),屏蔽不同硬件平台的差异,确保硬件监控应用和驱动的可移植性。 腾讯实践S³IP规范 2.1 S³IP sysfs规范落地效果     截至2022年9月,符合S³IP Sysfs规范的自研交换机已在腾讯DCN、DCI、可编程网关等场景规模化部署。 下图为不同厂商适配S³IP sysfs后的效果。 图5 设备适配S³IP sysfs规范的效果     适配S³IP sysfs规范后,硬件数据有格式化的目录结构,非常便于导入数据库并进行深度处理。 腾讯为了加速S³IP sysfs规范落地,开发了S³IP sysfs框架,并向S³IP联盟成员开源,同时我们也积极将S³IP成果反馈到SONiC社区,丰富SONiC社区功能,促进白盒交换机行业发展,实现共赢

    3.1K20编辑于 2023-01-18
  • 来自专栏全栈程序员必看

    initiatorname.iscsi_linux卸载iscsiadm

    : open '/class/iscsi_transport/iser'/'handle' iscsiadm: sysfs_attr_get_value: new uncached attribute value '18446744072106209312' iscsiadm: sysfs_attr_get_value: open '/class/iscsi_transport/iser'/'caps : sysfs_attr_get_value: add to cache '/sys/class/iscsi_transport/iser/caps' iscsiadm: sysfs_attr_get_value : open '/class/iscsi_transport/iser'/'handle' iscsiadm: sysfs_attr_get_value: found in cache '/class attribute '/sys/class/iscsi_connection/connection18:0/ping_tmo' iscsiadm: sysfs_attr_get_value: add

    1.8K20编辑于 2022-09-23
  • 来自专栏Linux内核远航者

    Linux内核调试之使用模块参数

    name :表示模块参数名 (模块中定义和sysfs中显示的都是这个名字) type:表示数据类型,如uint表示unsigned int perm:sysfs文件中参数文件的访问权限 (一般8进制表示 * @arg: args for @ops * @perm: visibility in sysfs. name :表示模块参数名 (模块中定义和sysfs中显示的都是这个名字) ops:参数的 set&get 操作集 arg:用于操作集的参数 perm:sysfs文件中参数文件的权限 (一般8进制表示 name:表示参数的别名/重命名,会在sysfs中显示 value:表示参数名,在模块中定义的变量名 type:表示数据类型 perm:sysfs文件中参数文件的权限 例如: /* bool eg 而对于用户态,是通过sysfs来读取它的。

    92910编辑于 2024-05-31
  • 来自专栏Linux内核深入分析

    Linux设备驱动模型-Kobject

    state_in_sysfs: 用来表示该内核对象是否在sys中已经存在。 kobject_name(parent) : "'none'"); } else kobj->state_in_sysfs = 1; //设置state_in_sysfs kobj_ns_type_registered(ops->type)); sysfs_enable_ns(kobj->sd); } return 0; } 主要是分析下sysfs_create_dir_ns creating directory for * @ns: the namespace tag to use */ int sysfs_create_dir_ns(struct kobject * sd = kobj->sd; sysfs_remove_dir(kobj); //从sys目录下删除kobj sysfs_put(sd); //sd的引用技术减去1

    6.3K32发布于 2020-03-24
领券