Module: xenomai-jki
Branch: for-forge
Commit: f9ef8c167943604f6f6693fd740133d5eb8f45e9
URL:    
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=f9ef8c167943604f6f6693fd740133d5eb8f45e9

Author: Jan Kiszka <jan.kis...@siemens.com>
Date:   Fri May  6 14:40:00 2016 +0200

cobalt/tracing: Trace changes of the current thread priority

Specifically useful to validate scheduling during PI or PP phases.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>

---

 kernel/cobalt/sched.c             |    6 ++++++
 kernel/cobalt/trace/cobalt-core.h |   20 ++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/kernel/cobalt/sched.c b/kernel/cobalt/sched.c
index 6e291f9..cc0ee11 100644
--- a/kernel/cobalt/sched.c
+++ b/kernel/cobalt/sched.c
@@ -466,6 +466,8 @@ bool xnsched_set_effective_priority(struct xnthread 
*thread, int prio)
 
        thread->cprio = prio;
 
+       trace_cobalt_thread_set_current_prio(thread);
+
        return true;
 }
 
@@ -507,6 +509,8 @@ void xnsched_track_policy(struct xnthread *thread,
                        xnsched_enqueue(thread);
        }
 
+       trace_cobalt_thread_set_current_prio(thread);
+
        xnsched_set_resched(thread->sched);
 }
 
@@ -533,6 +537,8 @@ void xnsched_protect_priority(struct xnthread *thread, int 
prio)
        if (xnthread_test_state(thread, XNREADY))
                xnsched_enqueue(thread);
 
+       trace_cobalt_thread_set_current_prio(thread);
+
        xnsched_set_resched(thread->sched);
 }
 
diff --git a/kernel/cobalt/trace/cobalt-core.h 
b/kernel/cobalt/trace/cobalt-core.h
index 92abbdf..d6be229 100644
--- a/kernel/cobalt/trace/cobalt-core.h
+++ b/kernel/cobalt/trace/cobalt-core.h
@@ -309,6 +309,26 @@ TRACE_EVENT(cobalt_thread_fault,
                  __entry->type)
 );
 
+TRACE_EVENT(cobalt_thread_set_current_prio,
+       TP_PROTO(struct xnthread *thread),
+       TP_ARGS(thread),
+
+       TP_STRUCT__entry(
+               __field(struct xnthread *, thread)
+               __string(name, thread->name)
+               __field(int, cprio)
+       ),
+
+       TP_fast_assign(
+               __entry->thread = thread;
+               __assign_str(name, thread->name);
+               __entry->cprio = xnthread_current_priority(thread);
+       ),
+
+       TP_printk("thread=%p(%s) prio=%d",
+                 __entry->thread, __get_str(name), __entry->cprio)
+);
+
 DEFINE_EVENT(thread_event, cobalt_thread_start,
        TP_PROTO(struct xnthread *thread),
        TP_ARGS(thread)


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
https://xenomai.org/mailman/listinfo/xenomai-git

Reply via email to