Spec-Zone.ru › Homebrew

Класс: Hardware::CPU Приватный

Наследует:
Object
  • Object
  • Hardware::CPU
показать всё
Определен в:
hardware.rb,
extend/os/mac/hardware/cpu/hardware.rb

Обзор

Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого класса, поскольку он может быть удален или изменен без предупреждения.

Вспомогательный модуль для получения сведений о ЦП.

Краткое описание констант свернуть

INTEL_32BIT_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

[:i386].freeze
INTEL_64BIT_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

[:x86_64].freeze
INTEL_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

T.let((INTEL_32BIT_ARCHS + INTEL_64BIT_ARCHS).freeze, T::Array[Symbol])
PPC_32BIT_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

[:ppc, :ppc32, :ppc7400, :ppc7450, :ppc970].freeze
PPC_64BIT_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

[:ppc64, :ppc64le, :ppc970].freeze
PPC_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

T.let((PPC_32BIT_ARCHS + PPC_64BIT_ARCHS).freeze, T::Array[Symbol])
ARM_64BIT_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

[:arm64, :aarch64].freeze
ARM_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

ARM_64BIT_ARCHS
ALL_ARCHS =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

T.let([
  *INTEL_ARCHS,
  *PPC_ARCHS,
  *ARM_ARCHS,
].freeze, T::Array[Symbol])
INTEL_64BIT_OLDEST_CPU =

Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.

:core2

Краткое описание методов класса свернуть

  • .aes? ⇒ Boolean приватный
  • .altivec? ⇒ Boolean приватный
  • .arch ⇒ Symbol приватный
  • .arch_32_bit ⇒ Symbol приватный
  • .arch_64_bit ⇒ Symbol приватный
  • .arch_flag(arch) ⇒ String приватный
  • .arm64? ⇒ Boolean приватный

    Проверяет, является ли архитектура ЦП 64-разрядной ARM.

  • .arm? ⇒ Boolean внутренний

    Проверяет, является ли архитектура ЦП архитектурой ARM.

  • .arm_family ⇒ Symbol приватный
  • .avx2? ⇒ Boolean приватный
  • .avx? ⇒ Boolean приватный
  • .big_endian? ⇒ Boolean приватный
  • .bits ⇒ Integer? приватный
  • .cores ⇒ Integer приватный
  • .extmodel ⇒ Integer приватный
  • .family ⇒ Symbol приватный
  • .feature?(name) ⇒ Boolean приватный
  • .features ⇒ Array<Symbol> приватный
  • .in_rosetta2? ⇒ Boolean приватный
  • .intel? ⇒ Boolean приватный
  • .intel_family(_family = T.unsafe(nil), _cpu_model = T.unsafe(nil)) ⇒ Symbol приватный
  • .is_32_bit? ⇒ Boolean приватный
  • .is_64_bit? ⇒ Boolean приватный
  • .little_endian? ⇒ Boolean приватный
  • .optimization_flags ⇒ Hash{Symbol => String} приватный
  • .physical_cpu_arm64? ⇒ Boolean приватный
  • .ppc32? ⇒ Boolean приватный
  • .ppc64? ⇒ Boolean приватный
  • .ppc64le? ⇒ Boolean приватный
  • .ppc? ⇒ Boolean приватный
  • .sse3? ⇒ Boolean приватный
  • .sse4? ⇒ Boolean приватный
  • .sse4_2? ⇒ Boolean приватный
  • .ssse3? ⇒ Boolean приватный
  • .sysctl_bool!(key) ⇒ Boolean приватный
  • .sysctl_int(key) ⇒ Integer приватный
  • .sysctl_n(*keys) ⇒ String приватный
  • .type ⇒ Symbol приватный
  • .virtualized? ⇒ Boolean приватный

Подробное описание методов класса

.aes? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


13
14
15
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 13

def aes?
  sysctl_bool!("hw.optional.aes")
end

.altivec? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


18
19
20
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 18

def altivec?
  sysctl_bool!("hw.optional.altivec")
end

.arch ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Symbol)


75
76
77
78
79
80
81
82
83
84
# File 'hardware.rb', line 75

def arch
  case bits
  when 32
    arch_32_bit
  when 64
    arch_64_bit
  else
    :dunno
  end
end

.arch_32_bit ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Symbol)


47
48
49
50
51
52
53
54
55
56
57
# File 'hardware.rb', line 47

def arch_32_bit
  if arm?
    :arm
  elsif intel?
    :i386
  elsif ppc32?
    :ppc32
  else
    :dunno
  end
end

.arch_64_bit ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Symbol)


60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'hardware.rb', line 60

def arch_64_bit
  if arm?
    :arm64
  elsif intel?
    :x86_64
  elsif ppc64le?
    :ppc64le
  elsif ppc64?
    :ppc64
  else
    :dunno
  end
end

.arch_flag(arch) ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • arch (String, Symbol)

Возвращает:

  • (String)


200
201
202
203
204
# File 'hardware.rb', line 200

def arch_flag(arch)
  return "-mcpu=#{arch}" if ppc?

  "-march=#{arch}"
end

.arm64? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Проверяет, использует ли процесс 64-разрядную архитектуру ARM.

Возвращает:

  • (Boolean)


170
171
172
# File 'hardware.rb', line 170

def arm64?
  arm? && is_64_bit?
end

.arm? ⇒ Boolean

Этот метод является частью внутреннего API. Этот метод можно использовать только внутри репозиториев, принадлежащих Homebrew, за исключением casks и formulae. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Проверяет, использует ли процесс архитектуру ARM.

Возвращает:

  • (Boolean)


164
165
166
# File 'hardware.rb', line 164

def arm?
  type == :arm
end

.arm_family ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Symbol)


60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 60

def arm_family
  case sysctl_int("hw.cpufamily")
  when 0x2c91a47e             # ARMv8.0-A (Typhoon)
    :arm_typhoon
  when 0x92fb37c8             # ARMv8.0-A (Twister)
    :arm_twister
  when 0x67ceee93             # ARMv8.1-A (Hurricane, Zephyr)
    :arm_hurricane_zephyr
  when 0xe81e7ef6             # ARMv8.2-A (Monsoon, Mistral)
    :arm_monsoon_mistral
  when 0x07d34b9f             # ARMv8.3-A (Vortex, Tempest)
    :arm_vortex_tempest
  when 0x462504d2             # ARMv8.4-A (Lightning, Thunder)
    :arm_lightning_thunder
  when 0x573b5eec, 0x1b588bb3 # ARMv8.4-A (Firestorm, Icestorm)
    :arm_firestorm_icestorm
  when 0xda33d83d             # ARMv8.5-A (Blizzard, Avalanche)
    :arm_blizzard_avalanche
  when 0xfa33415e             # ARMv8.6-A (M3, Ibiza)
    :arm_ibiza
  when 0x5f4dea93             # ARMv8.6-A (M3 Pro, Lobos)
    :arm_lobos
  when 0x72015832             # ARMv8.6-A (M3 Max, Palma)
    :arm_palma
  when 0x6f5129ac             # ARMv9.2-A (M4, Donan)
    :arm_donan
  when 0x17d5b93a             # ARMv9.2-A (M4 Pro / M4 Max, Brava)
    :arm_brava
  when 0x1d5a87e8             # ARMv9.2-A (M5, Hidra)
    :arm_hidra
  when 0xf76c5b1a             # ARMv9.2-A (M5 Pro / M5 Max, Sotra)
    :arm_sotra
  else
    # When adding new ARM CPU families, please also update
    # test/hardware/cpu_spec.rb to include the new families.
    :dunno
  end
end

.avx2? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


28
29
30
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 28

def avx2?
  sysctl_bool!("hw.optional.avx2_0")
end

.avx? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


23
24
25
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 23

def avx?
  sysctl_bool!("hw.optional.avx1_0")
end

.big_endian? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


180
181
182
# File 'hardware.rb', line 180

def big_endian?
  [1].pack("I") == [1].pack("N")
end

.bits ⇒ Integer?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Integer, nil)


113
114
115
116
117
118
# File 'hardware.rb', line 113

def bits
  @bits ||= T.let(case RUBY_PLATFORM
  when /x86_64/, /ppc64|powerpc64/, /aarch64|arm64/ then 64
  when /i\d86/, /ppc/, /arm/ then 32
  end, T.nilable(Integer))
end

.cores ⇒ Integer

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Integer)


102
103
104
105
106
107
108
109
110
# File 'hardware.rb', line 102

def cores
  @cores ||= T.let(
    begin
      cores = Utils.popen_read("getconf", "_NPROCESSORS_ONLN").chomp.to_i
      $CHILD_STATUS.success? ? cores : 1
    end,
    T.nilable(Integer),
  )
end

.extmodel ⇒ Integer

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Integer)


8
9
10
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 8

def extmodel
  sysctl_int("machdep.cpu.extmodel")
end

.family ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Symbol)


97
98
99
# File 'hardware.rb', line 97

def family
  :dunno
end

.feature?(name) ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • name (Symbol)

Возвращает:

  • (Boolean)


195
196
197
# File 'hardware.rb', line 195

def feature?(name)
  features.include?(name)
end

.features ⇒ Array<Symbol>

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<Symbol>)


190
191
192
# File 'hardware.rb', line 190

def features
  []
end

.in_rosetta2? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


207
208
209
# File 'hardware.rb', line 207

def in_rosetta2?
  false
end

.intel? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


136
137
138
# File 'hardware.rb', line 136

def intel?
  type == :intel
end

.intel_family(_family = T.unsafe(nil), _cpu_model = T.unsafe(nil)) ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • _family (Integer) (по умолчанию: T.unsafe(nil))
  • _cpu_model (Integer) (по умолчанию: T.unsafe(nil))

Возвращает:

  • (Symbol)


100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 100

def intel_family(_family = T.unsafe(nil), _cpu_model = T.unsafe(nil))
  case sysctl_int("hw.cpufamily")
  when 0x73d67300 # Yonah: Core Solo/Duo
    :core
  when 0x426f69ef # Merom: Core 2 Duo
    :core2
  when 0x78ea4fbc # Penryn
    :penryn
  when 0x6b5a4cd2 # Nehalem
    :nehalem
  when 0x573b5eec # Westmere
    :westmere
  when 0x5490b78c # Sandy Bridge
    :sandybridge
  when 0x1f65e835 # Ivy Bridge
    :ivybridge
  when 0x10b282dc # Haswell
    :haswell
  when 0x582ed09c # Broadwell
    :broadwell
  when 0x37fc219f # Skylake
    :skylake
  when 0x0f817246 # Kaby Lake
    :kabylake
  when 0x38435547 # Ice Lake
    :icelake
  when 0x1cf8a03e # Comet Lake
    :cometlake
  else
    :dunno
  end
end

.is_32_bit? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


126
127
128
# File 'hardware.rb', line 126

def is_32_bit?
  bits == 32
end

.is_64_bit? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


131
132
133
# File 'hardware.rb', line 131

def is_64_bit?
  bits == 64
end

.little_endian? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


175
176
177
# File 'hardware.rb', line 175

def little_endian?
  !big_endian?
end

.optimization_flags ⇒ Hash{Symbol => String}

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Hash{Symbol => String})


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'hardware.rb', line 28

def optimization_flags
  @optimization_flags ||= T.let({
    dunno:              "",
    native:             arch_flag("native"),
    ivybridge:          "-march=ivybridge",
    sandybridge:        "-march=sandybridge",
    westmere:           "-march=westmere",
    nehalem:            "-march=nehalem",
    core2:              "-march=core2",
    core:               "-march=prescott",
    arm_vortex_tempest: "", # TODO: -mcpu=apple-m1 when we've patched all our GCCs to support it
    armv6:              "-march=armv6",
    armv8:              "-march=armv8-a",
    ppc64:              "-mcpu=powerpc64",
    ppc64le:            "-mcpu=powerpc64le",
  }.freeze, T.nilable(T::Hash[Symbol, String]))
end

.physical_cpu_arm64? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Примечание:

Это надёжнее, чем проверять uname. sysctl возвращает правильный результат даже при работе в Rosetta 2.

Возвращает:

  • (Boolean)


50
51
52
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 50

def physical_cpu_arm64?
  sysctl_bool!("hw.optional.arm64")
end

.ppc32? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


146
147
148
# File 'hardware.rb', line 146

def ppc32?
  ppc? && is_32_bit?
end

.ppc64? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


156
157
158
# File 'hardware.rb', line 156

def ppc64?
  ppc? && is_64_bit? && big_endian?
end

.ppc64le? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


151
152
153
# File 'hardware.rb', line 151

def ppc64le?
  ppc? && is_64_bit? && little_endian?
end

.ppc? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


141
142
143
# File 'hardware.rb', line 141

def ppc?
  type == :ppc
end

.sse3? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


33
34
35
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 33

def sse3?
  sysctl_bool!("hw.optional.sse3")
end

.sse4? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


121
122
123
# File 'hardware.rb', line 121

def sse4?
  RUBY_PLATFORM.to_s.include?("x86_64")
end

.sse4_2? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


43
44
45
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 43

def sse4_2?
  sysctl_bool!("hw.optional.sse4_2")
end

.ssse3? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


38
39
40
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 38

def ssse3?
  sysctl_bool!("hw.optional.supplementalsse3")
end

.sysctl_bool!(key) ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • key (String)

Возвращает:

  • (Boolean)


134
135
136
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 134

def sysctl_bool!(key)
  sysctl_int(key) == 1
end

.sysctl_int(key) ⇒ Integer

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности третьим лицам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • key (String)

Возвращает:

  • (Integer)


139
140
141
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 139

def sysctl_int(key)
  sysctl_n(key).to_i & 0xffffffff
end

.sysctl_n(*keys) ⇒ String

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности третьим лицам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • keys (String)

Возвращает:

  • (String)


144
145
146
147
148
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 144

def sysctl_n(*keys)
  (@properties ||= T.let({}, T.nilable(T::Hash[T::Array[String], String]))).fetch(keys) do
    @properties[keys] = Utils.popen_read("/usr/sbin/sysctl", "-n", *keys)
  end
end

.type ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности третьим лицам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Symbol)


87
88
89
90
91
92
93
94
# File 'hardware.rb', line 87

def type
  case RUBY_PLATFORM
  when /x86_64/, /i\d86/ then :intel
  when /arm/, /aarch64/ then :arm
  when /ppc|powerpc/ then :ppc
  else :dunno
  end
end

.virtualized? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности третьим лицам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


55
56
57
# File 'extend/os/mac/hardware/cpu/hardware.rb', line 55

def virtualized?
  sysctl_bool!("kern.hv_vmm_present")
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Hardware/CPU.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API