#include <sys/taskq.h>

kprobe:trace_zfs_taskq_ent__birth
{
        $tqent = (struct taskq_ent *)arg0;

        $tqent_id = $tqent->tqent_id;
        $tq_name = str($tqent->tqent_taskq->tq_name);

        @birth[$tq_name, $tqent_id] = nsecs;
}

kprobe:trace_zfs_taskq_ent__start
{
        $tqent = (struct taskq_ent *)arg0;

        @tqent_id[tid] = $tqent->tqent_id;
        @tq_name[tid] = str($tqent->tqent_taskq->tq_name);

        @start[@tq_name[tid], @tqent_id[tid]] = nsecs;
}

kprobe:trace_zfs_taskq_ent__start
/ @birth[@tq_name[tid], @tqent_id[tid]] /
{
        @queue_lat_us[@tq_name[tid]] =
                hist((nsecs - @birth[@tq_name[tid], @tqent_id[tid]])/1000);
        delete(@birth[@tq_name[tid], @tqent_id[tid]]);
}

kprobe:trace_zfs_taskq_ent__finish
/ @start[@tq_name[tid], @tqent_id[tid]] /
{
        $tqent = (struct taskq_ent *)arg0;

        @exec_lat_us[@tq_name[tid], ksym($tqent->tqent_func)] =
                hist((nsecs - @start[@tq_name[tid], @tqent_id[tid]])/1000);
        delete(@start[@tq_name[tid], @tqent_id[tid]]);
}

kprobe:trace_zfs_taskq_ent__finish
{
        delete(@tq_name[tid]);
        delete(@tqent_id[tid]);
}

END
{
        clear(@birth);
        clear(@start);

        clear(@tq_name);
        clear(@tqent_id);
}
