cat/echo 设备属性文件 是怎么一个过程?接口调用是怎么样的?

[复制链接]
查看11 | 回复2 | 2021-1-27 06:27:39 | 显示全部楼层 |阅读模式
本人菜鸟,最近接触linux,感觉sys/device下面的文件可以用cat/echo来操作很神奇,找了良久没发现cat/echo的接口函数在哪儿,还有echo进去的参数是怎么传递的。比如:
wake_store(structdevice*dev,structdevice_attribute*attr,
constchar*buf,size_tcount){
}
staticDEVICE_ATTR(wakeup,0644,wake_show,wake_store);
当我echo3>sys/device/power/wakeup的时候,我知道最终调用的是wake_store(),但是中间的过程还是不怎么明白,希望高手指点。还有BUF/count这两个参数是怎么传的?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:27:39 | 显示全部楼层
strace跟一下就知道其中的系统调用也就是writeread
sys就是一种虚拟文件系统,能够读写是正常的
Unix下一切都被抽象成文件,对硬件的操作也被封装成对文件的读写操作
对于sysfs中文件的操作,被vfs层传递给sysfs时只有read和write了
对应sysfs的
structdevice_attribute{
structattributeattr;
ssize_t(*show)(structdevice*dev,structdevice_attribute*attr,
char*buf);
ssize_t(*store)(structdevice*dev,structdevice_attribute*attr,
constchar*buf,size_tcount);
};
读sysfs里的文件,对应show()
写sysfs的文件,对应store(),这里store指针被指向wake_store
这部分代码见drivers/base/power/sysfs.c-sysfsentriesfordevicePM
回复

使用道具 举报

千问 | 2021-1-27 06:27:39 | 显示全部楼层
nb啊同学
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行