version 1.103, 2006/05/14 21:15:11 |
version 1.104, 2006/06/07 22:33:39 |
Line 233 ktraddentry(struct lwp *l, struct ktrace |
|
Line 233 ktraddentry(struct lwp *l, struct ktrace |
|
struct proc *p = l->l_proc; |
struct proc *p = l->l_proc; |
struct ktr_desc *ktd; |
struct ktr_desc *ktd; |
#ifdef DEBUG |
#ifdef DEBUG |
struct timeval t; |
struct timeval t1, t2; |
int s; |
|
#endif |
#endif |
|
|
if (p->p_traceflag & KTRFAC_TRC_EMUL) { |
if (p->p_traceflag & KTRFAC_TRC_EMUL) { |
Line 282 ktraddentry(struct lwp *l, struct ktrace |
|
Line 281 ktraddentry(struct lwp *l, struct ktrace |
|
ktd->ktd_flags |= KTDF_WAIT; |
ktd->ktd_flags |= KTDF_WAIT; |
ktd_wakeup(ktd); |
ktd_wakeup(ktd); |
#ifdef DEBUG |
#ifdef DEBUG |
s = splclock(); |
getmicrouptime(&t1); |
t = mono_time; |
|
splx(s); |
|
#endif |
#endif |
if (ltsleep(&ktd->ktd_flags, PWAIT, "ktrsync", |
if (ltsleep(&ktd->ktd_flags, PWAIT, "ktrsync", |
ktd_timeout * hz, &ktd->ktd_slock) != 0) { |
ktd_timeout * hz, &ktd->ktd_slock) != 0) { |
Line 298 ktraddentry(struct lwp *l, struct ktrace |
|
Line 295 ktraddentry(struct lwp *l, struct ktrace |
|
break; |
break; |
} |
} |
#ifdef DEBUG |
#ifdef DEBUG |
s = splclock(); |
getmicrouptime(&t2); |
timersub(&mono_time, &t, &t); |
timersub(&t2, &t1, &t2); |
splx(s); |
if (t2.tv_sec > 0) |
if (t.tv_sec > 0) |
|
log(LOG_NOTICE, |
log(LOG_NOTICE, |
"ktrace long wait: %ld.%06ld\n", |
"ktrace long wait: %ld.%06ld\n", |
t.tv_sec, t.tv_usec); |
t2.tv_sec, t2.tv_usec); |
#endif |
#endif |
} while (p->p_tracep == ktd && |
} while (p->p_tracep == ktd && |
(ktd->ktd_flags & (KTDF_WAIT | KTDF_DONE)) == KTDF_WAIT); |
(ktd->ktd_flags & (KTDF_WAIT | KTDF_DONE)) == KTDF_WAIT); |