Skip to content

Instantly share code, notes, and snippets.

@jjelinek
Created March 27, 2014 13:41
Show Gist options
  • Save jjelinek/9807800 to your computer and use it in GitHub Desktop.
Save jjelinek/9807800 to your computer and use it in GitHub Desktop.
zone truss
fbt::zone:entry
/arg0 == 7/
{
printf("%s -> %d\n", probefunc, arg0);
}
fbt::zone_boot:entry
{
printf("%s -> zoneid %d\n", probefunc, arg0);
}
fbt::zone_boot:return
{
printf("%s <- %d\n", probefunc, arg1);
}
fbt::zone_start_init:entry
{
printf("%s -> zoneid %d\n", probefunc, curthread->t_procp->p_zone->zone_id);
self->zid = curthread->t_procp->p_zone->zone_id;
}
fbt::zone_start_init:return
{
printf("%s <- %d\n", probefunc, curthread->t_procp->p_zone->zone_boot_err);
}
fbt::exec_init:entry
{
printf("%s -> %s, %s\n", probefunc, stringof(arg0), stringof(arg1));
self->e = 1;
}
fbt::exec_init:return
{
printf("%s <- %d\n", probefunc, arg1);
self->e = 0;
}
fbt::exec_common:entry
/self->e/
{
printf("%s -> %d 0x%p %d\n", probefunc, curthread->t_procp->p_zone->zone_id,
arg0, arg3);
}
fbt::exec_common:return
/self->e/
{
printf("%s <- %d\n", probefunc, arg1);
}
fbt::start_init_common:entry
/self->zid/
{
printf("%s ->\n", probefunc);
}
fbt::start_init_common:return
/self->zid/
{
printf("%s <- %d\n", probefunc, arg1);
}
fbt::rexit:entry,
fbt::exit:entry
/curthread->t_procp->p_zone->zone_id != 0/
{
printf("%s -> %s\n", probefunc, execname);
}
fbt::rexit:return,
fbt::exit:return
/curthread->t_procp->p_zone->zone_id != 0/
{
printf("%s <- %d %d\n", probefunc, arg1, errno);
}
syscall::exece:entry
/curpsinfo->pr_zoneid != 0/
{
self->start = 1;
self->ename = execname;
}
syscall:::entry
/curpsinfo->pr_zoneid != 0 && probefunc != "exece"/
{
self->start = 1;
self->arg0 = arg0;
self->arg1 = arg1;
self->arg2 = arg2;
}
/* print 3 args, return as hex */
syscall::lwp_sigmask:return
/self->start/
{
self->start = 0;
printf("%s %d %s(0x%X, 0x%X, 0x%X) = 0x%X\n",
execname, curpsinfo->pr_euid,
probefunc,
(int)self->arg0, self->arg1, self->arg2, (int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
/* print 3 args, arg0 as a string */
syscall::stat*:return,
syscall::lstat*:return,
syscall::open:return,
syscall::access:return,
syscall::resolvepath:return
/self->start/
{
self->start = 0;
printf("%s %d %s(\"%S\", 0x%X, 0x%X) = %d\n",
execname, curpsinfo->pr_euid,
probefunc,
copyinstr(self->arg0), self->arg1, self->arg2, (int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
/* print execname as a string */
syscall::exece:return
/self->start/
{
self->start = 0;
printf("%s %d %s(\"%s\") = %d\n",
self->ename, curpsinfo->pr_euid,
probefunc,
execname, (int)arg0);
self->ename = 0;
}
/* print 1 arg, arg1 as a string */
syscall::openat:return,
syscall::openat64:return
/self->start/
{
self->start = 0;
printf("%s %d %s(\"%s\") = %d\n",
execname, curpsinfo->pr_euid,
probefunc,
stringof(copyinstr(self->arg1)), (int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
/* print 3 args, arg1 as a string */
syscall::write:return,
syscall::pwrite:return,
syscall::*read*:return
/self->start/
{
self->start = 0;
printf("%s %d %s(0x%X, \"%S\", 0x%X) = %d\n",
execname, curpsinfo->pr_euid,
probefunc, self->arg0,
stringof(copyin(self->arg1, self->arg2)), self->arg2, (int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
/* print 0 arg output */
syscall::gtime:return
/self->start/
{
self->start = 0;
printf("%s %d %s() = %d\n",
execname, curpsinfo->pr_euid,
probefunc,
(int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
syscall::fork*:return
/curpsinfo->pr_zoneid != 0/
{
printf("%s %d %s() = %d\n",
execname, curpsinfo->pr_euid,
probefunc,
(int)arg0);
}
/* print 1 arg output */
syscall::brk:return,
syscall::times:return,
syscall::stime:return,
syscall::close:return
/self->start/
{
self->start = 0;
printf("%s %d %s(0x%X) = %d\n",
execname, curpsinfo->pr_euid,
probefunc,
self->arg0, (int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
/* print 2 arg output */
syscall::munmap:return
/self->start/
{
self->start = 0;
printf("%s %d %s(0x%X, 0x%X) = %d\n",
execname, curpsinfo->pr_euid,
probefunc,
self->arg0, self->arg1, (int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
/* print 3 arg output - default */
syscall:::return
/self->start && probefunc != "forksys"/
{
self->start = 0;
printf("%s %d %s(0x%X, 0x%X, 0x%X) = %d\n",
execname, curpsinfo->pr_euid,
probefunc, self->arg0,
self->arg1, self->arg2, (int)arg0);
self->arg0 = 0;
self->arg1 = 0;
self->arg2 = 0;
}
fbt::core:entry
/curpsinfo->pr_zoneid != 0/
{
printf("%s %d %s\n", execname, curpsinfo->pr_euid, probefunc);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment