From af18634753b3671d998ad6064e1f6c3ad9bbc6eb Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sat, 25 Apr 2026 21:15:16 -0700 Subject: [PATCH] further migration to zig-sys --- licenses.txt | 6 ++++++ src/chrome.zig | 22 ++++++++++++---------- src/log.zig | 3 ++- src/main.zig | 4 +++- src/mod.zig | 5 +++-- src/none.zig | 3 ++- src/spall.zig | 22 ++++++++++++---------- zigmod.yml | 5 +++++ 8 files changed, 45 insertions(+), 25 deletions(-) diff --git a/licenses.txt b/licenses.txt index 4e2267720b042c6abdcf37c0b34042989ca1946e..6fd8547cfb4e9e2403f001b16ff900b1ae4516da 100644 --- a/licenses.txt +++ b/licenses.txt @@ -3,6 +3,12 @@ MIT: - This - git https://github.com/nektro/zig-extras - git https://github.com/nektro/zig-sys-linux +- git https://github.com/nektro/zig-time + +MPL-2.0: += https://spdx.org/licenses/MPL-2.0 +- git https://github.com/nektro/zig-nfs +- git https://github.com/nektro/zig-nio Unspecified: - system_lib c diff --git a/src/chrome.zig b/src/chrome.zig index c89482d3e7b7efbe778e079132b647beab937101..b40829a0aa1d03ee11955bf75d0749e993de99c9 100644 --- a/src/chrome.zig +++ b/src/chrome.zig @@ -3,13 +3,15 @@ const tracer = @import("./mod.zig"); const alloc = std.heap.c_allocator; const log = std.log.scoped(.tracer); const root = @import("root"); +const nfs = @import("nfs"); +const nio = @import("nio"); const linux = @import("sys-linux"); var pid: linux.pid_t = undefined; threadlocal var tid: linux.pid_t = undefined; -threadlocal var path: []const u8 = undefined; -threadlocal var file: std.fs.File = undefined; -threadlocal var buffered_writer: std.io.BufferedWriter(4096, std.fs.File.Writer) = undefined; +threadlocal var path: [:0]const u8 = undefined; +threadlocal var file: nfs.File = undefined; +threadlocal var buffered_writer: nio.BufferedWriter(4096, nfs.File) = undefined; pub fn init() !void { pid = linux.getpid(); @@ -19,26 +21,26 @@ pub fn deinit() void { // } -pub fn init_thread(dir: std.fs.Dir) !void { +pub fn init_thread(dir: nfs.Dir) !void { tid = linux.gettid(); - path = try std.fmt.allocPrint(alloc, "trace.{d}.{d}.chrome.json", .{ pid, tid }); + path = try std.fmt.allocPrintZ(alloc, "trace.{d}.{d}.chrome.json", .{ pid, tid }); file = try dir.createFile(path, .{}); - buffered_writer = std.io.bufferedWriter(file.writer()); + buffered_writer = .init(file); - try buffered_writer.writer().writeAll("[\n"); + try buffered_writer.writeAll("[\n"); } pub fn deinit_thread() void { defer alloc.free(path); defer file.close(); - buffered_writer.writer().writeAll("]\n") catch {}; + buffered_writer.writeAll("]\n") catch {}; buffered_writer.flush() catch {}; } pub inline fn trace_begin(ctx: tracer.Ctx, comptime ifmt: []const u8, iargs: anytype) void { - buffered_writer.writer().print( + buffered_writer.print( \\{{"cat":"function", "name":"{s}:{d}:{d} ({s}) ++ ifmt ++ \\", "ph": "B", "pid": {d}, "tid": {d}, "ts": {d}}}, @@ -59,7 +61,7 @@ pub inline fn trace_begin(ctx: tracer.Ctx, comptime ifmt: []const u8, iargs: any pub inline fn trace_end(ctx: tracer.Ctx) void { _ = ctx; - buffered_writer.writer().print( + buffered_writer.print( \\{{"cat":"function", "ph": "E", "pid": {d}, "tid": {d}, "ts": {d}}}, \\ , diff --git a/src/log.zig b/src/log.zig index dad5459b769347bf9589887b4f9753e773c62271..c5a0eb714f99cfdc6ddc745c144048f46d6c2adc 100644 --- a/src/log.zig +++ b/src/log.zig @@ -1,12 +1,13 @@ const std = @import("std"); const tracer = @import("./mod.zig"); const log = std.log.scoped(.tracer); +const nfs = @import("nfs"); pub fn init() !void {} pub fn deinit() void {} -pub fn init_thread(dir: std.fs.Dir) !void { +pub fn init_thread(dir: nfs.Dir) !void { _ = dir; } diff --git a/src/main.zig b/src/main.zig index 5cd329eed90ed36805e456e4fe2cc8d3e55bdb83..9bee6ee685dc5f7f1d1f83f278cb906ba992638e 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,5 +1,7 @@ const std = @import("std"); const tracer = @import("tracer"); +const nfs = @import("nfs"); + pub const build_options = @import("build_options"); pub const tracer_impl = switch (build_options.backend) { @@ -18,7 +20,7 @@ pub fn main() !void { var go = false; _ = &go; while (go) { - try tracer.init_thread(std.fs.cwd()); + try tracer.init_thread(nfs.cwd()); defer tracer.deinit_thread(); handler(); diff --git a/src/mod.zig b/src/mod.zig index 32a9137f9daf4c078402b5bf697d6e65a625194f..a6c7b2b386d3afcefd6bbd72fd9834a12a10d3d6 100644 --- a/src/mod.zig +++ b/src/mod.zig @@ -1,6 +1,7 @@ const std = @import("std"); const root = @import("root"); const extras = @import("extras"); +const nfs = @import("nfs"); const impl = extras.globalOption("tracer_impl", type) orelse none; threadlocal var started = false; @@ -18,8 +19,8 @@ pub fn deinit() void { impl.deinit(); } -pub fn init_thread(dir: ?std.fs.Dir) !void { - try impl.init_thread(dir orelse std.fs.cwd()); +pub fn init_thread(dir: ?nfs.Dir) !void { + try impl.init_thread(dir orelse nfs.cwd()); started = true; } diff --git a/src/none.zig b/src/none.zig index 355ad7981015ac088025e564702ddb4165134ec7..4208d976dae11390bacf24935eab8a9213ceefb2 100644 --- a/src/none.zig +++ b/src/none.zig @@ -1,12 +1,13 @@ const std = @import("std"); const tracer = @import("./mod.zig"); const log = std.log.scoped(.tracer); +const nfs = @import("nfs"); pub fn init() !void {} pub fn deinit() void {} -pub fn init_thread(dir: std.fs.Dir) !void { +pub fn init_thread(dir: nfs.Dir) !void { _ = dir; } diff --git a/src/spall.zig b/src/spall.zig index 45701fe926292b18c003c6a155f54503a0a6f705..c919d49bbcaae15f3f540a5a3b7a5ce856d96402 100644 --- a/src/spall.zig +++ b/src/spall.zig @@ -3,13 +3,15 @@ const tracer = @import("./mod.zig"); const alloc = std.heap.c_allocator; const log = std.log.scoped(.tracer); const root = @import("root"); +const nfs = @import("nfs"); +const nio = @import("nio"); const linux = @import("sys-linux"); var pid: linux.pid_t = undefined; threadlocal var tid: linux.pid_t = undefined; -threadlocal var path: []const u8 = undefined; -threadlocal var file: std.fs.File = undefined; -threadlocal var buffered_writer: std.io.BufferedWriter(4096, std.fs.File.Writer) = undefined; +threadlocal var path: [:0]const u8 = undefined; +threadlocal var file: nfs.File = undefined; +threadlocal var buffered_writer: nio.BufferedWriter(4096, nfs.File) = undefined; pub fn init() !void { pid = linux.getpid(); @@ -19,14 +21,14 @@ pub fn deinit() void { // } -pub fn init_thread(dir: std.fs.Dir) !void { +pub fn init_thread(dir: nfs.Dir) !void { tid = linux.gettid(); - path = try std.fmt.allocPrint(alloc, "{d}.{d}.spall", .{ pid, tid }); + path = try std.fmt.allocPrintZ(alloc, "{d}.{d}.spall", .{ pid, tid }); file = try dir.createFile(path, .{}); - buffered_writer = std.io.bufferedWriter(file.writer()); + buffered_writer = .init(file); - try buffered_writer.writer().writeStruct(Header{}); + try buffered_writer.writeStruct(Header{}); } pub fn deinit_thread() void { @@ -39,19 +41,19 @@ pub fn deinit_thread() void { pub inline fn trace_begin(ctx: tracer.Ctx, comptime ifmt: []const u8, iargs: anytype) void { const fmt = "{s}:{d}:{d} ({s})" ++ ifmt; const args = .{ ctx.src.file, ctx.src.line, ctx.src.column, ctx.src.fn_name }; - buffered_writer.writer().writeStruct(BeginEvent{ + buffered_writer.writeStruct(BeginEvent{ .pid = @intCast(pid), .tid = @intCast(tid), .time = @floatFromInt(std.time.microTimestamp()), .name_len = @truncate(std.fmt.count(fmt, args ++ iargs)), .args_len = 0, }) catch return; - buffered_writer.writer().print(fmt, args ++ iargs) catch return; + buffered_writer.print(fmt, args ++ iargs) catch return; } pub inline fn trace_end(ctx: tracer.Ctx) void { _ = ctx; - buffered_writer.writer().writeStruct(EndEvent{ + buffered_writer.writeStruct(EndEvent{ .pid = @intCast(pid), .tid = @intCast(tid), .time = @floatFromInt(std.time.microTimestamp()), diff --git a/zigmod.yml b/zigmod.yml index e1522db63502a5a667e87762ec2519499d15579c..4a905c461a9b0dbd276a90b3b1c6e8ca4c87c3c7 100644 --- a/zigmod.yml +++ b/zigmod.yml @@ -6,3 +6,8 @@ description: Generic tracing library for Zig, supports multiple backends. dependencies: - src: git https://github.com/nektro/zig-extras - src: git https://github.com/nektro/zig-sys-linux + - src: git https://github.com/nektro/zig-nfs + - src: git https://github.com/nektro/zig-nio + +root_dependencies: + - src: git https://github.com/nektro/zig-nfs -- 2.54.0