Skip to content

Instantly share code, notes, and snippets.

@notcancername
Created November 24, 2024 16:46
Show Gist options
  • Save notcancername/2aa071f8df7abee50e08fac0336c97dd to your computer and use it in GitHub Desktop.
Save notcancername/2aa071f8df7abee50e08fac0336c97dd to your computer and use it in GitHub Desktop.
change cpu speed linux zig
const std = @import("std");
pub fn put(b: []u8, a: []const u8) usize {
@memcpy(b[0..a.len], a);
return a.len;
}
pub fn main() u8 {
var ally = std.heap.ArenaAllocator.init(std.heap.page_allocator);
defer ally.deinit();
const args = std.os.argv;
if (args.len < 3) return 1;
var d = std.fs.cwd().openDir("/sys/devices/system/cpu/", .{}) catch return 2;
defer d.close();
const start, const end = b: {
var b: [16]u8 = undefined;
const sl = d.readFile("possible", &b) catch return 3;
if (sl.len < 3) return 4;
{
var s = std.mem.splitAny(u8, sl, "\n-");
break :b .{
std.fmt.parseInt(u16, s.next() orelse return 5, 10) catch return 6,
std.fmt.parseInt(u16, s.next() orelse return 5, 10) catch return 6,
};
}
};
if (end < start) return 7;
var b: [32]u8 = undefined;
for (start..end +| 1) |i| {
var n: usize = put(&b, "cpu");
n += std.fmt.formatIntBuf(b[3..], i, 10, .lower, .{});
n += put(b[n..], "/cpufreq/");
var cf_d = d.openDir(b[0..n], .{}) catch return 9;
defer cf_d.close();
if (args.len > 3) {
cf_d.writeFile(.{
.sub_path = "scaling_governor",
.data = std.mem.span(args[3]),
}) catch return 11;
}
cf_d.writeFile(.{
.sub_path = "scaling_min_freq",
.data = std.mem.span(args[1]),
}) catch return 12;
cf_d.writeFile(.{
.sub_path = "scaling_max_freq",
.data = std.mem.span(args[2]),
}) catch return 13;
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment