Initial commit
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
const std = @import("std");
|
||||
const mic = @import("miclib");
|
||||
|
||||
pub fn main() !void {
|
||||
var devices = mic.DeviceList.init() catch |err| {
|
||||
std.debug.print("mic_get_devices failed: {s}\n", .{@errorName(err)});
|
||||
printLastMicError();
|
||||
return err;
|
||||
};
|
||||
defer devices.deinit();
|
||||
|
||||
const count = try devices.count();
|
||||
std.debug.print("found {} MIC device(s)\n", .{count});
|
||||
|
||||
for (0..count) |index| {
|
||||
const device_num = try devices.deviceAtIndex(index);
|
||||
var device = mic.Device.open(device_num) catch |err| {
|
||||
std.debug.print("mic{}: open failed: {s}\n", .{ device_num, @errorName(err) });
|
||||
printLastMicError();
|
||||
continue;
|
||||
};
|
||||
defer device.deinit();
|
||||
|
||||
try printDevice(device_num, device);
|
||||
}
|
||||
}
|
||||
|
||||
fn printDevice(device_num: u32, device: mic.Device) !void {
|
||||
var buffer: [mic.default_string_buffer_len]u8 = undefined;
|
||||
|
||||
const device_type = device.deviceType() catch 0;
|
||||
std.debug.print("\nmic{}: {s}\n", .{ device_num, device.name() });
|
||||
std.debug.print(" type: {}{s}\n", .{ device_type, if (device_type == mic.knc_id) " (KNC)" else "" });
|
||||
|
||||
if (device.serialNumber(buffer[0..])) |serial| {
|
||||
std.debug.print(" serial: {s}\n", .{serial});
|
||||
} else |err| printSkipped("serial", err);
|
||||
|
||||
if (device.siliconSku(buffer[0..])) |sku| {
|
||||
std.debug.print(" sku: {s}\n", .{sku});
|
||||
} else |err| printSkipped("sku", err);
|
||||
|
||||
if (device.pciConfig()) |pci_value| {
|
||||
var pci = pci_value;
|
||||
defer pci.deinit();
|
||||
|
||||
std.debug.print(" pci: {x:0>4}:{x:0>2}:{x:0>2}, vendor={x:0>4}, device={x:0>4}\n", .{
|
||||
pci.domainId() catch 0,
|
||||
pci.busNumber() catch 0,
|
||||
pci.deviceNumber() catch 0,
|
||||
pci.vendorId() catch 0,
|
||||
pci.deviceId() catch 0,
|
||||
});
|
||||
|
||||
if (pci.linkSpeed(buffer[0..])) |speed| {
|
||||
std.debug.print(" pci-link: {s} x{}\n", .{ speed, pci.linkWidth() catch 0 });
|
||||
} else |err| printSkipped("pci-link", err);
|
||||
} else |err| printSkipped("pci", err);
|
||||
|
||||
if (device.coresInfo()) |cores_value| {
|
||||
var cores = cores_value;
|
||||
defer cores.deinit();
|
||||
|
||||
std.debug.print(" cores: {}, freq={} MHz, voltage={} mV\n", .{
|
||||
cores.count() catch 0,
|
||||
cores.frequency() catch 0,
|
||||
cores.voltage() catch 0,
|
||||
});
|
||||
} else |err| printSkipped("cores", err);
|
||||
|
||||
if (device.memoryInfo()) |memory_value| {
|
||||
var memory = memory_value;
|
||||
defer memory.deinit();
|
||||
|
||||
const memory_type = memory.memoryType(buffer[0..]) catch "unknown";
|
||||
std.debug.print(" memory: {} MiB, type={s}, freq={} MHz, ecc={}\n", .{
|
||||
memory.size() catch 0,
|
||||
memory_type,
|
||||
memory.frequency() catch 0,
|
||||
memory.eccMode() catch 0,
|
||||
});
|
||||
} else |err| printSkipped("memory", err);
|
||||
|
||||
if (device.thermalInfo()) |thermal_value| {
|
||||
var thermal = thermal_value;
|
||||
defer thermal.deinit();
|
||||
|
||||
std.debug.print(" thermals: die={} C, fan={} RPM, pwm={}\n", .{
|
||||
thermal.dieTemp() catch 0,
|
||||
thermal.fanRpm() catch 0,
|
||||
thermal.fanPwm() catch 0,
|
||||
});
|
||||
} else |err| printSkipped("thermals", err);
|
||||
|
||||
if (device.versionInfo()) |version_value| {
|
||||
var version = version_value;
|
||||
defer version.deinit();
|
||||
|
||||
if (version.uosVersion(buffer[0..])) |uos| {
|
||||
std.debug.print(" uos: {s}\n", .{uos});
|
||||
} else |err| printSkipped("uos", err);
|
||||
|
||||
if (version.flashVersion(buffer[0..])) |flash| {
|
||||
std.debug.print(" flash: {s}\n", .{flash});
|
||||
} else |err| printSkipped("flash", err);
|
||||
} else |err| printSkipped("version", err);
|
||||
}
|
||||
|
||||
fn printSkipped(name: []const u8, err: anyerror) void {
|
||||
std.debug.print(" {s}: unavailable ({s})\n", .{ name, @errorName(err) });
|
||||
}
|
||||
|
||||
fn printLastMicError() void {
|
||||
const last = mic.lastErrorString();
|
||||
if (last.len != 0) std.debug.print("miclib: {s}\n", .{last});
|
||||
}
|
||||
Reference in New Issue
Block a user