authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-26 19:15:51 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-27 20:59:51 -07:00
logc42ff8d7185789845d5986af43aa66f9fdd90c5a
tree2f495ef22f096092ac6cccf6bee0c9f3925495d6
parentccbff4bf3ad50eaba9a89f8dffbd37fd8b5099ad
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

make the init and init_thread params configurable


7 files changed, 31 insertions(+), 20 deletions(-)

README.md+3-2
......@@ -15,17 +15,18 @@ in your program:
1515```zig
1616const std = @import("std");
1717const tracer = @import("tracer");
18const nfs = @import("nfs");
1819pub const build_options = @import("build_options");
1920
2021pub const tracer_impl = tracer.spall; // see 'Backends' section below
2122
2223pub fn main() !void {
23 try tracer.init();
24 try tracer.init(.{});
2425 defer tracer.deinit();
2526
2627 // main loop
2728 while (true) {
28 try tracer.init_thread();
29 try tracer.init_thread(.{nfs.cwd()});
2930 defer tracer.deinit_thread();
3031
3132 handler();
src/chrome.zig+4-2
......@@ -14,7 +14,8 @@ threadlocal var path: [:0]const u8 = undefined;
1414threadlocal var file: nfs.File = undefined;
1515threadlocal var buffered_writer: nio.BufferedWriter(4096, nfs.File) = undefined;
1616
17pub fn init() !void {
17pub fn init(args: struct {}) !void {
18 _ = args;
1819 pid = linux.getpid();
1920}
2021
......@@ -22,7 +23,8 @@ pub fn deinit() void {
2223 //
2324}
2425
25pub fn init_thread(dir: nfs.Dir) !void {
26pub fn init_thread(args: struct { nfs.Dir }) !void {
27 const dir = args[0];
2628 tid = linux.gettid();
2729
2830 path = try std.fmt.allocPrintZ(alloc, "trace.{d}.{d}.chrome.json", .{ pid, tid });
src/log.zig+5-4
......@@ -1,14 +1,15 @@
11const std = @import("std");
22const tracer = @import("./mod.zig");
33const log = std.log.scoped(.tracer);
4const nfs = @import("nfs");
54
6pub fn init() !void {}
5pub fn init(args: struct {}) !void {
6 _ = args;
7}
78
89pub fn deinit() void {}
910
10pub fn init_thread(dir: nfs.Dir) !void {
11 _ = dir;
11pub fn init_thread(args: struct {}) !void {
12 _ = args;
1213}
1314
1415pub fn deinit_thread() void {}
src/main.zig+6-2
......@@ -13,14 +13,18 @@ pub const tracer_impl = switch (build_options.backend) {
1313};
1414
1515pub fn main() !void {
16 try tracer.init();
16 try tracer.init(.{});
1717 defer tracer.deinit();
1818
1919 // main loop
2020 var go = false;
2121 _ = &go;
2222 while (go) {
23 try tracer.init_thread(nfs.cwd());
23 try tracer.init_thread(switch (build_options.backend) {
24 0, 1 => .{},
25 2, 3 => .{nfs.cwd()},
26 else => comptime unreachable,
27 });
2428 defer tracer.deinit_thread();
2529
2630 handler();
src/mod.zig+4-4
......@@ -11,16 +11,16 @@ pub const log = @import("./log.zig");
1111pub const chrome = @import("./chrome.zig");
1212pub const spall = @import("./spall.zig");
1313
14pub fn init() !void {
15 try impl.init();
14pub fn init(args: @typeInfo(@TypeOf(impl.init)).@"fn".params[0].type.?) !void {
15 try impl.init(args);
1616}
1717
1818pub fn deinit() void {
1919 impl.deinit();
2020}
2121
22pub fn init_thread(dir: ?nfs.Dir) !void {
23 try impl.init_thread(dir orelse nfs.cwd());
22pub fn init_thread(args: @typeInfo(@TypeOf(impl.init_thread)).@"fn".params[0].type.?) !void {
23 try impl.init_thread(args);
2424 started = true;
2525}
2626
src/none.zig+5-4
......@@ -1,14 +1,15 @@
11const std = @import("std");
22const tracer = @import("./mod.zig");
33const log = std.log.scoped(.tracer);
4const nfs = @import("nfs");
54
6pub fn init() !void {}
5pub fn init(args: struct {}) !void {
6 _ = args;
7}
78
89pub fn deinit() void {}
910
10pub fn init_thread(dir: nfs.Dir) !void {
11 _ = dir;
11pub fn init_thread(args: struct {}) !void {
12 _ = args;
1213}
1314
1415pub fn deinit_thread() void {}
src/spall.zig+4-2
......@@ -14,7 +14,8 @@ threadlocal var path: [:0]const u8 = undefined;
1414threadlocal var file: nfs.File = undefined;
1515threadlocal var buffered_writer: nio.BufferedWriter(4096, nfs.File) = undefined;
1616
17pub fn init() !void {
17pub fn init(args: struct {}) !void {
18 _ = args;
1819 pid = linux.getpid();
1920}
2021
......@@ -22,7 +23,8 @@ pub fn deinit() void {
2223 //
2324}
2425
25pub fn init_thread(dir: nfs.Dir) !void {
26pub fn init_thread(args: struct { nfs.Dir }) !void {
27 const dir = args[0];
2628 tid = linux.gettid();
2729
2830 path = try std.fmt.allocPrintZ(alloc, "{d}.{d}.spall", .{ pid, tid });