summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorgrog <grog@FreeBSD.org>2000-12-29 06:27:39 +0000
committergrog <grog@FreeBSD.org>2000-12-29 06:27:39 +0000
commit4de9e65520c65e36038c989bd5e325ea311db27f (patch)
treea094b17a51f377fe9df8e4490bc82b263cd52dd1 /sys
parent8cccb2b798681406dea4c3ec1671b76c9efb9935 (diff)
downloadFreeBSD-src-4de9e65520c65e36038c989bd5e325ea311db27f.zip
FreeBSD-src-4de9e65520c65e36038c989bd5e325ea311db27f.tar.gz
Partially revert revision 1.7: Only use getnanotime instead of
nanotime if we would run into trouble with nanotime (i.e. if we are tracing KTR_LOCK). Reviewed by: jhb
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_ktr.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/kern/kern_ktr.c b/sys/kern/kern_ktr.c
index 01467d1..65a4ac6 100644
--- a/sys/kern/kern_ktr.c
+++ b/sys/kern/kern_ktr.c
@@ -128,7 +128,15 @@ ktr_tracepoint(u_int mask, char *format, u_long arg1, u_long arg2, u_long arg3,
} while (atomic_cmpset_rel_int(&ktr_idx, saveindex, newindex) == 0);
entry = &ktr_buf[saveindex];
restore_intr(saveintr);
- getnanotime(&entry->ktr_tv);
+ if (ktr_mask & KTR_LOCK)
+ /*
+ * We can't use nanotime with KTR_LOCK, it would cause
+ * endless recursion, at least under the Intel
+ * architecture.
+ */
+ getnanotime(&entry->ktr_tv);
+ else
+ nanotime(&entry->ktr_tv);
#ifdef KTR_EXTEND
strncpy(entry->ktr_filename, filename, KTRFILENAMESIZE - 1);
entry->ktr_filename[KTRFILENAMESIZE - 1] = '\0';
OpenPOWER on IntegriCloud