vm_object_ownership.d [plain text]
#!/usr/sbin/dtrace -s
vminfo:::object_ownership_change
{
old_owner = (task_t)arg1;
if (old_owner == 0) {
old_pid = -1;
old_name = "(nil)";
} else {
old_proc = (proc_t)old_owner->bsd_info;
old_pid = old_proc->p_pid;
old_name = old_proc->p_comm;
}
new_owner = (task_t)arg4;
if (new_owner == 0) {
new_pid = -1;
new_name = "(nil)";
} else {
new_proc = (proc_t)new_owner->bsd_info;
new_pid = new_proc->p_pid;
new_name = new_proc->p_comm;
}
printf("%d[%s] object 0x%p id 0x%x purgeable:%d owner:0x%p (%d[%s]) tag:%d nofootprint:%d -> owner:0x%p (%d[%s]) tag:%d nofootprint:%d",
pid, execname, arg0, arg7, ((vm_object_t)arg0)->purgable,
old_owner, old_pid, old_name,
arg2, arg3,
new_owner, new_pid, new_name,
arg5, arg6);
stack();
ustack();
}