1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- --- phctool/inc/libs/cpuinfo.py
- +++ phctool/inc/libs/cpuinfo.py
- @@ -14,33 +14,49 @@
-
-
- def _get_acpi_cpus(self):
- - ##count number of CPUs on this system using acpi proc interface
- - ##since we need acpi this i a good way to count CPUs
- - ##we also will remember the Directory-Name because on single CPU
- - ##systems the Dir may be named CPU while on Multicores they are indexed (CPU0, CPU1) ..
- - directory="/proc/acpi/processor/"
- - for f in os.listdir(directory): ##iterate the directory
- - pathname = os.path.join(directory, f) ##
- - if os.path.isdir(pathname): ##is the object we found really a (sub-)directory?
- - ##We open the info-file to get the ID to this CPU,
- - ##i don't know if this really could happen but the ID may differ from
- - ##from the Path iterator (maybe one CPU is supported and another isn't)
- - if os.path.exists(pathname+'/info'):
- - file = open(pathname+'/info', 'r');
- - for line in file:
- - if string.find(line,":"):
- - content = line.split(":");
- - if len(content)>1:
- - info_ident=content[0].strip();
- - info_value=content[1].strip();
- - if info_ident == "processor id":
- - cpunr=info_value
- - self.data[cpunr]={}
- - self.data[cpunr]['acpi']={}
- - self.data[cpunr]['acpi']['exist']=True
- - self.data[cpunr]['acpi']['acpiname']=f ##remember ACPI Pathname
- - else:
- - self.data[cpunr]['acpi']['exist']=False
- + # We need to ignore /proc/acpi/processor as it's becoming deprecated
- + # A good solution might be a look in online cpus, but it doesn't mean they are surely ACPI-supported
- + if os.path.exists('/sys/devices/system/cpu/online'):
- + file = open('/sys/devices/system/cpu/online', 'r');
- + for line in file:
- + if string.find(line,"-"):
- + content = line.split("-");
- + for val in content:
- + cpunr=val.strip();
- + self.data[cpunr]={}
- + self.data[cpunr]['acpi']={}
- + self.data[cpunr]['acpi']['exist']=True
- + # This sounds useful just for throttling, which is managed better by other stuff... I'll keep just for compatibility
- + if os.path.exists('/proc/acpi/processor/CPU'+cpunr):
- + ##remember ACPI Pathname
- + self.data[cpunr]['acpi']['acpiname']='/proc/acpi/processor/CPU'+cpunr
- + else:
- + self.data[cpunr]['acpi']['exist']=False
- + # For some reason we have to fallback on the old function...
- + else:
- + directory="/proc/acpi/processor/"
- + for f in os.listdir(directory): ##iterate the directory
- + pathname = os.path.join(directory, f) ##
- + if os.path.isdir(pathname): ##is the object we found really a (sub-)directory?
- + ##We open the info-file to get the ID to this CPU,
- + ##i don't know if this really could happen but the ID may differ from
- + ##from the Path iterator (maybe one CPU is supported and another isn't)
- + if os.path.exists(pathname+'/info'):
- + file = open(pathname+'/info', 'r');
- + for line in file:
- + if string.find(line,":"):
- + content = line.split(":");
- + if len(content)>1:
- + info_ident=content[0].strip();
- + info_value=content[1].strip();
- + if info_ident == "processor id":
- + cpunr=info_value
- + self.data[cpunr]={}
- + self.data[cpunr]['acpi']={}
- + self.data[cpunr]['acpi']['exist']=True
- + self.data[cpunr]['acpi']['acpiname']=f ##remember ACPI Pathname
- + else:
- + self.data[cpunr]['acpi']['exist']=False
-
-
- def _get_cpuinfos(self):
|