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