in src/sys_info.cc [307:340]
std::string SysInfo::scheduler_from_device(std::string device) {
std::string line;
std::ifstream schedfile(std::string("/sys/block/"+device+"/queue/scheduler"));
if (!schedfile.is_open()) {
fprintf(stderr, "Couldn't open scheduler file for device %s\n", device.c_str());
exit(1);
}
std::getline(schedfile, line);
schedfile.close();
// the line of schedulers is like "sched1 sched2 [selectedsched]"
char buf[line.size() + 1];
buf[line.size()] = '\0';
memcpy(buf, line.c_str(), line.size());
ssize_t schedstart = -1;
for (unsigned i = 0; i < line.size(); ++i) {
if (buf[i] == '[') {
schedstart = i+1;
}
if (buf[i] == ']') {
buf[i] = '\0';
break;
}
}
std::string sched = std::string(&buf[schedstart]);
return sched;
}