name threads and add more tracing

This commit is contained in:
Mitchell Hashimoto
2022-11-07 07:45:46 -08:00
parent 46a9998762
commit 5b52333e51
4 changed files with 55 additions and 3 deletions

View File

@@ -7,6 +7,8 @@ const builtin = @import("builtin");
const libuv = @import("libuv");
const termio = @import("../termio.zig");
const BlockingQueue = @import("../blocking_queue.zig").BlockingQueue;
const tracy = @import("tracy");
const trace = tracy.trace;
const Allocator = std.mem.Allocator;
const log = std.log.scoped(.io_thread);
@@ -133,6 +135,8 @@ pub fn threadMain(self: *Thread) void {
}
fn threadMain_(self: *Thread) !void {
tracy.setThreadName("pty io");
// Run our thread start/end callbacks. This allows the implementation
// to hook into the event loop as needed.
var data = try self.impl.threadEnter(self.loop);
@@ -151,6 +155,9 @@ fn threadMain_(self: *Thread) !void {
/// Drain the mailbox, handling all the messages in our terminal implementation.
fn drainMailbox(self: *Thread) !void {
const zone = trace(@src());
defer zone.end();
// This holds the mailbox lock for the duration of the drain. The
// expectation is that all our message handlers will be non-blocking
// ENOUGH to not mess up throughput on producers.
@@ -184,6 +191,9 @@ fn drainMailbox(self: *Thread) !void {
}
fn wakeupCallback(h: *libuv.Async) void {
const zone = trace(@src());
defer zone.end();
const t = h.getData(Thread) orelse {
// This shouldn't happen so we log it.
log.warn("wakeup callback fired without data set", .{});