X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/8f6c56a50524aa785f7e596d52dddfb331e18961..e2fac8b15b12a7979f72090454d850e612fc5b13:/bsd/kern/kern_pcsamples.c diff --git a/bsd/kern/kern_pcsamples.c b/bsd/kern/kern_pcsamples.c index 14762a54f..36757c2af 100644 --- a/bsd/kern/kern_pcsamples.c +++ b/bsd/kern/kern_pcsamples.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -56,7 +56,7 @@ unsigned int pcsample_end = 0; static pid_t global_state_pid = -1; /* Used to control exclusive use of pc_buffer */ -extern int pc_trace_buf[]; +extern unsigned int pc_trace_buf[]; extern int pc_trace_cnt; void add_pcbuffer(void); @@ -75,9 +75,10 @@ enable_branch_tracing(void) #ifndef i386 struct proc *p; if (-1 != pc_sample_pid) { - p = pfind(pc_sample_pid); + p = proc_find(pc_sample_pid); if (p) { - p->p_flag |= P_BTRACE; + p->p_btrace = 1; + proc_rele(p); } } else { @@ -102,9 +103,10 @@ disable_branch_tracing(void) case 0: break; default: - p = pfind(pc_sample_pid); + p = proc_find(pc_sample_pid); if (p) { - p->p_flag &= ~P_BTRACE; + p->p_btrace = 0; + proc_rele(p); } break; } @@ -122,7 +124,7 @@ branch_tracing_enabled(void) struct proc *p = current_proc(); if (TRUE == pc_trace_frameworks) return TRUE; if (p) { - return (P_BTRACE == (p->p_flag & P_BTRACE)); + return (p->p_btrace); } return 0; } @@ -248,13 +250,14 @@ pcsamples_control(int *name, __unused u_int namelen, user_addr_t where, size_t * global_state_pid = curpid; else if (global_state_pid != curpid) { - if((p = pfind(global_state_pid)) == NULL) + if((p = proc_find(global_state_pid)) == NULL) { /* The global pid no longer exists */ global_state_pid = curpid; } else { + proc_rele(p); /* The global pid exists, deny this request */ return(EBUSY); }