Here's my dtrace script:
HALC_IO*:::IOProc_Begin /execname == "mixxx"/ { self->callback_tid = tid; self->callback_enter_ts = timestamp; self->callback_enter_vts = vtimestamp; }
HALC_IO*:::IOProc_End /execname == "mixxx" && self->callback_enter_ts/ { @[ustack(), "callback duration ns"] = quantize(timestamp - self->callback_enter_ts); @[ustack(), "callback on-cpu duration ns"] = quantize(vtimestamp - self->callback_enter_vts); self->callback_enter_ts = 0; self->callback_enter_vts = 0; }
syscall:::entry /execname == "mixxx" && tid == self->callback_tid/ { self->syscall_ts = timestamp; }
syscall:::return /execname == "mixxx" && tid == self->callback_tid && self->syscall_ts/ { @[ustack(), "syscall duration ns"] = quantize(timestamp - self->syscall_ts); self->syscall_ts = 0; }
Here's my dtrace script:
HALC_IO* :::IOProc_ Begin >callback_ tid = tid; >callback_ enter_ts = timestamp; >callback_ enter_vts = vtimestamp;
/execname == "mixxx"/
{
self-
self-
self-
}
HALC_IO* :::IOProc_ End enter_ts/ enter_ts) ; enter_vts) ; >callback_ enter_ts = 0; >callback_ enter_vts = 0;
/execname == "mixxx" && self->callback_
{
@[ustack(), "callback duration ns"] = quantize(timestamp - self->callback_
@[ustack(), "callback on-cpu duration ns"] = quantize(vtimestamp - self->callback_
self-
self-
}
syscall:::entry
/execname == "mixxx" && tid == self->callback_tid/
{
self->syscall_ts = timestamp;
}
syscall:::return
/execname == "mixxx" && tid == self->callback_tid && self->syscall_ts/
{
@[ustack(), "syscall duration ns"] = quantize(timestamp - self->syscall_ts);
self->syscall_ts = 0;
}