Refactor
This commit is contained in:
parent
21fb7c249b
commit
a55baf422d
|
@ -1,35 +0,0 @@
|
||||||
import Foundation
|
|
||||||
|
|
||||||
public struct MachTaskBasicInfo {
|
|
||||||
static let count: natural_t = mach_msg_type_number_t(MemoryLayout<mach_task_basic_info>.size) / 4
|
|
||||||
|
|
||||||
public let policy: Int32
|
|
||||||
public let residentSize: UInt64
|
|
||||||
public let residentSizeMax: UInt64
|
|
||||||
public let suspendCount: Int32
|
|
||||||
public let systemTime: time_value_t
|
|
||||||
public let userTime: time_value_t
|
|
||||||
public let virtualSize: UInt64
|
|
||||||
|
|
||||||
public static func current() -> MachTaskBasicInfo? {
|
|
||||||
var count: natural_t = MachTaskBasicInfo.count
|
|
||||||
var info: mach_task_basic_info = mach_task_basic_info()
|
|
||||||
let result: kern_return_t = withUnsafeMutablePointer(to: &info) {
|
|
||||||
$0.withMemoryRebound(to: integer_t.self, capacity: 1) {
|
|
||||||
task_info(mach_task_self_, task_flavor_t(MACH_TASK_BASIC_INFO), $0, &count)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
guard result == KERN_SUCCESS else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return MachTaskBasicInfo(
|
|
||||||
policy: info.policy,
|
|
||||||
residentSize: info.resident_size,
|
|
||||||
residentSizeMax: info.resident_size_max,
|
|
||||||
suspendCount: info.suspend_count,
|
|
||||||
systemTime: info.system_time,
|
|
||||||
userTime: info.user_time,
|
|
||||||
virtualSize: info.virtual_size
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,6 +3,7 @@ import Foundation
|
||||||
public struct Usage {
|
public struct Usage {
|
||||||
static let machHost = mach_host_self()
|
static let machHost = mach_host_self()
|
||||||
static let hostCPULoadInfoCount = mach_msg_type_number_t(MemoryLayout<host_cpu_load_info>.size / MemoryLayout<integer_t>.size)
|
static let hostCPULoadInfoCount = mach_msg_type_number_t(MemoryLayout<host_cpu_load_info>.size / MemoryLayout<integer_t>.size)
|
||||||
|
static let machTaskBasicInfoCount = mach_msg_type_number_t(MemoryLayout<mach_task_basic_info>.size) / 4
|
||||||
|
|
||||||
private static var loadPrevious = host_cpu_load_info()
|
private static var loadPrevious = host_cpu_load_info()
|
||||||
|
|
||||||
|
@ -12,7 +13,6 @@ public struct Usage {
|
||||||
case MiB = 1048576
|
case MiB = 1048576
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static func cpu() -> (system : Double, user: Double, idle: Double, nice: Double) {
|
public static func cpu() -> (system : Double, user: Double, idle: Double, nice: Double) {
|
||||||
let load = Usage.hostCPULoadInfo()
|
let load = Usage.hostCPULoadInfo()
|
||||||
defer {
|
defer {
|
||||||
|
@ -37,10 +37,19 @@ public struct Usage {
|
||||||
return info
|
return info
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func memory(unit: Unit = .none) -> UInt64? {
|
public static func machTaskBasicInfo() -> mach_task_basic_info {
|
||||||
guard let info: MachTaskBasicInfo = MachTaskBasicInfo.current() else {
|
var count: natural_t = Usage.machTaskBasicInfoCount
|
||||||
return nil
|
var info: mach_task_basic_info = mach_task_basic_info()
|
||||||
|
_ = withUnsafeMutablePointer(to: &info) {
|
||||||
|
$0.withMemoryRebound(to: integer_t.self, capacity: 1) {
|
||||||
|
task_info(mach_task_self_, task_flavor_t(MACH_TASK_BASIC_INFO), $0, &count)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return info.residentSize / unit.rawValue
|
return info
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func memory(unit: Unit = .none) -> UInt64? {
|
||||||
|
let info = machTaskBasicInfo()
|
||||||
|
return info.resident_size / unit.rawValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
import XCTest
|
|
||||||
import Usage
|
|
||||||
|
|
||||||
final class MachTaskBasicInfoTest: XCTestCase {
|
|
||||||
func testExample() {
|
|
||||||
let info: MachTaskBasicInfo? = MachTaskBasicInfo.current()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -10,7 +10,6 @@
|
||||||
295632FC1FEE47BD007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 295632F81FEE47AB007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
295632FC1FEE47BD007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 295632F81FEE47AB007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
295633231FEE536F007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 295633151FEE536F007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
295633231FEE536F007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 295633151FEE536F007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
2956333F1FEE5390007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 295633311FEE538F007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
2956333F1FEE5390007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 295633311FEE538F007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
295633531FEE54FB007A8FE0 /* MachTaskBasicInfoTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295633521FEE54FB007A8FE0 /* MachTaskBasicInfoTest.swift */; };
|
|
||||||
2956336D1FEE9756007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2956336B1FEE9756007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
2956336D1FEE9756007A8FE0 /* Usage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2956336B1FEE9756007A8FE0 /* Usage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
2956337A1FEEA0B1007A8FE0 /* UsageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295633761FEEA0B1007A8FE0 /* UsageTests.swift */; };
|
2956337A1FEEA0B1007A8FE0 /* UsageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295633761FEEA0B1007A8FE0 /* UsageTests.swift */; };
|
||||||
2956337D1FEEAA6A007A8FE0 /* LICENSE.md in Resources */ = {isa = PBXBuildFile; fileRef = 2956337B1FEEAA6A007A8FE0 /* LICENSE.md */; };
|
2956337D1FEEAA6A007A8FE0 /* LICENSE.md in Resources */ = {isa = PBXBuildFile; fileRef = 2956337B1FEEAA6A007A8FE0 /* LICENSE.md */; };
|
||||||
|
@ -24,15 +23,10 @@
|
||||||
295D0ED42303EDFF00120A70 /* Usage.Monitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FD1B582301AD580095A0BE /* Usage.Monitor.swift */; };
|
295D0ED42303EDFF00120A70 /* Usage.Monitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FD1B582301AD580095A0BE /* Usage.Monitor.swift */; };
|
||||||
295D0ED52303EDFF00120A70 /* Usage.Monitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FD1B582301AD580095A0BE /* Usage.Monitor.swift */; };
|
295D0ED52303EDFF00120A70 /* Usage.Monitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FD1B582301AD580095A0BE /* Usage.Monitor.swift */; };
|
||||||
295D0ED62303EE0000120A70 /* Usage.Monitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FD1B582301AD580095A0BE /* Usage.Monitor.swift */; };
|
295D0ED62303EE0000120A70 /* Usage.Monitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29FD1B582301AD580095A0BE /* Usage.Monitor.swift */; };
|
||||||
295D0EDB2303EE0900120A70 /* MachTaskBasicInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295632D01FEE3B5D007A8FE0 /* MachTaskBasicInfo.swift */; };
|
|
||||||
295D0EDC2303EE0A00120A70 /* MachTaskBasicInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295632D01FEE3B5D007A8FE0 /* MachTaskBasicInfo.swift */; };
|
|
||||||
295D0EDD2303EE0A00120A70 /* MachTaskBasicInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295632D01FEE3B5D007A8FE0 /* MachTaskBasicInfo.swift */; };
|
|
||||||
295D0EDE2303EE0B00120A70 /* MachTaskBasicInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 295632D01FEE3B5D007A8FE0 /* MachTaskBasicInfo.swift */; };
|
|
||||||
295D0EE42303EF0000120A70 /* Usage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2956332F1FEE538F007A8FE0 /* Usage.framework */; };
|
295D0EE42303EF0000120A70 /* Usage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2956332F1FEE538F007A8FE0 /* Usage.framework */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
295632D01FEE3B5D007A8FE0 /* MachTaskBasicInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MachTaskBasicInfo.swift; path = Sources/MachTaskBasicInfo.swift; sourceTree = SOURCE_ROOT; };
|
|
||||||
295632DB1FEE461C007A8FE0 /* Usage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Usage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
295632DB1FEE461C007A8FE0 /* Usage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Usage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
295632F81FEE47AB007A8FE0 /* Usage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Usage.h; sourceTree = "<group>"; };
|
295632F81FEE47AB007A8FE0 /* Usage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Usage.h; sourceTree = "<group>"; };
|
||||||
295632F91FEE47AB007A8FE0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
295632F91FEE47AB007A8FE0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
@ -43,7 +37,6 @@
|
||||||
295633311FEE538F007A8FE0 /* Usage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Usage.h; sourceTree = "<group>"; };
|
295633311FEE538F007A8FE0 /* Usage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Usage.h; sourceTree = "<group>"; };
|
||||||
295633321FEE538F007A8FE0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
295633321FEE538F007A8FE0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
295633501FEE54FB007A8FE0 /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
295633501FEE54FB007A8FE0 /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
295633521FEE54FB007A8FE0 /* MachTaskBasicInfoTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MachTaskBasicInfoTest.swift; sourceTree = "<group>"; };
|
|
||||||
295633541FEE54FB007A8FE0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
295633541FEE54FB007A8FE0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
2956335F1FEE92EF007A8FE0 /* Usage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Usage.swift; path = Sources/Usage.swift; sourceTree = SOURCE_ROOT; };
|
2956335F1FEE92EF007A8FE0 /* Usage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Usage.swift; path = Sources/Usage.swift; sourceTree = SOURCE_ROOT; };
|
||||||
295633691FEE9756007A8FE0 /* Usage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Usage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
295633691FEE9756007A8FE0 /* Usage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Usage.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
@ -116,7 +109,6 @@
|
||||||
295632C81FEE39C8007A8FE0 /* Sources */ = {
|
295632C81FEE39C8007A8FE0 /* Sources */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
295632D01FEE3B5D007A8FE0 /* MachTaskBasicInfo.swift */,
|
|
||||||
29FD1B582301AD580095A0BE /* Usage.Monitor.swift */,
|
29FD1B582301AD580095A0BE /* Usage.Monitor.swift */,
|
||||||
2956335F1FEE92EF007A8FE0 /* Usage.swift */,
|
2956335F1FEE92EF007A8FE0 /* Usage.swift */,
|
||||||
);
|
);
|
||||||
|
@ -165,7 +157,6 @@
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
295633541FEE54FB007A8FE0 /* Info.plist */,
|
295633541FEE54FB007A8FE0 /* Info.plist */,
|
||||||
295633521FEE54FB007A8FE0 /* MachTaskBasicInfoTest.swift */,
|
|
||||||
295D0ECC2303ECED00120A70 /* Usage.MonitorTests.swift */,
|
295D0ECC2303ECED00120A70 /* Usage.MonitorTests.swift */,
|
||||||
295633761FEEA0B1007A8FE0 /* UsageTests.swift */,
|
295633761FEEA0B1007A8FE0 /* UsageTests.swift */,
|
||||||
);
|
);
|
||||||
|
@ -419,7 +410,6 @@
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
295D0EDE2303EE0B00120A70 /* MachTaskBasicInfo.swift in Sources */,
|
|
||||||
295D0ED22303EDFA00120A70 /* Usage.swift in Sources */,
|
295D0ED22303EDFA00120A70 /* Usage.swift in Sources */,
|
||||||
295D0ED62303EE0000120A70 /* Usage.Monitor.swift in Sources */,
|
295D0ED62303EE0000120A70 /* Usage.Monitor.swift in Sources */,
|
||||||
);
|
);
|
||||||
|
@ -429,7 +419,6 @@
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
295D0EDD2303EE0A00120A70 /* MachTaskBasicInfo.swift in Sources */,
|
|
||||||
295D0ED12303EDF900120A70 /* Usage.swift in Sources */,
|
295D0ED12303EDF900120A70 /* Usage.swift in Sources */,
|
||||||
295D0ED52303EDFF00120A70 /* Usage.Monitor.swift in Sources */,
|
295D0ED52303EDFF00120A70 /* Usage.Monitor.swift in Sources */,
|
||||||
);
|
);
|
||||||
|
@ -439,7 +428,6 @@
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
295D0EDC2303EE0A00120A70 /* MachTaskBasicInfo.swift in Sources */,
|
|
||||||
295D0ED02303EDF800120A70 /* Usage.swift in Sources */,
|
295D0ED02303EDF800120A70 /* Usage.swift in Sources */,
|
||||||
295D0ED42303EDFF00120A70 /* Usage.Monitor.swift in Sources */,
|
295D0ED42303EDFF00120A70 /* Usage.Monitor.swift in Sources */,
|
||||||
);
|
);
|
||||||
|
@ -451,7 +439,6 @@
|
||||||
files = (
|
files = (
|
||||||
295D0ECD2303ECED00120A70 /* Usage.MonitorTests.swift in Sources */,
|
295D0ECD2303ECED00120A70 /* Usage.MonitorTests.swift in Sources */,
|
||||||
2956337A1FEEA0B1007A8FE0 /* UsageTests.swift in Sources */,
|
2956337A1FEEA0B1007A8FE0 /* UsageTests.swift in Sources */,
|
||||||
295633531FEE54FB007A8FE0 /* MachTaskBasicInfoTest.swift in Sources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -459,7 +446,6 @@
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
295D0EDB2303EE0900120A70 /* MachTaskBasicInfo.swift in Sources */,
|
|
||||||
295D0ECF2303EDF700120A70 /* Usage.swift in Sources */,
|
295D0ECF2303EDF700120A70 /* Usage.swift in Sources */,
|
||||||
295D0ED32303EDFE00120A70 /* Usage.Monitor.swift in Sources */,
|
295D0ED32303EDFE00120A70 /* Usage.Monitor.swift in Sources */,
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue