在用户空间中,我可以echo noop > /sys/block/sda/queue/scheduler
。
如何在内核模块中做同样的事情?
我期待这样的事情(伪代码):
struct dentry* e = sysfs_get_root();
vfs_path_lookup(e, ????, "block/sda/queue/scheduler", ???);
????;
struct something* q = ????;
????->store(q, "noop", 1);
/* some cleanup */
如何正确实施?
我的内核模块只注册 SysRQ 处理程序,并且应该在触发 SysRQ 时配置 io 调度程序(由于 io-scheduler 错误,用户空间程序可能会在那时挂起)