svn commit: r316841 - in stable/10/sys: kern sys
Andriy Gapon
avg at FreeBSD.org
Fri Apr 14 14:44:07 UTC 2017
Author: avg
Date: Fri Apr 14 14:44:06 2017
New Revision: 316841
URL: https://svnweb.freebsd.org/changeset/base/316841
Log:
MFC r315851: move thread switch tracing from mi_switch to sched_switch
Modified:
stable/10/sys/kern/kern_synch.c
stable/10/sys/kern/sched_4bsd.c
stable/10/sys/kern/sched_ule.c
stable/10/sys/sys/proc.h
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/kern/kern_synch.c
==============================================================================
--- stable/10/sys/kern/kern_synch.c Fri Apr 14 14:44:00 2017 (r316840)
+++ stable/10/sys/kern/kern_synch.c Fri Apr 14 14:44:06 2017 (r316841)
@@ -73,13 +73,6 @@ __FBSDID("$FreeBSD$");
#include <vm/pmap.h>
#endif
-#define KTDSTATE(td) \
- (((td)->td_inhibitors & TDI_SLEEPING) != 0 ? "sleep" : \
- ((td)->td_inhibitors & TDI_SUSPENDED) != 0 ? "suspended" : \
- ((td)->td_inhibitors & TDI_SWAPPED) != 0 ? "swapped" : \
- ((td)->td_inhibitors & TDI_LOCK) != 0 ? "blocked" : \
- ((td)->td_inhibitors & TDI_IWAIT) != 0 ? "iwait" : "yielding")
-
static void synch_setup(void *dummy);
SYSINIT(synch_setup, SI_SUB_KICK_SCHEDULER, SI_ORDER_FIRST, synch_setup,
NULL);
@@ -469,23 +462,11 @@ mi_switch(int flags, struct thread *newt
PCPU_SET(switchticks, ticks);
CTR4(KTR_PROC, "mi_switch: old thread %ld (td_sched %p, pid %ld, %s)",
td->td_tid, td->td_sched, td->td_proc->p_pid, td->td_name);
-#if (KTR_COMPILE & KTR_SCHED) != 0
- if (TD_IS_IDLETHREAD(td))
- KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "idle",
- "prio:%d", td->td_priority);
- else
- KTR_STATE3(KTR_SCHED, "thread", sched_tdname(td), KTDSTATE(td),
- "prio:%d", td->td_priority, "wmesg:\"%s\"", td->td_wmesg,
- "lockname:\"%s\"", td->td_lockname);
-#endif
SDT_PROBE0(sched, , , preempt);
#ifdef XEN
PT_UPDATES_FLUSH();
#endif
sched_switch(td, newtd, flags);
- KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "running",
- "prio:%d", td->td_priority);
-
CTR4(KTR_PROC, "mi_switch: new thread %ld (td_sched %p, pid %ld, %s)",
td->td_tid, td->td_sched, td->td_proc->p_pid, td->td_name);
Modified: stable/10/sys/kern/sched_4bsd.c
==============================================================================
--- stable/10/sys/kern/sched_4bsd.c Fri Apr 14 14:44:00 2017 (r316840)
+++ stable/10/sys/kern/sched_4bsd.c Fri Apr 14 14:44:06 2017 (r316841)
@@ -1008,6 +1008,16 @@ sched_switch(struct thread *td, struct t
MPASS(newtd->td_lock == &sched_lock);
}
+#if (KTR_COMPILE & KTR_SCHED) != 0
+ if (TD_IS_IDLETHREAD(td))
+ KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "idle",
+ "prio:%d", td->td_priority);
+ else
+ KTR_STATE3(KTR_SCHED, "thread", sched_tdname(td), KTDSTATE(td),
+ "prio:%d", td->td_priority, "wmesg:\"%s\"", td->td_wmesg,
+ "lockname:\"%s\"", td->td_lockname);
+#endif
+
if (td != newtd) {
#ifdef HWPMC_HOOKS
if (PMC_PROC_IS_USING_PMCS(td->td_proc))
@@ -1056,6 +1066,9 @@ sched_switch(struct thread *td, struct t
} else
SDT_PROBE0(sched, , , remain__cpu);
+ KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "running",
+ "prio:%d", td->td_priority);
+
#ifdef SMP
if (td->td_flags & TDF_IDLETD)
CPU_SET(PCPU_GET(cpuid), &idle_cpus_mask);
Modified: stable/10/sys/kern/sched_ule.c
==============================================================================
--- stable/10/sys/kern/sched_ule.c Fri Apr 14 14:44:00 2017 (r316840)
+++ stable/10/sys/kern/sched_ule.c Fri Apr 14 14:44:06 2017 (r316841)
@@ -1906,6 +1906,17 @@ sched_switch(struct thread *td, struct t
mtx = thread_lock_block(td);
tdq_load_rem(tdq, td);
}
+
+#if (KTR_COMPILE & KTR_SCHED) != 0
+ if (TD_IS_IDLETHREAD(td))
+ KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "idle",
+ "prio:%d", td->td_priority);
+ else
+ KTR_STATE3(KTR_SCHED, "thread", sched_tdname(td), KTDSTATE(td),
+ "prio:%d", td->td_priority, "wmesg:\"%s\"", td->td_wmesg,
+ "lockname:\"%s\"", td->td_lockname);
+#endif
+
/*
* We enter here with the thread blocked and assigned to the
* appropriate cpu run-queue or sleep-queue and with the current
@@ -1956,6 +1967,10 @@ sched_switch(struct thread *td, struct t
thread_unblock_switch(td, mtx);
SDT_PROBE0(sched, , , remain__cpu);
}
+
+ KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "running",
+ "prio:%d", td->td_priority);
+
/*
* Assert that all went well and return.
*/
Modified: stable/10/sys/sys/proc.h
==============================================================================
--- stable/10/sys/sys/proc.h Fri Apr 14 14:44:00 2017 (r316840)
+++ stable/10/sys/sys/proc.h Fri Apr 14 14:44:06 2017 (r316841)
@@ -461,6 +461,12 @@ do { \
#define TD_ON_UPILOCK(td) ((td)->td_flags & TDF_UPIBLOCKED)
#define TD_IS_IDLETHREAD(td) ((td)->td_flags & TDF_IDLETD)
+#define KTDSTATE(td) \
+ (((td)->td_inhibitors & TDI_SLEEPING) != 0 ? "sleep" : \
+ ((td)->td_inhibitors & TDI_SUSPENDED) != 0 ? "suspended" : \
+ ((td)->td_inhibitors & TDI_SWAPPED) != 0 ? "swapped" : \
+ ((td)->td_inhibitors & TDI_LOCK) != 0 ? "blocked" : \
+ ((td)->td_inhibitors & TDI_IWAIT) != 0 ? "iwait" : "yielding")
#define TD_SET_INHIB(td, inhib) do { \
(td)->td_state = TDS_INHIBITED; \
More information about the svn-src-all
mailing list