gpt4 book ai didi

linux-kernel - 用户空间如何能够写入 sysfs

转载 作者:行者123 更新时间:2023-12-04 04:04:23 27 4
gpt4 key购买 nike

最近我正在查看 kobjects 和 sysfs 的内核。

我知道/理解以下..

  • 所有内核对象使用地址 > 0x80000000
  • kobjects 也不异常(exception)
  • sysfs 只不过是 kobjects 的层次结构(可能包括 ksets 和其他 k* 东西..不确定)

根据这些信息,我不确定我是否完全理解运行 echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

时会发生什么

我可以看到 cpufreq 模块有一个名为 store_scaling_governor 的函数,它处理对此"file"的写入..但是用户模式如何通过这个简单的 echo 超越内核模式?

最佳答案

当你执行命令 echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 时,你的 shell 调用 write 系统调用,然后内核调度它用于相应的处理程序。

cpufreq 使用sysfs_ops 设置struct kobj_type ktype_cpufreq。然后cpufreq在cpufreq_add_dev_interface()中注册。之后,内核可以获得相应的处理程序以在 write 系统调用上执行。

关于linux-kernel - 用户空间如何能够写入 sysfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17618326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com