module Facter::Util::Processor

Public Class Methods

enum_cpuinfo() click to toggle source
# File lib/facter/util/processor.rb, line 2
def self.enum_cpuinfo
  processor_num = -1
  processor_list = []
  cpuinfo = "/proc/cpuinfo"

  if File.exists?(cpuinfo)
    model = Facter.value(:architecture)
    case model
    when "x86_64", "amd64", "i386", %rparisc/, "hppa", "ia64"
      Thread::exclusive do
        File.readlines(cpuinfo).each do |l|
          if l =~ %rprocessor\s+:\s+(\d+)/
            processor_num = $1.to_i
          elsif l =~ %rmodel name\s+:\s+(.*)\s*$/
            processor_list[processor_num] = $1 unless processor_num == -1
            processor_num = -1
          elsif l =~ %rprocessor\s+(\d+):\s+(.*)/
            processor_num = $1.to_i
            processor_list[processor_num] = $2 unless processor_num == -1
          end
        end
      end

    when "ppc64"
      Thread::exclusive do
        File.readlines(cpuinfo).each do |l|
          if l =~ %rprocessor\s+:\s+(\d+)/
            processor_num = $1.to_i
          elsif l =~ %rcpu\s+:\s+(.*)\s*$/
            processor_list[processor_num] = $1 unless processor_num == -1
            processor_num = -1
          end
        end
      end

    when %rarm/
      Thread::exclusive do
        File.readlines(cpuinfo).each do |l|
          if l =~ %rProcessor\s+:\s+(.+)/
            processor_num += 1
            processor_list[processor_num] = $1.chomp
          elsif l =~ %rprocessor\s+:\s+(\d+)\s*$/
            proc_num = $1.to_i
            if proc_num != 0
              processor_num += 1
              processor_list[processor_num] = processor_list[processor_num-1]
            end
          end
        end
      end

    when %rsparc/
      Thread::exclusive do
        File.readlines(cpuinfo).each do |l|
          if l =~ %rcpu\s+:\s+(.*)\s*$/
            processor_num += 1
            processor_list[processor_num] = $1
          end
        end
      end
    end
  end
  processor_list
end
enum_kstat() click to toggle source
# File lib/facter/util/processor.rb, line 89
def self.enum_kstat
  processor_num = -1
  processor_list = []
  Thread::exclusive do
    kstat = Facter::Util::Resolution.exec('/usr/bin/kstat cpu_info')
    if kstat
      kstat.each_line do |l|
        if l =~ %rcpu_info(\d+)/
          processor_num = $1.to_i
        elsif l =~ %rbrand\s+(.*)\s*$/
          processor_list[processor_num] = $1 unless processor_num == -1
          processor_num = -1
        end
      end
    end
  end
  processor_list
end
enum_lsdev() click to toggle source
# File lib/facter/util/processor.rb, line 67
def self.enum_lsdev
  processor_num = -1
  processor_list = {}
  Thread::exclusive do
    procs = Facter::Util::Resolution.exec('lsdev -Cc processor')
    if procs
      procs.each_line do |proc|
        if proc =~ %r^proc(\d+)/
          processor_num = $1.to_i
          # Not retrieving the frequency since AIX 4.3.3 doesn't support the
          # attribute and some people still use the OS.
          proctype = Facter::Util::Resolution.exec('lsattr -El proc0 -a type')
          if proctype =~ %r^type\s+(\S+)\s+/
            processor_list[processor_num] = $1
          end
        end
      end
    end
  end
  processor_list
end