Detect CPUs in a more reliable fashion

pull/16/head
Timothy Pearson 12 years ago
parent d2480b90f5
commit 7fd6a1177d

@ -2137,13 +2137,15 @@ void TDEHardwareDevices::processModifiedCPUs() {
processorNumber = curline.toInt();
if (!cdevice) {
cdevice = dynamic_cast<TDECPUDevice*>(findBySystemPath(TQString("/sys/devices/system/cpu/cpu%1").arg(processorNumber)));
// Set up CPU information structures
if (cdevice->name() != modelName) modified = true;
cdevice->internalSetName(modelName);
if (cdevice->vendorName() != vendorName) modified = true;
cdevice->internalSetVendorName(vendorName);
if (cdevice->vendorEncoded() != vendorName) modified = true;
cdevice->internalSetVendorEncoded(vendorName);
if (cdevice) {
// Set up CPU information structures
if (cdevice->name() != modelName) modified = true;
cdevice->internalSetName(modelName);
if (cdevice->vendorName() != vendorName) modified = true;
cdevice->internalSetVendorName(vendorName);
if (cdevice->vendorEncoded() != vendorName) modified = true;
cdevice->internalSetVendorEncoded(vendorName);
}
}
}
curline = curline.stripWhiteSpace();
@ -4630,33 +4632,24 @@ void TDEHardwareDevices::addCoreSystemDevices() {
// Handle CPUs, which are currently handled terribly by udev
// Parse /proc/cpuinfo to extract some information about the CPUs
hwdevice = 0;
TQStringList lines;
TQFile file( "/proc/cpuinfo" );
if ( file.open( IO_ReadOnly ) ) {
TQTextStream stream( &file );
TQString line;
int processorNumber = -1;
while ( !stream.atEnd() ) {
line = stream.readLine();
// WARNING This routine assumes that "processor" is always the first entry in /proc/cpuinfo!
// FIXME Parse all available information, such as frequency, etc.
if (line.startsWith("processor")) {
line.remove(0, line.find(":")+1);
line = line.stripWhiteSpace();
processorNumber = line.toInt();
TQDir d("/sys/devices/system/cpu/");
d.setFilter( TQDir::Dirs );
const TQFileInfoList *list = d.entryInfoList();
TQFileInfoListIterator it( *list );
TQFileInfo *fi;
while ((fi = it.current()) != 0) {
TQString directoryName = fi->fileName();
if (directoryName.startsWith("cpu")) {
directoryName = directoryName.remove(0,3);
bool isInt;
int processorNumber = directoryName.toUInt(&isInt, 10);
if (isInt) {
hwdevice = new TDECPUDevice(TDEGenericDeviceType::CPU);
hwdevice->internalSetSystemPath(TQString("/sys/devices/system/cpu/cpu%1").arg(processorNumber));
m_deviceList.append(hwdevice);
#if 0
// Set up CPU information monitor
// The only way CPU information can be changed is if something changes in the cpufreq node
// This may change in the future, but for now it is a fairly good assumption
m_cpuWatch->addDir(TQString("/sys/devices/system/cpu/cpu%1/cpufreq").arg(processorNumber));
#endif
}
lines += line;
}
file.close();
++it;
}
// Populate CPU information

Loading…
Cancel
Save