summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/SystemInformation.cxx
diff options
context:
space:
mode:
authorFrancois Bertel <francois.bertel@kitware.com>2009-03-20 02:48:05 (GMT)
committerFrancois Bertel <francois.bertel@kitware.com>2009-03-20 02:48:05 (GMT)
commitad4a2fd6970358298ef7f21d46f141b9dcdfad9b (patch)
treeb30b3af50b8664965ba7e37112807abc1978454e /Source/kwsys/SystemInformation.cxx
parent55a6042d9c5e1b644f50a1c475cd683af5ed1f3f (diff)
downloadCMake-ad4a2fd6970358298ef7f21d46f141b9dcdfad9b.zip
CMake-ad4a2fd6970358298ef7f21d46f141b9dcdfad9b.tar.gz
CMake-ad4a2fd6970358298ef7f21d46f141b9dcdfad9b.tar.bz2
COMP:Fixed warnings with gcc 4.3.2.
Diffstat (limited to 'Source/kwsys/SystemInformation.cxx')
-rw-r--r--Source/kwsys/SystemInformation.cxx137
1 files changed, 93 insertions, 44 deletions
diff --git a/Source/kwsys/SystemInformation.cxx b/Source/kwsys/SystemInformation.cxx
index 46f49b7..8770daa 100644
--- a/Source/kwsys/SystemInformation.cxx
+++ b/Source/kwsys/SystemInformation.cxx
@@ -104,7 +104,7 @@ public:
const char * GetExtendedProcessorName();
const char * GetProcessorSerialNumber();
int GetProcessorCacheSize();
- int GetLogicalProcessorsPerPhysical();
+ unsigned int GetLogicalProcessorsPerPhysical();
float GetProcessorClockFrequency();
int GetProcessorAPICID();
int GetProcessorCacheXSize(long int);
@@ -166,7 +166,7 @@ public:
bool HasMMXPlus;
bool HasSSEMMX;
bool SupportsHyperthreading;
- int LogicalProcessorsPerPhysical;
+ unsigned int LogicalProcessorsPerPhysical;
int APIC_ID;
CPUPowerManagement PowerManagement;
} CPUExtendedFeatures;
@@ -317,7 +317,7 @@ int SystemInformation::GetProcessorCacheSize()
{
return this->Implementation->GetProcessorCacheSize();
}
-int SystemInformation::GetLogicalProcessorsPerPhysical()
+unsigned int SystemInformation::GetLogicalProcessorsPerPhysical()
{
return this->Implementation->GetLogicalProcessorsPerPhysical();
}
@@ -680,7 +680,7 @@ const char * SystemInformationImplementation::GetProcessorSerialNumber()
}
/** Return the logical processors per physical */
-int SystemInformationImplementation::GetLogicalProcessorsPerPhysical()
+unsigned int SystemInformationImplementation::GetLogicalProcessorsPerPhysical()
{
return this->Features.ExtendedFeatures.LogicalProcessorsPerPhysical;
}
@@ -1563,7 +1563,7 @@ bool SystemInformationImplementation::RetrieveExtendedCPUFeatures()
}
// Check to see if what we are about to do is supported...
- if (!RetrieveCPUExtendedLevelSupport (0x80000001))
+ if (!RetrieveCPUExtendedLevelSupport(static_cast<int>(0x80000001)))
{
return false;
}
@@ -1698,7 +1698,7 @@ bool SystemInformationImplementation::RetrieveProcessorSerialNumber()
bool SystemInformationImplementation::RetrieveCPUPowerManagement()
{
// Check to see if what we are about to do is supported...
- if (!RetrieveCPUExtendedLevelSupport (0x80000007))
+ if (!RetrieveCPUExtendedLevelSupport(static_cast<int>(0x80000007)))
{
this->Features.ExtendedFeatures.PowerManagement.HasFrequencyID = false;
this->Features.ExtendedFeatures.PowerManagement.HasVoltageID = false;
@@ -1755,9 +1755,12 @@ bool SystemInformationImplementation::RetrieveCPUPowerManagement()
bool SystemInformationImplementation::RetrieveExtendedCPUIdentity()
{
// Check to see if what we are about to do is supported...
- if (!RetrieveCPUExtendedLevelSupport(0x80000002)) return false;
- if (!RetrieveCPUExtendedLevelSupport(0x80000003)) return false;
- if (!RetrieveCPUExtendedLevelSupport(0x80000004)) return false;
+ if (!RetrieveCPUExtendedLevelSupport(static_cast<int>(0x80000002)))
+ return false;
+ if (!RetrieveCPUExtendedLevelSupport(static_cast<int>(0x80000003)))
+ return false;
+ if (!RetrieveCPUExtendedLevelSupport(static_cast<int>(0x80000004)))
+ return false;
#if USE_ASM_INSTRUCTIONS
int ProcessorNameStartPos = 0;
@@ -2169,7 +2172,7 @@ int SystemInformationImplementation::RetreiveInformationFromCpuInfoFile()
size_t fileSize = 0;
while(!feof(fd))
{
- buffer += static_cast<unsigned char>(fgetc(fd));
+ buffer += static_cast<char>(fgetc(fd));
fileSize++;
}
fclose( fd );
@@ -2204,7 +2207,8 @@ int SystemInformationImplementation::RetreiveInformationFromCpuInfoFile()
kwsys_stl::string cores =
this->ExtractValueFromCpuInfoFile(buffer,"cpu cores");
int numberOfCoresPerCPU=atoi(cores.c_str());
- this->NumberOfPhysicalCPU=numberOfCoresPerCPU*(maxId+1);
+ this->NumberOfPhysicalCPU=static_cast<unsigned int>(
+ numberOfCoresPerCPU*(maxId+1));
#else // __CYGWIN__
// does not have "physical id" entries, neither "cpu cores"
@@ -2222,7 +2226,7 @@ int SystemInformationImplementation::RetreiveInformationFromCpuInfoFile()
}
// LogicalProcessorsPerPhysical>1 => hyperthreading.
this->Features.ExtendedFeatures.LogicalProcessorsPerPhysical=
- this->NumberOfLogicalCPU/this->NumberOfPhysicalCPU;
+ this->NumberOfLogicalCPU/this->NumberOfPhysicalCPU;
// CPU speed (checking only the first proc
kwsys_stl::string CPUSpeed = this->ExtractValueFromCpuInfoFile(buffer,"cpu MHz");
@@ -2328,33 +2332,62 @@ int SystemInformationImplementation::QueryMemory()
// Rigorously, this test should check from the developping version 2.5.x
// that introduced the new format...
- long freeMem;
- long buffersMem;
- long cachedMem;
-
- fscanf(fd,"MemTotal:%ld kB\n", &this->TotalPhysicalMemory);
- fscanf(fd,"MemFree:%ld kB\n", &freeMem);
- fscanf(fd,"Buffers:%ld kB\n", &buffersMem);
- fscanf(fd,"Cached:%ld kB\n", &cachedMem);
+ unsigned long freeMem;
+ unsigned long buffersMem;
+ unsigned long cachedMem;
+
+ int status;
- this->TotalPhysicalMemory /= 1024;
- this->AvailablePhysicalMemory = freeMem+cachedMem+buffersMem;
- this->AvailablePhysicalMemory /= 1024;
+ status=fscanf(fd,"MemTotal:%lu kB\n", &this->TotalPhysicalMemory);
+ if(status==1)
+ {
+ status+=fscanf(fd,"MemFree:%lu kB\n", &freeMem);
+ }
+ if(status==2)
+ {
+ status+=fscanf(fd,"Buffers:%lu kB\n", &buffersMem);
+ }
+ if(status==3)
+ {
+ status+=fscanf(fd,"Cached:%lu kB\n", &cachedMem);
+ }
+ if(status==4)
+ {
+ this->TotalPhysicalMemory /= 1024;
+ this->AvailablePhysicalMemory = freeMem+cachedMem+buffersMem;
+ this->AvailablePhysicalMemory /= 1024;
+ }
// Skip SwapCached, Active, Inactive, HighTotal, HighFree, LowTotal
// and LowFree.
int i=0;
- while(i<7)
+ bool success=status==4;
+ while(i<7 && success)
{
- fgets(buffer, sizeof(buffer), fd); // skip a line
+ char *r=fgets(buffer, sizeof(buffer), fd); // skip a line
+ success=r==buffer;
++i;
}
- fscanf(fd,"SwapTotal:%ld kB\n", &this->TotalVirtualMemory);
- fscanf(fd,"SwapFree:%ld kB\n", &this->AvailableVirtualMemory);
-
- this->TotalVirtualMemory /= 1024;
- this->AvailableVirtualMemory /= 1024;
+ if(success)
+ {
+ status+=fscanf(fd,"SwapTotal:%lu kB\n", &this->TotalVirtualMemory);
+ }
+ if(status==5)
+ {
+ status+=fscanf(fd,"SwapFree:%lu kB\n", &this->AvailableVirtualMemory);
+ }
+ if(status==6)
+ {
+ this->TotalVirtualMemory /= 1024;
+ this->AvailableVirtualMemory /= 1024;
+ }
+ else
+ {
+ kwsys_ios::cout << "Problem parsing /proc/meminfo" << kwsys_ios::endl;
+ fclose(fd);
+ return 0;
+ }
}
else
{
@@ -2363,16 +2396,30 @@ int SystemInformationImplementation::QueryMemory()
unsigned long temp;
unsigned long cachedMem;
unsigned long buffersMem;
- fgets(buffer, sizeof(buffer), fd); // Skip "total: used:..."
-
- fscanf(fd, "Mem: %lu %lu %lu %lu %lu %lu\n",
- &tp, &temp, &ap, &temp, &buffersMem, &cachedMem);
- fscanf(fd, "Swap: %lu %lu %lu\n", &tv, &temp, &av);
-
- this->TotalVirtualMemory = tv>>10>>10;
- this->TotalPhysicalMemory = tp>>10>>10;
- this->AvailableVirtualMemory = av>>10>>10;
- this->AvailablePhysicalMemory = (ap+buffersMem+cachedMem)>>10>>10;
+ char *r=fgets(buffer, sizeof(buffer), fd); // Skip "total: used:..."
+ int status=0;
+ if(r==buffer)
+ {
+ status+=fscanf(fd, "Mem: %lu %lu %lu %lu %lu %lu\n",
+ &tp, &temp, &ap, &temp, &buffersMem, &cachedMem);
+ }
+ if(status==6)
+ {
+ status+=fscanf(fd, "Swap: %lu %lu %lu\n", &tv, &temp, &av);
+ }
+ if(status==9)
+ {
+ this->TotalVirtualMemory = tv>>10>>10;
+ this->TotalPhysicalMemory = tp>>10>>10;
+ this->AvailableVirtualMemory = av>>10>>10;
+ this->AvailablePhysicalMemory = (ap+buffersMem+cachedMem)>>10>>10;
+ }
+ else
+ {
+ kwsys_ios::cout << "Problem parsing /proc/meminfo" << kwsys_ios::endl;
+ fclose(fd);
+ return 0;
+ }
}
fclose( fd );
return 1;
@@ -2725,13 +2772,14 @@ bool SystemInformationImplementation::ParseSysCtl()
this->SysCtlBuffer = this->RunProcess(args);
// Parse values for Mac
- this->TotalPhysicalMemory = atoi(this->ExtractValueFromSysCtl("hw.memsize:").c_str())/(1024*1024);
+ this->TotalPhysicalMemory = static_cast<unsigned long>(
+ atoi(this->ExtractValueFromSysCtl("hw.memsize:").c_str())/(1024*1024));
this->TotalVirtualMemory = 0;
this->AvailablePhysicalMemory = 0;
this->AvailableVirtualMemory = 0;
- this->NumberOfPhysicalCPU = atoi(this->ExtractValueFromSysCtl("hw.physicalcpu:").c_str());
- this->NumberOfLogicalCPU = atoi(this->ExtractValueFromSysCtl("hw.logicalcpu:").c_str());
+ this->NumberOfPhysicalCPU = static_cast<unsigned int>(atoi(this->ExtractValueFromSysCtl("hw.physicalcpu:").c_str()));
+ this->NumberOfLogicalCPU = static_cast<unsigned int>(atoi(this->ExtractValueFromSysCtl("hw.logicalcpu:").c_str()));
if(this->NumberOfPhysicalCPU!=0)
{
@@ -2908,7 +2956,8 @@ kwsys_stl::string SystemInformationImplementation::ParseValueFromKStat(const cha
bool SystemInformationImplementation::QuerySolarisInfo()
{
// Parse values
- this->NumberOfPhysicalCPU = atoi(this->ParseValueFromKStat("-n syste_misc -s ncpus").c_str());
+ this->NumberOfPhysicalCPU = static_cast<unsigned int>(
+ atoi(this->ParseValueFromKStat("-n syste_misc -s ncpus").c_str()));
this->NumberOfLogicalCPU = this->NumberOfPhysicalCPU;
if(this->NumberOfPhysicalCPU!=0)