CpuInfo::CpuInfo() { QFile cpuInfoFile("/proc/cpuinfo"); if (!cpuInfoFile.open(QIODevice::ReadOnly)) { return; } cpuInfo = QString(cpuInfoFile.readAll()).split('\n', QString::SkipEmptyParts); }
void NAClusterInfoLinux::determineLinuxSysInfo() { // Set the page size in killobytes and determine how much memory // is available on this node (in kilobytes). pageSize_ = (size_t)sysconf(_SC_PAGESIZE) / 1024U; totalMemoryAvailable_ = pageSize_ * (size_t)sysconf(_SC_PHYS_PAGES); numCPUcoresPerNode_ = sysconf(_SC_NPROCESSORS_ONLN); frequency_ = 0.0; // Read the CPU frequency from the sysfs filesystem. ifstream infoFile("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); if (infoFile.fail()) { // This code should log a warning. // use /proc/cpuinfo char var[256]; ifstream cpuInfoFile("/proc/cpuinfo"); const char* freqToken = "cpu MHz"; Lng32 freqTokenLen = strlen(freqToken); while(cpuInfoFile.good()) { // Read the variable name from the file. cpuInfoFile.getline(var, sizeof(var), ':'); // read the token part Lng32 len = strlen(var); if(len >= freqTokenLen && !strncmp(var, freqToken, freqTokenLen)) { cpuInfoFile >> frequency_; break; } cpuInfoFile.getline(var, sizeof(var)); // read the value part }
QString extractCpuInfoLine(int processorNumber, const QString ®ExpStr) { if (processorNumber == -1) { return QString(); } QFile cpuInfoFile("/proc/cpuinfo"); if (!cpuInfoFile.open(QIODevice::ReadOnly)) { return QString(); } QStringList cpuInfo = QString(cpuInfoFile.readAll()).split('\n', QString::SkipEmptyParts); cpuInfoFile.close(); const QRegExp processorRegExp("processor\\s+:\\s+(\\d+)"); const QRegExp regExp(regExpStr); int line = 0; while (line < cpuInfo.size()) { if (processorRegExp.exactMatch(cpuInfo.at(line))) { int recordProcNum = processorRegExp.capturedTexts()[1].toInt(); if (recordProcNum == processorNumber) { ++line; while (line < cpuInfo.size()) { if (regExp.exactMatch(cpuInfo.at(line))) { return regExp.capturedTexts()[1]; } ++line; } } } ++line; } return QString(); }
void QLCFile::checkRaspberry() { #if defined(Q_WS_X11) || defined(Q_OS_LINUX) QFile cpuInfoFile("/proc/cpuinfo"); if (cpuInfoFile.exists() == true) { cpuInfoFile.open(QFile::ReadOnly); QString content = QLatin1String(cpuInfoFile.readAll()); cpuInfoFile.close(); if (content.contains("BCM2708") || content.contains("BCM2709")) m_isRaspberry = true; } #endif }