Class MacCentralProcessor

java.lang.Object
oshi.hardware.common.AbstractCentralProcessor
oshi.hardware.common.platform.mac.MacCentralProcessor
All Implemented Interfaces:
CentralProcessor

@ThreadSafe public abstract class MacCentralProcessor extends AbstractCentralProcessor
Base class for macOS CentralProcessor implementations. Subclasses provide platform-specific sysctl, IOKit, and Mach kernel calls.
  • Field Details

    • ARM_CPUTYPE

      protected static final int ARM_CPUTYPE
      ARM CPU type constant.
      See Also:
    • M1_CPUFAMILY

      protected static final int M1_CPUFAMILY
      M1 CPU family constant.
      See Also:
    • M2_CPUFAMILY

      protected static final int M2_CPUFAMILY
      M2 CPU family constant.
      See Also:
    • M3_CPUFAMILY

      protected static final int M3_CPUFAMILY
      M3 CPU family constant.
      See Also:
    • M3_PRO_CPUFAMILY

      protected static final int M3_PRO_CPUFAMILY
      M3 Pro/Max CPU family constant.
      See Also:
    • M4_CPUFAMILY

      protected static final int M4_CPUFAMILY
      M4 CPU family constant.
      See Also:
    • DEFAULT_FREQUENCY

      protected static final long DEFAULT_FREQUENCY
      Default frequency in Hz.
      See Also:
  • Constructor Details

    • MacCentralProcessor

      protected MacCentralProcessor()
      Default constructor.
  • Method Details

    • sysctlProvider

      protected abstract SysctlProvider sysctlProvider()
      Returns the sysctl provider for this implementation.
      Returns:
      the sysctl provider
    • sysctlInt

      protected int sysctlInt(String name, int defaultValue)
      Queries a sysctl integer value.
      Parameters:
      name - the sysctl name
      defaultValue - the default value if not found
      Returns:
      the sysctl value
    • sysctlIntNoWarn

      protected int sysctlIntNoWarn(String name, int defaultValue)
      Queries a sysctl integer value without logging warnings.
      Parameters:
      name - the sysctl name
      defaultValue - the default value if not found
      Returns:
      the sysctl value
    • sysctlLong

      protected long sysctlLong(String name, long defaultValue)
      Queries a sysctl long value.
      Parameters:
      name - the sysctl name
      defaultValue - the default value if not found
      Returns:
      the sysctl value
    • sysctlString

      protected String sysctlString(String name, String defaultValue)
      Queries a sysctl string value.
      Parameters:
      name - the sysctl name
      defaultValue - the default value if not found
      Returns:
      the sysctl value
    • sysctlStringNoWarn

      protected String sysctlStringNoWarn(String name, String defaultValue)
      Queries a sysctl string value without logging warnings.
      Parameters:
      name - the sysctl name
      defaultValue - the default value if not found
      Returns:
      the sysctl value
    • ioKitProvider

      protected abstract IOKitProvider ioKitProvider()
      Returns the IOKit provider for this implementation.
      Returns:
      the IOKit provider
    • platformExpert

      protected String platformExpert()
      Queries the platform expert vendor string.
      Returns:
      the vendor string
    • queryCompatibleStrings

      protected Map<Integer,String> queryCompatibleStrings()
      Queries compatible strings for CPU identification.
      Returns:
      a map of physical processor numbers to compatible strings
    • calculateNominalFrequencies

      protected void calculateNominalFrequencies()
      Calculates nominal frequencies for performance and efficiency cores.
    • getPerformanceCoreFrequency

      protected long getPerformanceCoreFrequency()
      Gets the performance core frequency.
      Returns:
      the performance core frequency in Hz
    • setPerformanceCoreFrequency

      protected void setPerformanceCoreFrequency(long freq)
      Sets the performance core frequency.
      Parameters:
      freq - the frequency in Hz
    • getEfficiencyCoreFrequency

      protected long getEfficiencyCoreFrequency()
      Gets the efficiency core frequency.
      Returns:
      the efficiency core frequency in Hz
    • setEfficiencyCoreFrequency

      protected void setEfficiencyCoreFrequency(long freq)
      Sets the efficiency core frequency.
      Parameters:
      freq - the frequency in Hz
    • isArm

      protected boolean isArm()
      Checks if this is an ARM CPU.
      Returns:
      true if ARM
    • queryProcessorId

      protected CentralProcessor.ProcessorIdentifier queryProcessorId()
      Description copied from class: AbstractCentralProcessor
      Updates logical and physical processor counts and arrays
      Specified by:
      queryProcessorId in class AbstractCentralProcessor
      Returns:
      An array of initialized Logical Processors
    • initProcessorCounts

      Description copied from class: AbstractCentralProcessor
      Initializes logical and physical processor lists and feature flags.
      Specified by:
      initProcessorCounts in class AbstractCentralProcessor
      Returns:
      Lists of initialized Logical Processors, Physical Processors, Processor Caches, and Feature Flags.
    • queryCurrentFreq

      public long[] queryCurrentFreq()
      Description copied from class: AbstractCentralProcessor
      Get processor current frequency.
      Specified by:
      queryCurrentFreq in class AbstractCentralProcessor
      Returns:
      The current frequency.
    • queryMaxFreq

      public long queryMaxFreq()
      Description copied from class: AbstractCentralProcessor
      Get processor max frequency.
      Overrides:
      queryMaxFreq in class AbstractCentralProcessor
      Returns:
      The max frequency.
    • queryContextSwitches

      public long queryContextSwitches()
      Description copied from class: AbstractCentralProcessor
      Get number of context switches
      Specified by:
      queryContextSwitches in class AbstractCentralProcessor
      Returns:
      The context switches
    • queryInterrupts

      public long queryInterrupts()
      Description copied from class: AbstractCentralProcessor
      Get number of interrupts
      Specified by:
      queryInterrupts in class AbstractCentralProcessor
      Returns:
      The interrupts
    • getMaxFreqFromByteArray

      protected long getMaxFreqFromByteArray(byte[] data)
      Extracts the maximum frequency from a byte array property.
      Parameters:
      data - the byte array from IOKit
      Returns:
      the frequency in Hz, or DEFAULT_FREQUENCY if unavailable