diff --git a/Kit/helpers.swift b/Kit/helpers.swift index fd777b55..c26e06c9 100644 --- a/Kit/helpers.swift +++ b/Kit/helpers.swift @@ -601,6 +601,41 @@ public func getIOProperties(_ entry: io_registry_entry_t) -> NSDictionary? { return properties?.takeUnretainedValue() } +public func getIOName(_ entry: io_registry_entry_t) -> String? { + let pointer = UnsafeMutablePointer.allocate(capacity: 1) + + let result = IORegistryEntryGetName(entry, pointer) + if result != kIOReturnSuccess { + print("Error IORegistryEntryGetName(): " + (String(cString: mach_error_string(result), encoding: String.Encoding.ascii) ?? "unknown error")) + return nil + } + + return String(cString: UnsafeRawPointer(pointer).assumingMemoryBound(to: CChar.self)) +} + +public func getIOChildrens(_ entry: io_registry_entry_t) -> [String]? { + var iter: io_iterator_t = io_iterator_t() + if IORegistryEntryGetChildIterator(entry, kIOServicePlane, &iter) != kIOReturnSuccess { + return nil + } + + var iterator: io_registry_entry_t = 1 + var list: [String] = [] + while iterator != 0 { + iterator = IOIteratorNext(iter) + + let pointer = UnsafeMutablePointer.allocate(capacity: 1) + if IORegistryEntryGetName(iterator, pointer) != kIOReturnSuccess { + continue + } + + list.append(String(cString: UnsafeRawPointer(pointer).assumingMemoryBound(to: CChar.self))) + IOObjectRelease(iterator) + } + + return list +} + public class ColorView: NSView { public var inactiveColor: NSColor = NSColor.lightGray.withAlphaComponent(0.75) diff --git a/Stats/Views/Dashboard.swift b/Stats/Views/Dashboard.swift index 2a260f7e..413eeff2 100644 --- a/Stats/Views/Dashboard.swift +++ b/Stats/Views/Dashboard.swift @@ -191,6 +191,24 @@ class Dashboard: NSScrollView { } value += "\(mini)" } + + if cpu.eCores != nil || cpu.pCores != nil { + if !value.isEmpty { + value += "\n" + } + + var mini = "" + if let eCores = cpu.eCores { + mini += localizedString("Number of e-cores", "\(eCores)") + } + if let pCores = cpu.pCores { + if mini != "" { + mini += ", " + } + mini += localizedString("Number of p-cores", "\(pCores)") + } + value += "\(mini)" + } } else { value = localizedString("Unknown") }