mirror of
https://github.com/StikDebug/StikJIT.git
synced 2026-10-15 20:10:31 +00:00
42 lines
1.1 KiB
Swift
42 lines
1.1 KiB
Swift
import Foundation
|
|
@_implementationOnly import StikJITIOKit
|
|
|
|
enum TXMPresence {
|
|
case present
|
|
case absent
|
|
case unknown
|
|
|
|
init(isPresent: Bool?) {
|
|
guard let isPresent else {
|
|
self = .unknown
|
|
return
|
|
}
|
|
self = isPresent ? .present : .absent
|
|
}
|
|
|
|
var isPresent: Bool? {
|
|
switch self {
|
|
case .present: return true
|
|
case .absent: return false
|
|
case .unknown: return nil
|
|
}
|
|
}
|
|
}
|
|
|
|
extension ProcessInfo {
|
|
var txmPresence: TXMPresence {
|
|
let memoryMap = IORegistryEntryFromPath(kIOMainPortDefault, "IODeviceTree:/chosen/memory-map")
|
|
guard memoryMap != 0 else { return .unknown }
|
|
|
|
let keysCF = IORegistryEntryCreateCFProperty(
|
|
memoryMap,
|
|
kIORegistryEntryPropertyKeysKey as CFString,
|
|
kCFAllocatorDefault,
|
|
0
|
|
)?.takeRetainedValue()
|
|
IOObjectRelease(memoryMap)
|
|
guard let keys = keysCF as? [String] else { return .unknown }
|
|
|
|
return keys.contains("TXM") ? .present : .absent
|
|
}
|
|
}
|