diff --git a/README.md b/README.md index 797659f2ecff5539e258837a81441446f3e2cbe3..01b3f584e0d9443e836af253d97be24e2f718f24 100644 --- a/README.md +++ b/README.md @@ -15,17 +15,18 @@ in your program: ```zig const std = @import("std"); const tracer = @import("tracer"); +const nfs = @import("nfs"); pub const build_options = @import("build_options"); pub const tracer_impl = tracer.spall; // see 'Backends' section below pub fn main() !void { - try tracer.init(); + try tracer.init(.{}); defer tracer.deinit(); // main loop while (true) { - try tracer.init_thread(); + try tracer.init_thread(.{nfs.cwd()}); defer tracer.deinit_thread(); handler(); diff --git a/src/chrome.zig b/src/chrome.zig index db436c6f66e7572472a37002788518bd661feb8d..db54400d5ebfe61c19d3836de084c39683e1b33b 100644 --- a/src/chrome.zig +++ b/src/chrome.zig @@ -14,7 +14,8 @@ 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 { +pub fn init(args: struct {}) !void { + _ = args; pid = linux.getpid(); } @@ -22,7 +23,8 @@ pub fn deinit() void { // } -pub fn init_thread(dir: nfs.Dir) !void { +pub fn init_thread(args: struct { nfs.Dir }) !void { + const dir = args[0]; tid = linux.gettid(); path = try std.fmt.allocPrintZ(alloc, "trace.{d}.{d}.chrome.json", .{ pid, tid }); diff --git a/src/log.zig b/src/log.zig index c5a0eb714f99cfdc6ddc745c144048f46d6c2adc..5eb0b88e55e8b9e3a570f4cc4cc9e5bd5ca12f52 100644 --- a/src/log.zig +++ b/src/log.zig @@ -1,14 +1,15 @@ 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 init(args: struct {}) !void { + _ = args; +} pub fn deinit() void {} -pub fn init_thread(dir: nfs.Dir) !void { - _ = dir; +pub fn init_thread(args: struct {}) !void { + _ = args; } pub fn deinit_thread() void {} diff --git a/src/main.zig b/src/main.zig index 9bee6ee685dc5f7f1d1f83f278cb906ba992638e..f93bcec1e2aa3f773effbbf55d198d824d12b53d 100644 --- a/src/main.zig +++ b/src/main.zig @@ -13,14 +13,18 @@ pub const tracer_impl = switch (build_options.backend) { }; pub fn main() !void { - try tracer.init(); + try tracer.init(.{}); defer tracer.deinit(); // main loop var go = false; _ = &go; while (go) { - try tracer.init_thread(nfs.cwd()); + try tracer.init_thread(switch (build_options.backend) { + 0, 1 => .{}, + 2, 3 => .{nfs.cwd()}, + else => comptime unreachable, + }); defer tracer.deinit_thread(); handler(); diff --git a/src/mod.zig b/src/mod.zig index 762334869e2efb47f1055ef4be8b284819c16990..ba675c05440cad2ceeb77f6f18230e6e3b21537a 100644 --- a/src/mod.zig +++ b/src/mod.zig @@ -11,16 +11,16 @@ pub const log = @import("./log.zig"); pub const chrome = @import("./chrome.zig"); pub const spall = @import("./spall.zig"); -pub fn init() !void { - try impl.init(); +pub fn init(args: @typeInfo(@TypeOf(impl.init)).@"fn".params[0].type.?) !void { + try impl.init(args); } pub fn deinit() void { impl.deinit(); } -pub fn init_thread(dir: ?nfs.Dir) !void { - try impl.init_thread(dir orelse nfs.cwd()); +pub fn init_thread(args: @typeInfo(@TypeOf(impl.init_thread)).@"fn".params[0].type.?) !void { + try impl.init_thread(args); started = true; } diff --git a/src/none.zig b/src/none.zig index 4208d976dae11390bacf24935eab8a9213ceefb2..e9034a9e3b978fa44ce3b6b2220a89c4305754ff 100644 --- a/src/none.zig +++ b/src/none.zig @@ -1,14 +1,15 @@ 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 init(args: struct {}) !void { + _ = args; +} pub fn deinit() void {} -pub fn init_thread(dir: nfs.Dir) !void { - _ = dir; +pub fn init_thread(args: struct {}) !void { + _ = args; } pub fn deinit_thread() void {} diff --git a/src/spall.zig b/src/spall.zig index a4b8b89654a306a968d094eacf5c1ab2ce793792..406c9e1c996cb5420971116b43b3e52a2da57705 100644 --- a/src/spall.zig +++ b/src/spall.zig @@ -14,7 +14,8 @@ 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 { +pub fn init(args: struct {}) !void { + _ = args; pid = linux.getpid(); } @@ -22,7 +23,8 @@ pub fn deinit() void { // } -pub fn init_thread(dir: nfs.Dir) !void { +pub fn init_thread(args: struct { nfs.Dir }) !void { + const dir = args[0]; tid = linux.gettid(); path = try std.fmt.allocPrintZ(alloc, "{d}.{d}.spall", .{ pid, tid });