Commit 8c668069 authored by Jan Kiszka's avatar Jan Kiszka Committed by Philippe Gerum
Browse files

cobalt/tracing: Primarily identify threads via pid



Except for the short phase between thread_init and shadow_map, a thread
is always identifiable via the pid of its Linux mate. Use this shorter
value, which also correlates with what ftrace records anyway, instead of
the pointer or the name. Report the full thread name only in prominent
cases: init, resume and switch.
Signed-off-by: Jan Kiszka's avatarJan Kiszka <jan.kiszka@siemens.com>
parent e23670a7
......@@ -683,8 +683,6 @@ int cobalt_map_user(struct xnthread *thread, __u32 __user *u_winoff)
__xn_put_user(cobalt_umm_offset(umm, u_window), u_winoff);
xnthread_pin_initial(thread);
trace_cobalt_shadow_map(thread);
/*
* CAUTION: we enable the pipeline notifier only when our
* shadow TCB is consistent, so that we won't trigger false
......
......@@ -257,6 +257,8 @@ void xnthread_init_shadow_tcb(struct xnthread *thread)
tcb->core.user_fpu_owner = p;
#endif /* CONFIG_XENO_ARCH_FPU */
xnarch_init_shadow_tcb(thread);
trace_cobalt_shadow_map(thread);
}
void xnthread_init_root_tcb(struct xnthread *thread)
......@@ -2509,8 +2511,6 @@ int xnthread_map(struct xnthread *thread, struct completion *done)
thread->u_window = NULL;
xnthread_pin_initial(thread);
trace_cobalt_shadow_map(thread);
xnthread_init_shadow_tcb(thread);
xnthread_suspend(thread, XNRELAX, XN_INFINITE, XN_RELATIVE, NULL);
init_kthread_info(thread);
......
......@@ -30,24 +30,19 @@ DECLARE_EVENT_CLASS(thread_event,
TP_ARGS(thread),
TP_STRUCT__entry(
__field(struct xnthread *, thread)
__string(name, thread->name)
__field(pid_t, pid)
__field(unsigned long, state)
__field(unsigned long, info)
),
TP_fast_assign(
__entry->thread = thread;
__assign_str(name, thread->name);
__entry->state = thread->state;
__entry->info = thread->info;
__entry->pid = xnthread_host_pid(thread);
),
TP_printk("thread=%p(%s) pid=%d state=0x%lx info=0x%lx",
__entry->thread, __get_str(name), __entry->pid,
__entry->state, __entry->info)
TP_printk("pid=%d state=0x%lx info=0x%lx",
__entry->pid, __entry->state, __entry->info)
);
DECLARE_EVENT_CLASS(curr_thread_event,
......@@ -202,11 +197,10 @@ TRACE_EVENT(cobalt_switch_context,
__entry->next_prio = xnthread_current_priority(next);
),
TP_printk("prev=%p(%s) prev_pid=%d prev_prio=%d prev_state=0x%lx ==> next=%p(%s) next_pid=%d next_prio=%d",
__entry->prev, __get_str(prev_name), __entry->prev_pid,
TP_printk("prev_name=%s prev_pid=%d prev_prio=%d prev_state=0x%lx ==> next_name=%s next_pid=%d next_prio=%d",
__get_str(prev_name), __entry->prev_pid,
__entry->prev_prio, __entry->prev_state,
__entry->next, __get_str(next_name), __entry->next_pid,
__entry->next_prio)
__get_str(next_name), __entry->next_pid, __entry->next_prio)
);
TRACE_EVENT(cobalt_thread_init,
......@@ -231,7 +225,7 @@ TRACE_EVENT(cobalt_thread_init,
__entry->cprio = thread->cprio;
),
TP_printk("thread=%p(%s) flags=0x%lx class=%s prio=%d",
TP_printk("thread=%p name=%s flags=0x%lx class=%s prio=%d",
__entry->thread, __get_str(thread_name), __entry->flags,
__get_str(class_name), __entry->cprio)
);
......@@ -242,7 +236,7 @@ TRACE_EVENT(cobalt_thread_suspend,
TP_ARGS(thread, mask, timeout, timeout_mode, wchan),
TP_STRUCT__entry(
__field(struct xnthread *, thread)
__field(pid_t, pid)
__field(unsigned long, mask)
__field(xnticks_t, timeout)
__field(xntmode_t, timeout_mode)
......@@ -250,15 +244,15 @@ TRACE_EVENT(cobalt_thread_suspend,
),
TP_fast_assign(
__entry->thread = thread;
__entry->pid = xnthread_host_pid(thread);
__entry->mask = mask;
__entry->timeout = timeout;
__entry->timeout_mode = timeout_mode;
__entry->wchan = wchan;
),
TP_printk("thread=%p mask=0x%lx timeout=%Lu timeout_mode=%d wchan=%p",
__entry->thread, __entry->mask,
TP_printk("pid=%d mask=0x%lx timeout=%Lu timeout_mode=%d wchan=%p",
__entry->pid, __entry->mask,
__entry->timeout, __entry->timeout_mode, __entry->wchan)
);
......@@ -267,17 +261,19 @@ TRACE_EVENT(cobalt_thread_resume,
TP_ARGS(thread, mask),
TP_STRUCT__entry(
__field(struct xnthread *, thread)
__string(name, thread->name)
__field(pid_t, pid)
__field(unsigned long, mask)
),
TP_fast_assign(
__entry->thread = thread;
__assign_str(name, thread->name);
__entry->pid = xnthread_host_pid(thread);
__entry->mask = mask;
),
TP_printk("thread=%p mask=0x%lx",
__entry->thread, __entry->mask)
TP_printk("name=%s pid=%d mask=0x%lx",
__get_str(name), __entry->pid, __entry->mask)
);
TRACE_EVENT(cobalt_thread_fault,
......@@ -304,18 +300,18 @@ TRACE_EVENT(cobalt_thread_set_current_prio,
TP_STRUCT__entry(
__field(struct xnthread *, thread)
__string(name, thread->name)
__field(pid_t, pid)
__field(int, cprio)
),
TP_fast_assign(
__entry->thread = thread;
__assign_str(name, thread->name);
__entry->thread = thread;
__entry->pid = xnthread_host_pid(thread);
__entry->cprio = xnthread_current_priority(thread);
),
TP_printk("thread=%p(%s) prio=%d",
__entry->thread, __get_str(name), __entry->cprio)
TP_printk("thread=%p pid=%d prio=%d",
__entry->thread, __entry->pid, __entry->cprio)
);
DEFINE_EVENT(thread_event, cobalt_thread_start,
......@@ -374,18 +370,18 @@ TRACE_EVENT(cobalt_thread_migrate_passive,
TP_STRUCT__entry(
__field(struct xnthread *, thread)
__string(name, thread->name)
__field(pid_t, pid)
__field(unsigned int, cpu)
),
TP_fast_assign(
__entry->thread = thread;
__assign_str(name, thread->name);
__entry->pid = xnthread_host_pid(thread);
__entry->cpu = cpu;
),
TP_printk("thread=%p(%s) cpu=%u",
__entry->thread, __get_str(name), __entry->cpu)
TP_printk("thread=%p pid=%d cpu=%u",
__entry->thread, __entry->pid, __entry->cpu)
);
DEFINE_EVENT(curr_thread_event, cobalt_shadow_gohard,
......@@ -441,18 +437,18 @@ TRACE_EVENT(cobalt_shadow_map,
TP_STRUCT__entry(
__field(struct xnthread *, thread)
__string(name, thread->name)
__field(pid_t, pid)
__field(int, prio)
),
TP_fast_assign(
__entry->thread = thread;
__assign_str(name, thread->name);
__entry->thread = thread;
__entry->pid = xnthread_host_pid(thread);
__entry->prio = xnthread_base_priority(thread);
),
TP_printk("thread=%p(%s) prio=%d",
__entry->thread, __get_str(name), __entry->prio)
TP_printk("thread=%p pid=%d prio=%d",
__entry->thread, __entry->pid, __entry->prio)
);
DEFINE_EVENT(curr_thread_event, cobalt_shadow_unmap,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment