Move caching from sysctl_bool to sysctl_n

This commit is contained in:
Jack Nagel 2015-02-26 23:22:22 -05:00
parent 37c394f828
commit 1255f7b894

View File

@ -15,8 +15,7 @@ module MacCPUs
# These methods use info spewed out by sysctl. # These methods use info spewed out by sysctl.
# Look in <mach/machine.h> for decoding info. # Look in <mach/machine.h> for decoding info.
def type def type
@type ||= sysctl_int("hw.cputype") case sysctl_int("hw.cputype")
case @type
when 7 when 7
:intel :intel
when 18 when 18
@ -28,7 +27,7 @@ module MacCPUs
def family def family
if intel? if intel?
case @intel_family ||= sysctl_int("hw.cpufamily") case sysctl_int("hw.cpufamily")
when 0x73d67300 # Yonah: Core Solo/Duo when 0x73d67300 # Yonah: Core Solo/Duo
:core :core
when 0x426f69ef # Merom: Core 2 Duo when 0x426f69ef # Merom: Core 2 Duo
@ -49,7 +48,7 @@ module MacCPUs
:dunno :dunno
end end
elsif ppc? elsif ppc?
case @ppc_family ||= sysctl_int("hw.cpusubtype") case sysctl_int("hw.cpusubtype")
when 9 when 9
:g3 # PowerPC 750 :g3 # PowerPC 750
when 10 when 10
@ -67,15 +66,15 @@ module MacCPUs
end end
def extmodel def extmodel
@extmodel ||= sysctl_int("machdep.cpu.extmodel") sysctl_int("machdep.cpu.extmodel")
end end
def cores def cores
@cores ||= sysctl_int("hw.ncpu") sysctl_int("hw.ncpu")
end end
def bits def bits
@bits ||= sysctl_bool("hw.cpu64bit_capable") ? 64 : 32 sysctl_bool("hw.cpu64bit_capable") ? 64 : 32
end end
def arch_32_bit def arch_32_bit
@ -138,10 +137,8 @@ module MacCPUs
protected protected
def sysctl_bool(property) def sysctl_bool(key)
(@properties ||= {}).fetch(property) do sysctl_int(key) == 1 && $?.success?
@properties[property] = sysctl_int(property) == 1 && $?.success?
end
end end
def sysctl_int(key) def sysctl_int(key)
@ -149,6 +146,8 @@ module MacCPUs
end end
def sysctl_n(key) def sysctl_n(key)
Utils.popen_read("/usr/sbin/sysctl", "-n", key) (@properties ||= {}).fetch(key) do
@properties[key] = Utils.popen_read("/usr/sbin/sysctl", "-n", key)
end
end end
end end