В пользовательском пространстве я могу просто 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 и должен настроить планировщик io, когда этот SysRQ запущен (программы пользовательского пространства могут зависать в это время из-за плохого планировщика io)