Sysfs文件系统在嵌入式开发中的应用 &nbsh1; Sysfs文件系统在嵌入式开发中的应用 刘江 【Summary】在嵌入式开发中我们有时需要在用户层控制内核及其驱动的一些功能。传统的方法是通过ioctl系统调用实现。而Sysfs为我们提供了一种更为方便的通过读写文件的方法。大大方便了嵌入式开发。 【Key】嵌入式;内核驱动;Sysfs文件系统 Sysfs是一个向用户空间导出内核数据结构,对象和性...
刘江
【Summary】在嵌入式开发中我们有时需要在用户层控制内核及其驱动的一些功能。传统的方法是通过ioctl系统调用实现。而Sysfs为我们提供了一种更为方便的通过读写文件的方法。大大方便了嵌入式开发。
【Key】嵌入式;内核驱动;Sysfs文件系统
Sysfs是一个向用户空间导出内核数据结构,对象和性质的文件系统,它不仅提供了察看内核内部数据结构的能力,还可以修改这些数据结构。Sysfs已经成为老式的IOCTL机制的一种替代品。向内核发送神秘的ioctl通常需要一个C程序。与之相比,从/向Sysfs文件读/写一个值要简单的多。一个简单的shell命令就足够了。
一、建立属性文件
Sysfs是用于 表 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 现设备驱动模型的文件系统,它基于ramfs。要使用Sysfs就需要了解Sysfs提供给外界的API。Sysfs文件系统中提供了四类文件的创建与管理,分别是目录、普通文件、软链接文件、二进制文件。目录层次往往代表着设备驱动模型的结构,软链接文件则代表着不同部分间的关系。比如某个设备的目录只出现在/sys/devices下,其他地方涉及到它时只好用软链接文件链接过去,保持了设备唯一的实例。而普通文件和二进制文件往往代表了设备的属性,读写这些文件需要调用相应的属性读写。
我们可以使用DEVICE_ATTR函数宏来建立一个属性文件。函数宏DEVICE_ATTR原型是DRIVER_ATTR(_name,_mode,_show,_store)。函数宏DEVICE_ATTR内封装的是__ATTR(_name,_mode,_show,_stroe)方法。_show:表示的是读方法,_stroe表示的是写方法。通过以下实例我们可以在Sysfs文件系统中建立一个dev_attr_watchdog的属性文件。其中wd_show和wd_store分别为读写方法。
staticDEVICE_ATTR(watchdog,S_IRUGO|S_IWUSR,wd_show,wd_store);
将_mode设置为S_IRUGO|S_IWUSR使创建的属性文件为可读可写。在驱动的初始化函数中需要调用device_create_file来使属性文件与驱动设备文件关联。函数原型为intdevice_create_file(structdevicedev,conststructdevice_attributeattr);
二、属性的读写