std::string SysInfo::scheduler_from_device()

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;
	}