1 #!/usr/sbin/dtrace -s 2 3 vminfo:::object_ownership_change 4 { 5 old_owner = (task_t)arg1; 6 if (old_owner == 0) { 7 old_pid = -1; 8 old_name = "(nil)"; 9 } else { 10 old_proc = xlate <psinfo_t *>((proc_t)old_owner->t_tro->tro_proc); 11 old_pid = old_proc->pr_pid; 12 old_name = old_proc->pr_fname; 13 } 14 new_owner = (task_t)arg4; 15 if (new_owner == 0) { 16 new_pid = -1; 17 new_name = "(nil)"; 18 } else { 19 new_proc = xlate <psinfo_t *>((proc_t)new_owner->t_tro->tro_proc); 20 new_pid = new_proc->pr_pid; 21 new_name = new_proc->pr_fname; 22 } 23 24 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", 25 pid, execname, arg0, arg7, ((vm_object_t)arg0)->purgable, 26 old_owner, old_pid, old_name, 27 arg2, arg3, 28 new_owner, new_pid, new_name, 29 arg5, arg6); 30 stack(); 31 ustack(); 32 } 33