# File lib/facter/util/processor.rb, line 2
 2:   def self.enum_cpuinfo
 3:     processor_num = -1
 4:     processor_list = []
 5:     cpuinfo = "/proc/cpuinfo"
 6: 
 7:     if File.exists?(cpuinfo)
 8:       model = Facter.value(:architecture)
 9:       case model
10:       when "x86_64", "amd64", "i386", /parisc/, "hppa", "ia64"
11:         Thread::exclusive do
12:           File.readlines(cpuinfo).each do |l|
13:             if l =~ /processor\s+:\s+(\d+)/
14:               processor_num = $1.to_i
15:             elsif l =~ /model name\s+:\s+(.*)\s*$/
16:               processor_list[processor_num] = $1 unless processor_num == -1
17:               processor_num = -1
18:             elsif l =~ /processor\s+(\d+):\s+(.*)/
19:               processor_num = $1.to_i
20:               processor_list[processor_num] = $2 unless processor_num == -1
21:             end
22:           end
23:         end
24: 
25:       when "ppc64"
26:         Thread::exclusive do
27:           File.readlines(cpuinfo).each do |l|
28:             if l =~ /processor\s+:\s+(\d+)/
29:               processor_num = $1.to_i
30:             elsif l =~ /cpu\s+:\s+(.*)\s*$/
31:               processor_list[processor_num] = $1 unless processor_num == -1
32:               processor_num = -1
33:             end
34:           end
35:         end
36: 
37:       when /arm/
38:         Thread::exclusive do
39:           File.readlines(cpuinfo).each do |l|
40:             if l =~ /Processor\s+:\s+(.+)/
41:               processor_num += 1
42:               processor_list[processor_num] = $1.chomp
43:             elsif l =~ /processor\s+:\s+(\d+)\s*$/
44:               proc_num = $1.to_i
45:               if proc_num != 0
46:                 processor_num += 1
47:                 processor_list[processor_num] = processor_list[processor_num-1]
48:               end
49:             end
50:           end
51:         end
52: 
53:       when /sparc/
54:         Thread::exclusive do
55:           File.readlines(cpuinfo).each do |l|
56:             if l =~ /cpu\s+:\s+(.*)\s*$/
57:               processor_num += 1
58:               processor_list[processor_num] = $1
59:             end
60:           end
61:         end
62:       end
63:     end
64:     processor_list
65:   end