All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@domain.hid>
To: xenomai-core <xenomai@xenomai.org>
Cc: ROSSIER Daniel <Daniel.Rossier@domain.hid>
Subject: [Xenomai-core] LTTng for Xenomai - next round
Date: Fri, 19 Oct 2007 00:05:32 +0200	[thread overview]
Message-ID: <4717D8AC.8000900@domain.hid> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 2128 bytes --]

Hi,

LTTng is becoming interesting again: Mathieu uploaded a back-port to
2.6.23.1 yesterday which is already implementing the scheme that is
intended to be submitted upstream.

What changed for us?

 - We now have a recent patch basis for the kernel again.

 - The instrumentation process was significantly simplified: No more
   facility registration, no more probe modules, no more XML file
   hacking - it's all derived from the trace points now! Some example:

   trace_mark(kernel_timer_itimer_expired, "pid %d", sig->tsk->pid);
              ^----^ ^------------------^   ^----^
             facility     trace point    argument name
               name          name          and type

I rebased the patches over I-pipe for i386 (see attached patches and
extended series description), and I also started to rework the Xenomai
patch. The diffstat of the latter is fairly telling:

 include/nucleus/ltt.h   |  111 +---------------------------
 ksrc/nucleus/Config.in  |    9 --
 ksrc/nucleus/Kconfig    |   36 ---------
 ksrc/nucleus/Makefile   |    3
 ksrc/nucleus/intr.c     |   19 ++--
 ksrc/nucleus/ltt.c      |  186 ------------------------------------------------
 ksrc/nucleus/module.c   |    7 -
 ksrc/nucleus/pod.c      |  102 ++++++++++++++++----------
 ksrc/nucleus/shadow.c   |   43 +++++++----
 ksrc/nucleus/synch.c    |   19 +++-
 ksrc/nucleus/timebase.c |    6 -
 11 files changed, 125 insertions(+), 416 deletions(-)

You see, no more ltt.c, i.e. no more probe module!

At this point, we are already able to use the services of "lttv -m
textDump" or lttv-gui to display traces from Xenomai kernels as event
lists. Yes, I tried this, and it works! (Hint: Don't forget to
ltt-armall your trace points before trying to collect data...)

Yet to be done:

 - Finish the xnltt_log_event refactoring (half done, pod.c is missing
   yet - with ~30 trace point)

 - Port and update the Xenomai extension over latest lttv.

Well, I'm not looking for work, I'm looking for workers :). Anyone
interested and available to help with the open topics? Daniel...?

Jan

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: ltt-ipipe-2.6.23-i386-1.10-10.patch --]
[-- Type: text/x-patch; name="ltt-ipipe-2.6.23-i386-1.10-10.patch", Size: 10151 bytes --]

---
 arch/i386/kernel/ipipe.c |    4 -
 include/asm-i386/ipipe.h |    4 -
 include/linux/kernel.h   |    1 
 include/linux/marker.h   |   10 ++--
 kernel/exit.c            |    1 
 kernel/sched.c           |   52 +++++++++++++++++++++++
 ltt/ltt-relay.c          |    2 
 ltt/ltt-serialize.c      |   12 +++--
 mm/memory.c              |  102 +++++++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 172 insertions(+), 16 deletions(-)

Index: linux-2.6.23-ipipe/include/linux/kernel.h
===================================================================
--- linux-2.6.23-ipipe.orig/include/linux/kernel.h
+++ linux-2.6.23-ipipe/include/linux/kernel.h
@@ -15,6 +15,7 @@
 #include <linux/bitops.h>
 #include <linux/log2.h>
 #include <linux/marker.h>
+#include <linux/ipipe_base.h>
 #include <asm/byteorder.h>
 #include <asm/bug.h>
 
Index: linux-2.6.23-ipipe/kernel/exit.c
===================================================================
--- linux-2.6.23-ipipe.orig/kernel/exit.c
+++ linux-2.6.23-ipipe/kernel/exit.c
@@ -975,6 +975,7 @@ fastcall NORET_TYPE void do_exit(long co
 	if (group_dead)
 		acct_process();
 	trace_mark(kernel_process_exit, "pid %d", tsk->pid);
+	ipipe_exit_notify(tsk);
 
 	exit_sem(tsk);
 	__exit_files(tsk);
Index: linux-2.6.23-ipipe/kernel/sched.c
===================================================================
--- linux-2.6.23-ipipe.orig/kernel/sched.c
+++ linux-2.6.23-ipipe/kernel/sched.c
@@ -6809,3 +6809,55 @@ void set_kernel_trace_flag_all_tasks(voi
 	read_unlock(&tasklist_lock);
 }
 EXPORT_SYMBOL_GPL(set_kernel_trace_flag_all_tasks);
+
+#ifdef CONFIG_IPIPE
+
+int ipipe_setscheduler_root (struct task_struct *p, int policy, int prio)
+{
+	unsigned long flags;
+	int oldprio, on_rq;
+	struct rq *rq;
+
+	spin_lock_irqsave(&p->pi_lock, flags);
+	rq = __task_rq_lock(p);
+	on_rq = p->se.on_rq;
+	if (on_rq)
+		deactivate_task(rq, p, 0);
+	oldprio = p->prio;
+	__setscheduler(rq, p, policy, prio);
+	ipipe_setsched_notify(p);
+	if (on_rq) {
+		activate_task(rq, p, 0);
+		if (task_running(rq, p)) {
+			if (p->prio > oldprio)
+				resched_task(rq->curr);
+		} else {
+			check_preempt_curr(rq, p);
+		}
+	}
+	__task_rq_unlock(rq);
+	spin_unlock_irqrestore(&p->pi_lock, flags);
+
+	rt_mutex_adjust_pi(p);
+
+	return 0;
+}
+
+EXPORT_SYMBOL(ipipe_setscheduler_root);
+
+int ipipe_reenter_root (struct task_struct *prev, int policy, int prio)
+{
+	finish_task_switch(this_rq(), prev);
+
+	(void)reacquire_kernel_lock(current);
+	preempt_enable_no_resched();
+
+	if (current->policy != policy || current->rt_priority != prio)
+		return ipipe_setscheduler_root(current, policy, prio);
+
+	return 0;
+}
+
+EXPORT_SYMBOL(ipipe_reenter_root);
+
+#endif /* CONFIG_IPIPE */
Index: linux-2.6.23-ipipe/mm/memory.c
===================================================================
--- linux-2.6.23-ipipe.orig/mm/memory.c
+++ linux-2.6.23-ipipe/mm/memory.c
@@ -52,6 +52,7 @@
 #include <linux/writeback.h>
 #include <linux/kprobes.h>
 #include <linux/mutex.h>
+#include <linux/vmalloc.h>
 
 #include <asm/pgalloc.h>
 #include <asm/uaccess.h>
@@ -2957,3 +2958,104 @@ void __kprobes kernel_text_unlock(void)
 	mutex_unlock(&text_mutex);
 }
 EXPORT_SYMBOL_GPL(kernel_text_unlock);
+
+#ifdef CONFIG_IPIPE
+
+static inline int ipipe_pin_pte_range(struct mm_struct *mm, pmd_t *pmd,
+				      struct vm_area_struct *vma,
+				      unsigned long addr, unsigned long end)
+{
+	spinlock_t *ptl;
+	pte_t *pte;
+
+	do {
+		pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
+		if (!pte)
+			continue;
+
+		if (!pte_present(*pte)) {
+			pte_unmap_unlock(pte, ptl);
+			continue;
+		}
+
+		if (do_wp_page(mm, vma, addr, pte, pmd, ptl, *pte) == VM_FAULT_OOM)
+			return -ENOMEM;
+	} while (addr += PAGE_SIZE, addr != end);
+	return 0;
+}
+
+static inline int ipipe_pin_pmd_range(struct mm_struct *mm, pud_t *pud,
+				      struct vm_area_struct *vma,
+				      unsigned long addr, unsigned long end)
+{
+	unsigned long next;
+	pmd_t *pmd;
+
+	pmd = pmd_offset(pud, addr);
+	do {
+		next = pmd_addr_end(addr, end);
+		if (ipipe_pin_pte_range(mm, pmd, vma, addr, end))
+			return -ENOMEM;
+	} while (pmd++, addr = next, addr != end);
+	return 0;
+}
+
+static inline int ipipe_pin_pud_range(struct mm_struct *mm, pgd_t *pgd,
+				      struct vm_area_struct *vma,
+				      unsigned long addr, unsigned long end)
+{
+	unsigned long next;
+	pud_t *pud;
+
+	pud = pud_offset(pgd, addr);
+	do {
+		next = pud_addr_end(addr, end);
+		if (ipipe_pin_pmd_range(mm, pud, vma, addr, end))
+			return -ENOMEM;
+	} while (pud++, addr = next, addr != end);
+	return 0;
+}
+
+int ipipe_disable_ondemand_mappings(struct task_struct *tsk)
+{
+	unsigned long addr, next, end;
+	struct vm_area_struct *vma;
+	struct mm_struct *mm;
+	int result = 0;
+	pgd_t *pgd;
+
+	mm = get_task_mm(tsk);
+	if (!mm)
+		return -EPERM;
+
+	down_write(&mm->mmap_sem);
+	if (mm->def_flags & VM_PINNED)
+		goto done_mm;
+
+	for (vma = mm->mmap; vma; vma = vma->vm_next) {
+		if (!is_cow_mapping(vma->vm_flags))
+			continue;
+
+		addr = vma->vm_start;
+		end = vma->vm_end;
+
+		pgd = pgd_offset(mm, addr);
+		do {
+			next = pgd_addr_end(addr, end);
+			if (ipipe_pin_pud_range(mm, pgd, vma, addr, next)) {
+				result = -ENOMEM;
+				goto done_mm;
+			}
+		} while (pgd++, addr = next, addr != end);
+	}
+	mm->def_flags |= VM_PINNED;
+
+  done_mm:
+	up_write(&mm->mmap_sem);
+	mmput(mm);
+	return result;
+}
+
+EXPORT_SYMBOL(ipipe_disable_ondemand_mappings);
+
+#endif
Index: linux-2.6.23-ipipe/arch/i386/kernel/ipipe.c
===================================================================
--- linux-2.6.23-ipipe.orig/arch/i386/kernel/ipipe.c
+++ linux-2.6.23-ipipe/arch/i386/kernel/ipipe.c
@@ -815,13 +815,9 @@ EXPORT_SYMBOL(ipipe_critical_exit);
 EXPORT_SYMBOL(ipipe_trigger_irq);
 EXPORT_SYMBOL(ipipe_get_sysinfo);
 
-EXPORT_SYMBOL_GPL(irq_desc);
 EXPORT_SYMBOL_GPL(__switch_to);
 EXPORT_SYMBOL_GPL(show_stack);
 EXPORT_PER_CPU_SYMBOL_GPL(init_tss);
-#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)
-EXPORT_SYMBOL(tasklist_lock);
-#endif /* CONFIG_SMP || CONFIG_DEBUG_SPINLOCK */
 #ifdef CONFIG_SMP
 EXPORT_PER_CPU_SYMBOL_GPL(cpu_tlbstate);
 #endif /* CONFIG_SMP */
Index: linux-2.6.23-ipipe/include/asm-i386/ipipe.h
===================================================================
--- linux-2.6.23-ipipe.orig/include/asm-i386/ipipe.h
+++ linux-2.6.23-ipipe/include/asm-i386/ipipe.h
@@ -22,6 +22,8 @@
 #ifndef __I386_IPIPE_H
 #define __I386_IPIPE_H
 
+#define ipipe_processor_id()   raw_smp_processor_id()
+
 #ifdef CONFIG_IPIPE
 
 #define IPIPE_ARCH_STRING	"1.10-10"
@@ -37,8 +39,6 @@
 #include <linux/ipipe_percpu.h>
 #include <asm/ptrace.h>
 
-#define ipipe_processor_id()   raw_smp_processor_id()
-
 #define prepare_arch_switch(next)		\
 do {						\
 	ipipe_schedule_notify(current, next);	\
Index: linux-2.6.23-ipipe/include/linux/marker.h
===================================================================
--- linux-2.6.23-ipipe.orig/include/linux/marker.h
+++ linux-2.6.23-ipipe/include/linux/marker.h
@@ -66,19 +66,21 @@ struct marker {
 		__mark_check_format(format, ## args);			\
 		if (!generic) {						\
 			if (unlikely(immediate_read(__mark_##name.state))) { \
-				preempt_disable();			\
+				unsigned long __irqflags;		\
+				ipipe_preempt_disable(__irqflags);	\
 				(*__mark_##name.call)			\
 					(&__mark_##name, call_data,	\
 					format, ## args);		\
-				preempt_enable();			\
+				ipipe_preempt_enable(__irqflags);	\
 			}						\
 		} else {						\
 			if (unlikely(_immediate_read(__mark_##name.state))) { \
-				preempt_disable();			\
+				unsigned long __irqflags;		\
+				ipipe_preempt_disable(__irqflags);	\
 				(*__mark_##name.call)			\
 					(&__mark_##name, call_data,	\
 					format, ## args);		\
-				preempt_enable();			\
+				ipipe_preempt_enable(__irqflags);	\
 			}						\
 		}							\
 	} while (0)
Index: linux-2.6.23-ipipe/ltt/ltt-relay.c
===================================================================
--- linux-2.6.23-ipipe.orig/ltt/ltt-relay.c
+++ linux-2.6.23-ipipe/ltt/ltt-relay.c
@@ -1010,7 +1010,7 @@ static void *ltt_relay_reserve_slot(stru
 	/*
 	 * Perform retryable operations.
 	 */
-	if (ltt_nesting[smp_processor_id()] > 4) {
+	if (ltt_nesting[ipipe_processor_id()] > 4) {
 		local_inc(&ltt_buf->events_lost);
 		return NULL;
 	}
Index: linux-2.6.23-ipipe/ltt/ltt-serialize.c
===================================================================
--- linux-2.6.23-ipipe.orig/ltt/ltt-serialize.c
+++ linux-2.6.23-ipipe/ltt/ltt-serialize.c
@@ -10,6 +10,7 @@
 #include <linux/ctype.h>
 #include <linux/string.h>
 #include <linux/module.h>
+#include <linux/ipipe_base.h>
 #include <linux/ltt-tracer.h>
 
 enum ltt_type {
@@ -943,6 +944,7 @@ void ltt_vtrace(const struct marker *mda
 	u32 compact_data = 0;
 	void *serialize_private = NULL;
 	int cpu;
+	unsigned long irqflags;
 
 	pdata = (struct ltt_active_marker *)mdata->private;
 	if (unlikely(private_data && private_data->id < MARKER_CORE_IDS))
@@ -959,13 +961,13 @@ void ltt_vtrace(const struct marker *mda
 		&& (!private_data || !private_data->force)))
 		return;
 
-	preempt_disable();
+	ipipe_preempt_disable(irqflags);
 	if (likely(!private_data || !private_data->force
 			|| private_data->cpu == -1))
-		cpu = smp_processor_id();
+		cpu = ipipe_processor_id();
 	else
 		cpu = private_data->cpu;
-	ltt_nesting[smp_processor_id()]++;
+	ltt_nesting[ipipe_processor_id()]++;
 
 	if (unlikely(private_data && private_data->trace))
 		dest_trace = private_data->trace;
@@ -1018,8 +1020,8 @@ void ltt_vtrace(const struct marker *mda
 		/* Out-of-order commit */
 		ltt_commit_slot(channel, &transport_data, buffer, slot_size);
 	}
-	ltt_nesting[smp_processor_id()]--;
-	preempt_enable();
+	ltt_nesting[ipipe_processor_id()]--;
+	ipipe_preempt_enable(irqflags);
 }
 EXPORT_SYMBOL_GPL(ltt_vtrace);
 

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: prepare-lttng.patch --]
[-- Type: text/x-patch; name="prepare-lttng.patch", Size: 5099 bytes --]

Index: linux-2.6.23-ipipe/mm/memory.c
===================================================================
--- linux-2.6.23-ipipe.orig/mm/memory.c
+++ linux-2.6.23-ipipe/mm/memory.c
@@ -50,7 +50,6 @@
 #include <linux/delayacct.h>
 #include <linux/init.h>
 #include <linux/writeback.h>
-#include <linux/vmalloc.h>
 
 #include <asm/pgalloc.h>
 #include <asm/uaccess.h>
@@ -2910,104 +2909,3 @@ int access_process_vm(struct task_struct
 	return buf - old_buf;
 }
 EXPORT_SYMBOL_GPL(access_process_vm);
-
-#ifdef CONFIG_IPIPE
-
-static inline int ipipe_pin_pte_range(struct mm_struct *mm, pmd_t *pmd,
-				      struct vm_area_struct *vma,
-				      unsigned long addr, unsigned long end)
-{
-	spinlock_t *ptl;
-	pte_t *pte;
-	
-	do {
-		pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
-		if (!pte)
-			continue;
-
-		if (!pte_present(*pte)) {
-			pte_unmap_unlock(pte, ptl);
-			continue;
-		}
-
-		if (do_wp_page(mm, vma, addr, pte, pmd, ptl, *pte) == VM_FAULT_OOM)
-			return -ENOMEM;
-	} while (addr += PAGE_SIZE, addr != end);
-	return 0;
-}
-
-static inline int ipipe_pin_pmd_range(struct mm_struct *mm, pud_t *pud,
-				      struct vm_area_struct *vma,
-				      unsigned long addr, unsigned long end)
-{
-	unsigned long next;
-	pmd_t *pmd;
-
-	pmd = pmd_offset(pud, addr);
-	do {
-		next = pmd_addr_end(addr, end);
-		if (ipipe_pin_pte_range(mm, pmd, vma, addr, end))
-			return -ENOMEM;
-	} while (pmd++, addr = next, addr != end);
-	return 0;
-}
-
-static inline int ipipe_pin_pud_range(struct mm_struct *mm, pgd_t *pgd,
-				      struct vm_area_struct *vma,
-				      unsigned long addr, unsigned long end)
-{
-	unsigned long next;
-	pud_t *pud;
-
-	pud = pud_offset(pgd, addr);
-	do {
-		next = pud_addr_end(addr, end);
-		if (ipipe_pin_pmd_range(mm, pud, vma, addr, end))
-			return -ENOMEM;
-	} while (pud++, addr = next, addr != end);
-	return 0;
-}
-
-int ipipe_disable_ondemand_mappings(struct task_struct *tsk)
-{
-	unsigned long addr, next, end;
-	struct vm_area_struct *vma;
-	struct mm_struct *mm;
-	int result = 0;
-	pgd_t *pgd;
-
-	mm = get_task_mm(tsk);
-	if (!mm)
-		return -EPERM;
-
-	down_write(&mm->mmap_sem);
-	if (mm->def_flags & VM_PINNED)
-		goto done_mm;
-
-	for (vma = mm->mmap; vma; vma = vma->vm_next) {
-		if (!is_cow_mapping(vma->vm_flags))
-			continue;
-
-		addr = vma->vm_start;
-		end = vma->vm_end;
-		
-		pgd = pgd_offset(mm, addr);
-		do {
-			next = pgd_addr_end(addr, end);
-			if (ipipe_pin_pud_range(mm, pgd, vma, addr, next)) {
-				result = -ENOMEM;
-				goto done_mm;
-			}
-		} while (pgd++, addr = next, addr != end);
-	}
-	mm->def_flags |= VM_PINNED;
-
-  done_mm:
-	up_write(&mm->mmap_sem);
-	mmput(mm);
-	return result;
-}
-
-EXPORT_SYMBOL(ipipe_disable_ondemand_mappings);
-
-#endif
Index: linux-2.6.23-ipipe/include/linux/kernel.h
===================================================================
--- linux-2.6.23-ipipe.orig/include/linux/kernel.h
+++ linux-2.6.23-ipipe/include/linux/kernel.h
@@ -14,7 +14,6 @@
 #include <linux/compiler.h>
 #include <linux/bitops.h>
 #include <linux/log2.h>
-#include <linux/ipipe_base.h>
 #include <asm/byteorder.h>
 #include <asm/bug.h>
 
Index: linux-2.6.23-ipipe/kernel/sched.c
===================================================================
--- linux-2.6.23-ipipe.orig/kernel/sched.c
+++ linux-2.6.23-ipipe/kernel/sched.c
@@ -6756,55 +6756,3 @@ void set_curr_task(int cpu, struct task_
 }
 
 #endif
-
-#ifdef CONFIG_IPIPE
-
-int ipipe_setscheduler_root (struct task_struct *p, int policy, int prio)
-{
-	unsigned long flags;
-	int oldprio, on_rq;
-	struct rq *rq;
-
-	spin_lock_irqsave(&p->pi_lock, flags);
-	rq = __task_rq_lock(p);
-	on_rq = p->se.on_rq;
-	if (on_rq)
-		deactivate_task(rq, p, 0);
-	oldprio = p->prio;
-	__setscheduler(rq, p, policy, prio);
-	ipipe_setsched_notify(p);
-	if (on_rq) {
-		activate_task(rq, p, 0);
-		if (task_running(rq, p)) {
-			if (p->prio > oldprio)
-				resched_task(rq->curr);
-		} else {
-			check_preempt_curr(rq, p);
-		}
-	}
-	__task_rq_unlock(rq);
-	spin_unlock_irqrestore(&p->pi_lock, flags);
-
-	rt_mutex_adjust_pi(p);
-
-	return 0;
-}
-
-EXPORT_SYMBOL(ipipe_setscheduler_root);
-
-int ipipe_reenter_root (struct task_struct *prev, int policy, int prio)
-{
-	finish_task_switch(this_rq(), prev);
-
-	(void)reacquire_kernel_lock(current);
-	preempt_enable_no_resched();
-
-	if (current->policy != policy || current->rt_priority != prio)
-		return ipipe_setscheduler_root(current, policy, prio);
-
-	return 0;
-}
-
-EXPORT_SYMBOL(ipipe_reenter_root);
-
-#endif /* CONFIG_IPIPE */
Index: linux-2.6.23-ipipe/kernel/exit.c
===================================================================
--- linux-2.6.23-ipipe.orig/kernel/exit.c
+++ linux-2.6.23-ipipe/kernel/exit.c
@@ -973,7 +973,6 @@ fastcall NORET_TYPE void do_exit(long co
 
 	if (group_dead)
 		acct_process();
- 	ipipe_exit_notify(tsk);
 	exit_sem(tsk);
 	__exit_files(tsk);
 	__exit_fs(tsk);

[-- Attachment #1.4: series --]
[-- Type: text/plain, Size: 5891 bytes --]

adeos-ipipe-2.6.23-i386-1.10-10.patch
# Linux kernel markers (in 2.6.23-mm1)
prepare-lttng.patch
change-struct-marker-users.patch
combine-instrumentation-menus-in-kernel-kconfiginstrumentation.patch
linux-kernel-markers.patch
linux-kernel-markers-checkpatch-fixes.patch
linux-kernel-markers-coding-style-fixes.patch
linux-kernel-markers-alignment-fix.patch
add-samples-subdir.patch
linux-kernel-markers-samples.patch
linux-kernel-markers-samples-checkpatch-fixes.patch
linux-kernel-markers-samples-coding-style-fix.patch
linux-kernel-markers-samples-remove-asm.patch
linux-kernel-markers-documentation.patch
# LTTng patches
linux-kernel-markers-port-blktrace-to-markers.patch
#
## CH will submit. linux-kernel-markers-port-spu-to-markers.patch
#
kprobes-use-mutex-for-insn-pages.patch
kprobes-dont-use-kprobes-mutex-in-arch-code.patch
kprobes-declare-kprobes-mutex-static.patch
declare-array.patch
text-edit-lock-architecture-independent-code.patch
text-edit-lock-alternative-i386-and-x86_64.patch
text-edit-lock-kprobes-architecture-independent.patch
text-edit-lock-kprobes-i386.patch
text-edit-lock-kprobes-x86_64.patch
text-edit-lock-i386-standardize-debug-rodata.patch
text-edit-lock-x86_64-standardize-debug-rodata.patch
#
#removed-immediate-values-global-modules-list-and-mutex.patch
immediate-values-architecture-independent-code.patch
immediate-values-kconfig-embedded.patch
immediate-values-move-kprobes-i386-restore-interrupt-to-kdebug-h.patch
immediate-values-i386-optimization.patch
immediate-values-powerpc-optimization.patch
immediate-values-documentation.patch
#
# not in mainline profiling-use-immediate-values.patch
linux-kernel-markers-immediate-values.patch
#
#
# cmpxchg_local and cmpxchg64_local standardization
add-cmpxchg-local-to-generic-for-up.patch
i386-cmpxchg64-80386-80486-fallback.patch
add-cmpxchg64-to-alpha.patch
add-cmpxchg64-to-mips.patch
add-cmpxchg64-to-powerpc.patch
add-cmpxchg64-to-x86_64.patch
#
add-cmpxchg-local-to-arm.patch
add-cmpxchg-local-to-avr32.patch
add-cmpxchg-local-to-blackfin.patch
add-cmpxchg-local-to-cris.patch
add-cmpxchg-local-to-frv.patch
add-cmpxchg-local-to-h8300.patch
add-cmpxchg-local-to-ia64.patch
add-cmpxchg-local-to-m32r.patch
fix-m32r-__xchg.patch
fix-m32r-include-sched-h-in-smpboot.patch
local_t_m32r_optimized.patch
add-cmpxchg-local-to-m68k.patch
add-cmpxchg-local-to-m68knommu.patch
add-cmpxchg-local-to-parisc.patch
add-cmpxchg-local-to-ppc.patch
add-cmpxchg-local-to-s390.patch
add-cmpxchg-local-to-sh.patch
add-cmpxchg-local-to-sh64.patch
add-cmpxchg-local-to-sparc.patch
add-cmpxchg-local-to-sparc64.patch
add-cmpxchg-local-to-v850.patch
add-cmpxchg-local-to-xtensa.patch
#
# not lttng. slub-use-cmpxchg-local.patch
#
local_t-documentation-update-2.patch
atomic_opstxt-mention-local_t.patch
local_t-update-documentation.patch
# WAIT FOR USERSPACE MARKERS IMPLEMENTATION BEFORE SENDING TO UPSTREAM
local_t-update-documentation-2.patch
lttng-instrument-kernelh.patch # NOT FOR UPSTREAM
lttng-export-irq_desc.patch
#
#kernel trace thread flag
lttng-kernel-trace-thread-flag-alpha.patch
lttng-kernel-trace-thread-flag-arm.patch
lttng-kernel-trace-thread-flag-avr32.patch
lttng-kernel-trace-thread-flag-blackfin.patch
lttng-kernel-trace-thread-flag-cris.patch
lttng-kernel-trace-thread-flag-frv.patch
lttng-kernel-trace-thread-flag-h8300.patch
lttng-kernel-trace-thread-flag-i386.patch
lttng-kernel-trace-thread-flag-ia64.patch #FIXME
lttng-kernel-trace-thread-flag-m32r.patch
lttng-kernel-trace-thread-flag-m68k.patch
lttng-kernel-trace-thread-flag-m68knommu.patch
lttng-kernel-trace-thread-flag-mips.patch
lttng-kernel-trace-thread-flag-parisc.patch
lttng-kernel-trace-thread-flag-powerpc.patch
lttng-kernel-trace-thread-flag-s390.patch #FIXME
lttng-kernel-trace-thread-flag-sh.patch
lttng-kernel-trace-thread-flag-sh64.patch
lttng-kernel-trace-thread-flag-sparc.patch
lttng-kernel-trace-thread-flag-sparc64.patch
lttng-kernel-trace-thread-flag-um.patch
lttng-kernel-trace-thread-flag-v850.patch
lttng-kernel-trace-thread-flag-x86_64.patch
lttng-kernel-trace-thread-flag-xtensa.patch
lttng-kernel-trace-thread-flag-api.patch
#
lttng-build-instrumentation-menu.patch
#
lttng-timestamp-core.patch
lttng-timestamp-generic.patch
lttng-timestamp-ppc.patch
lttng-mips-export-hpt-frequency.patch
lttng-timestamp-mips.patch
lttng-timestamp-powerpc.patch
#
lttng-timestamp-sh.patch
lttng-test-tsc.patch
lttng-timestamp-i386.patch
lttng-timestamp-x86_64.patch
#
#
lttng-relay-hotplug.patch
lttng-core-header.patch
lttng-core.patch
lttng-core-i386.patch
lttng-core-powerpc.patch
lttng-tracer-header.patch
lttng-tracer.patch
lttng-transport-2.patch
lttng-netlink-control.patch
lttng-serialize.patch
#
#
lttng-instrumentation-arm.patch
lttng-instrumentation-i386.patch
lttng-instrumentation-mips.patch
lttng-instrumentation-powerpc.patch
lttng-instrumentation-ppc.patch
lttng-instrumentation-s390.patch	#FIXME: syscall trace 8 bit.
lttng-instrumentation-sh.patch
lttng-instrumentation-sh64.patch
lttng-instrumentation-sparc.patch
lttng-instrumentation-x86_64.patch
#
lttng-instrumentation.patch
lttng-instrumentation-modules.patch
lttng-export-tasklist-lock.patch
#
lttng-instrumentation-stack.patch
lttng-probes.patch
lttng-statedump.patch
lttng-menus.patch
#
#
seq_file_sorted.patch
module.c-sort-module-list.patch
linux-kernel-markers-iterator.patch
lttng-marker-control.patch
#
#
# Userspace tracing. Disabled for now.
#
#lttng-userspace-tracing.patch
#lttng-userspace-tracing-arm.patch
#lttng-userspace-tracing-i386.patch
#lttng-userspace-tracing-mips.patch
#lttng-userspace-tracing-powerpc.patch
#lttng-userspace-tracing-sh.patch
#lttng-userspace-tracing-x86_64.patch
#lttng-userspace-tracing-menus.patch
#
ltt-ipipe-2.6.23-i386-1.10-10.patch

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.5: lttng-v4.patch --]
[-- Type: text/x-patch; name="lttng-v4.patch", Size: 36382 bytes --]

---
 include/nucleus/ltt.h   |  111 +---------------------------
 ksrc/nucleus/Config.in  |    9 --
 ksrc/nucleus/Kconfig    |   36 ---------
 ksrc/nucleus/Makefile   |    3 
 ksrc/nucleus/intr.c     |   19 ++--
 ksrc/nucleus/ltt.c      |  186 ------------------------------------------------
 ksrc/nucleus/module.c   |    7 -
 ksrc/nucleus/pod.c      |  102 ++++++++++++++++----------
 ksrc/nucleus/shadow.c   |   43 +++++++----
 ksrc/nucleus/synch.c    |   19 +++-
 ksrc/nucleus/timebase.c |    6 -
 11 files changed, 125 insertions(+), 416 deletions(-)

Index: xenomai/include/nucleus/ltt.h
===================================================================
--- xenomai.orig/include/nucleus/ltt.h
+++ xenomai/include/nucleus/ltt.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2004 Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org.net>
  * Copyright (C) 2005 Philippe Gerum <rpm@xenomai.org>.
+ * Copyright (C) 2007 Jan Kiszka <jan.kiszka@domain.hid>.
  *
  * Xenomai is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published
@@ -21,119 +22,17 @@
 #ifndef _XENO_NUCLEUS_LTT_H
 #define _XENO_NUCLEUS_LTT_H
 
-#include <nucleus/types.h>
-
 #ifdef CONFIG_LTT
 
-#include <linux/ltt-core.h>
-
-struct xnltt_evmap {
-
-    char *ltt_label;	/* !< Event label (creation time). */
-    char *ltt_format;	/* !< Event format (creation time). */
-    int ltt_evid;	/* !< LTT custom event id. */
-    int ltt_filter;	/* !< Event filter. */
-};
-
-#define xeno_ev_ienter       0
-#define xeno_ev_iexit        1
-#define xeno_ev_resched      2
-#define xeno_ev_smpsched     3
-#define xeno_ev_fastsched    4
-#define xeno_ev_switch       5
-#define xeno_ev_fault        6
-#define xeno_ev_callout      7
-#define xeno_ev_finalize     8
-#define xeno_ev_thrinit      9
-#define xeno_ev_thrstart     10
-#define xeno_ev_threstart    11
-#define xeno_ev_thrdelete    12
-#define xeno_ev_thrsuspend   13
-#define xeno_ev_thresume     14
-#define xeno_ev_thrunblock   15
-#define xeno_ev_threnice     16
-#define xeno_ev_cpumigrate   17
-#define xeno_ev_sigdispatch  18
-#define xeno_ev_thrboot      19
-#define xeno_ev_tstick       20
-#define xeno_ev_sleepon      21
-#define xeno_ev_wakeup1      22
-#define xeno_ev_wakeupx      23
-#define xeno_ev_syncflush    24
-#define xeno_ev_syncforget   25
-#define xeno_ev_lohandler    26
-#define xeno_ev_primarysw    27
-#define xeno_ev_primary      28
-#define xeno_ev_secondarysw  29
-#define xeno_ev_secondary    30
-#define xeno_ev_shadowmap    31
-#define xeno_ev_shadowunmap  32
-#define xeno_ev_shadowstart  33
-#define xeno_ev_syscall      34
-#define xeno_ev_shadowexit   35
-#define xeno_ev_thrsetmode   36
-#define xeno_ev_rdrotate     37
-#define xeno_ev_rractivate   38
-#define xeno_ev_rrdeactivate 39
-#define xeno_ev_timeset      40
-#define xeno_ev_addhook      41
-#define xeno_ev_remhook      42
-#define xeno_ev_thrperiodic  43
-#define xeno_ev_thrwait      44
-#define xeno_ev_tsenable     45
-#define xeno_ev_tsdisable    46
-#define xeno_ev_mark         47
-#define xeno_ev_watchdog     48
-
-#define xeno_evthr  0x1
-#define xeno_evirq  0x2
-#define xeno_evsys  0x4
-#define xeno_evall  0x7
-
-#define XNLTT_MAX_EVENTS 64
-
-extern struct xnltt_evmap xnltt_evtable[];
-
-extern int xnltt_filter;
-
-#define xnltt_log_event(ev, args...) \
-do { \
-  if (xnltt_evtable[ev].ltt_filter & xnltt_filter) \
-    ltt_log_std_formatted_event(xnltt_evtable[ev].ltt_evid, ##args); \
-} while(0)
-
-static inline void xnltt_set_filter (int mask)
-{
-    xnltt_filter = mask;
-}
-
-static inline void xnltt_stop_tracing (void)
-{
-    xnltt_set_filter(0);
-}
+#include <linux/marker.h>
 
-void xnltt_log_mark(const char *fmt,
-		    ...);
+#define XNLTT_NOARGS				MARK_NOARGS
 
-int xnltt_mount(void);
-
-void xnltt_umount(void);
+#define xnltt_log_event(ev, fmt, args...)	trace_mark(ev, fmt, ##args)
 
 #else /* !CONFIG_LTT */
 
-#define xnltt_log_event(ev, args...); /* Eat the semi-colon. */
-
-static inline void xnltt_log_mark (const char *fmt, ...)
-{
-}
-
-static inline void xnltt_set_filter (int mask)
-{
-}
-
-static inline void xnltt_stop_tracing (void)
-{
-}
+#define xnltt_log_event(ev, fmt, args...)	do { } while (0)
 
 #endif /* CONFIG_LTT */
 
Index: xenomai/ksrc/nucleus/intr.c
===================================================================
--- xenomai.orig/ksrc/nucleus/intr.c
+++ xenomai/ksrc/nucleus/intr.c
@@ -98,9 +98,8 @@ void xnintr_clock_handler(void)
 
 	xnarch_announce_tick();
 
-	xnltt_log_event(xeno_ev_ienter, XNARCH_TIMER_IRQ);
-	xnltt_log_event(xeno_ev_tstick, nktbase.name,
-			xnpod_current_thread()->name);
+	xnltt_log_event(xn_nucleus_irq_enter, "irq %d", XNARCH_TIMER_IRQ);
+	xnltt_log_event(xn_nucleus_tbase_tick, "base %s", nktbase.name);
 
 	++sched->inesting;
 
@@ -124,7 +123,7 @@ void xnintr_clock_handler(void)
 		xnarch_relay_tick();
 	}
 
-	xnltt_log_event(xeno_ev_iexit, XNARCH_TIMER_IRQ);
+	xnltt_log_event(xn_nucleus_irq_exit, "irq %d", XNARCH_TIMER_IRQ);
 	xnstat_exectime_switch(sched, prev);
 }
 
@@ -168,7 +167,7 @@ static void xnintr_shirq_handler(unsigne
 
 	prev  = xnstat_exectime_get_current(sched);
 	start = xnstat_exectime_now();
-	xnltt_log_event(xeno_ev_ienter, irq);
+	xnltt_log_event(xn_nucleus_irq_enter, "irq %d", irq);
 
 	++sched->inesting;
 
@@ -212,7 +211,7 @@ static void xnintr_shirq_handler(unsigne
 	if (--sched->inesting == 0 && xnsched_resched_p())
 		xnpod_schedule();
 
-	xnltt_log_event(xeno_ev_iexit, irq);
+	xnltt_log_event(xn_nucleus_irq_exit, "irq %d", irq);
 	xnstat_exectime_switch(sched, prev);
 }
 
@@ -233,7 +232,7 @@ static void xnintr_edge_shirq_handler(un
 
 	prev  = xnstat_exectime_get_current(sched);
 	start = xnstat_exectime_now();
-	xnltt_log_event(xeno_ev_ienter, irq);
+	xnltt_log_event(xn_nucleus_irq_enter, "irq %d", irq);
 
 	++sched->inesting;
 
@@ -292,7 +291,7 @@ static void xnintr_edge_shirq_handler(un
 	if (--sched->inesting == 0 && xnsched_resched_p())
 		xnpod_schedule();
 
-	xnltt_log_event(xeno_ev_iexit, irq);
+	xnltt_log_event(xn_nucleus_irq_exit, "irq %d", irq);
 	xnstat_exectime_switch(sched, prev);
 }
 
@@ -443,7 +442,7 @@ static void xnintr_irq_handler(unsigned 
 
 	prev  = xnstat_exectime_get_current(sched);
 	start = xnstat_exectime_now();
-	xnltt_log_event(xeno_ev_ienter, irq);
+	xnltt_log_event(xn_nucleus_irq_enter, "irq %d", irq);
 
 	++sched->inesting;
 
@@ -490,7 +489,7 @@ static void xnintr_irq_handler(unsigned 
 	if (--sched->inesting == 0 && xnsched_resched_p())
 		xnpod_schedule();
 
-	xnltt_log_event(xeno_ev_iexit, irq);
+	xnltt_log_event(xn_nucleus_irq_exit, "irq %d", irq);
 	xnstat_exectime_switch(sched, prev);
 }
 
Index: xenomai/ksrc/nucleus/ltt.c
===================================================================
--- xenomai.orig/ksrc/nucleus/ltt.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) 2004 Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org.net>
- * Copyright (C) 2005 Philippe Gerum <rpm@xenomai.org>.
- *
- * Xenomai is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation, Inc., 675 Mass Ave, Cambridge MA
- * 02139, USA; either version 2 of the License, or (at your option)
- * any later version.
- *
- * Xenomai is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
- */
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <stdarg.h>
-#include <nucleus/ltt.h>
-
-void xnltt_log_mark(const char *fmt, ...)
-{
-	char markbuf[64];	/* Don't eat too much stack space. */
-	va_list ap;
-
-	if (xnltt_evtable[xeno_ev_mark].ltt_filter & xnltt_filter) {
-		va_start(ap, fmt);
-		vsnprintf(markbuf, sizeof(markbuf), fmt, ap);
-		va_end(ap);
-		ltt_log_std_formatted_event(xnltt_evtable[xeno_ev_mark].
-					    ltt_evid, markbuf);
-	}
-}
-
-int __init xnltt_mount(void)
-{
-	int ev, evid;
-
-	/* Create all custom LTT events we need. */
-
-	for (ev = 0; xnltt_evtable[ev].ltt_label != NULL; ev++) {
-		evid = ltt_create_event(xnltt_evtable[ev].ltt_label,
-					xnltt_evtable[ev].ltt_format,
-					LTT_CUSTOM_EV_FORMAT_TYPE_STR, NULL);
-		if (evid < 0) {
-			while (--ev >= 0) {
-				xnltt_evtable[ev].ltt_evid = -1;
-				ltt_destroy_event(xnltt_evtable[ev].ltt_evid);
-			}
-
-			return evid;
-		}
-
-		xnltt_evtable[ev].ltt_evid = evid;
-	}
-
-#ifdef CONFIG_XENO_OPT_FILTER_EVALL
-	xnltt_filter = ~xeno_evall;
-#else /* !CONFIG_XENO_OPT_FILTER_EVALL */
-#ifdef CONFIG_XENO_OPT_FILTER_EVIRQ
-	xnltt_filter &= ~xeno_evirq;
-#endif /* CONFIG_XENO_OPT_FILTER_EVIRQ */
-#ifdef CONFIG_XENO_OPT_FILTER_EVTHR
-	xnltt_filter &= ~xeno_evthr;
-#endif /* CONFIG_XENO_OPT_FILTER_EVTHR */
-#ifdef CONFIG_XENO_OPT_FILTER_EVSYS
-	xnltt_filter &= ~xeno_evthr;
-#endif /* CONFIG_XENO_OPT_FILTER_EVSYS */
-#endif /* CONFIG_XENO_OPT_FILTER_EVALL */
-
-	return 0;
-}
-
-void __exit xnltt_umount(void)
-{
-	int ev;
-
-	for (ev = 0; xnltt_evtable[ev].ltt_evid != -1; ev++)
-		ltt_destroy_event(xnltt_evtable[ev].ltt_evid);
-}
-
-struct xnltt_evmap xnltt_evtable[] = {
-
-	[xeno_ev_ienter] = {"Xenomai i-enter", "irq=%d", -1, xeno_evirq},
-	[xeno_ev_iexit] = {"Xenomai i-exit", "irq=%d", -1, xeno_evirq},
-	[xeno_ev_resched] = {"Xenomai resched", NULL, -1, xeno_evthr},
-	[xeno_ev_smpsched] = {"Xenomai smpsched", NULL, -1, xeno_evthr},
-	[xeno_ev_fastsched] = {"Xenomai fastsched", NULL, -1, xeno_evthr},
-	[xeno_ev_switch] = {"Xenomai ctxsw", "%s -> %s", -1, xeno_evthr},
-	[xeno_ev_fault] =
-	    {"Xenomai fault", "thread=%s, location=%p, trap=%d", -1,
-	     xeno_evall},
-	[xeno_ev_callout] =
-	    {"Xenomai callout", "type=%s, thread=%s", -1, xeno_evall},
-	[xeno_ev_finalize] = {"Xenomai finalize", "%s -> %s", -1, xeno_evall},
-	[xeno_ev_thrinit] =
-	    {"Xenomai thread init", "thread=%s, flags=0x%x", -1, xeno_evthr},
-	[xeno_ev_thrstart] =
-	    {"Xenomai thread start", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_threstart] =
-	    {"Xenomai thread restart", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_thrdelete] =
-	    {"Xenomai thread delete", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_thrsuspend] = {"Xenomai thread suspend",
-				"thread=%s, mask=0x%x, timeout=%Lu, wchan=%p",
-				-1, xeno_evthr},
-	[xeno_ev_thresume] =
-	    {"Xenomai thread resume", "thread=%s, mask=0x%x", -1, xeno_evthr},
-	[xeno_ev_thrunblock] =
-	    {"Xenomai thread unblock", "thread=%s, status=0x%x", -1,
-	     xeno_evthr},
-	[xeno_ev_threnice] =
-	    {"Xenomai thread renice", "thread=%s, prio=%d", -1, xeno_evthr},
-	[xeno_ev_cpumigrate] =
-	    {"Xenomai CPU migrate", "thread=%s, cpu=%d", -1, xeno_evthr},
-	[xeno_ev_sigdispatch] =
-	    {"Xenomai sigdispatch", "thread=%s, sigpend=0x%x", -1, xeno_evall},
-	[xeno_ev_thrboot] =
-	    {"Xenomai thread begin", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_tstick] = {"Xenomai time source tick",
-			    "base=%s, runthread=%s", -1, xeno_evirq},
-	[xeno_ev_sleepon] =
-	    {"Xenomai sleepon", "thread=%s, sync=%p", -1, xeno_evthr},
-	[xeno_ev_wakeup1] =
-	    {"Xenomai wakeup1", "thread=%s, sync=%p", -1, xeno_evthr},
-	[xeno_ev_wakeupx] =
-	    {"Xenomai wakeupx", "thread=%s, sync=%p", -1, xeno_evthr},
-	[xeno_ev_syncflush] =
-	    {"Xenomai syncflush", "sync=%p, reason=0x%x", -1, xeno_evthr},
-	[xeno_ev_syncforget] =
-	    {"Xenomai syncforget", "thread=%s, sync=%p", -1, xeno_evthr},
-	[xeno_ev_lohandler] =
-	    {"Xenomai lohandler", "type=%d, task=%s, pid=%d", -1, xeno_evall},
-	[xeno_ev_primarysw] = {"Xenomai modsw1", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_primary] = {"Xenomai modex1", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_secondarysw] = {"Xenomai modsw2", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_secondary] = {"Xenomai modex2", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_shadowmap] =
-	    {"Xenomai shadow map", "thread=%s, pid=%d, prio=%d", -1,
-	     xeno_evthr},
-	[xeno_ev_shadowunmap] =
-	    {"Xenomai shadow unmap", "thread=%s, pid=%d", -1, xeno_evthr},
-	[xeno_ev_shadowstart] =
-	    {"Xenomai shadow start", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_syscall] =
-	    {"Xenomai syscall", "thread=%s, skin=%d, call=%d", -1, xeno_evsys},
-	[xeno_ev_shadowexit] =
-	    {"Xenomai shadow exit", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_thrsetmode] =
-	    {"Xenomai thread setmode", "thread=%s, clrmask=0x%x, setmask=0x%x",
-	     -1,
-	     xeno_evthr},
-	[xeno_ev_rdrotate] =
-	    {"Xenomai rotate readyq", "thread=%s, prio=%d", -1, xeno_evthr},
-	[xeno_ev_rractivate] = {"Xenomai RR on", "quantum=%Lu", -1, xeno_evthr},
-	[xeno_ev_rrdeactivate] = {"Xenomai RR off", NULL, -1, xeno_evthr},
-	[xeno_ev_timeset] = {"Xenomai set time", "newtime=%Lu", -1, xeno_evall},
-	[xeno_ev_addhook] =
-	    {"Xenomai add hook", "type=%d, routine=%p", -1, xeno_evall},
-	[xeno_ev_remhook] =
-	    {"Xenomai remove hook", "type=%d, routine=%p", -1, xeno_evall},
-	[xeno_ev_thrperiodic] =
-	    {"Xenomai thread speriod", "thread=%s, idate=%Lu, period=%Lu", -1,
-	     xeno_evthr},
-	[xeno_ev_thrwait] =
-	    {"Xenomai thread wperiod", "thread=%s", -1, xeno_evthr},
-	[xeno_ev_tsenable] =
-	    {"Xenomai enable time source", "tick=%u ns", -1, xeno_evall},
-	[xeno_ev_tsdisable] = {"Xenomai disable time source", NULL, -1, xeno_evall},
-	[xeno_ev_mark] = {"Xenomai **mark**", "%s", -1, xeno_evall},
-	[xeno_ev_watchdog] =
-	    {"Xenomai watchdog", "runthread=%s", -1, xeno_evall},
-	{NULL, NULL, -1, 0},
-};
-
-int xnltt_filter = xeno_evall;
-
-EXPORT_SYMBOL(xnltt_evtable);
-EXPORT_SYMBOL(xnltt_filter);
-EXPORT_SYMBOL(xnltt_log_mark);
Index: xenomai/ksrc/nucleus/pod.c
===================================================================
--- xenomai.orig/ksrc/nucleus/pod.c
+++ xenomai/ksrc/nucleus/pod.c
@@ -167,9 +167,9 @@ void xnpod_watchdog_handler(xntimer_t *t
 	}
 		
 	if (unlikely(++sched->wdcount >= CONFIG_XENO_OPT_WATCHDOG_TIMEOUT)) {
-		xnltt_log_event(xeno_ev_watchdog, thread->name);
+		xnltt_log_event(xeno_ev_watchdog, "%s", xnthread_name(thread));
 		xnprintf("watchdog triggered -- killing runaway thread '%s'\n",
-			 thread->name);
+			 xnthread_name(thread));
 		xnpod_delete_thread(thread);
 		xnpod_reset_watchdog(sched);
 	}
@@ -181,7 +181,7 @@ void xnpod_schedule_handler(void) /* Cal
 {
 	xnsched_t *sched = xnpod_current_sched();
 
-	xnltt_log_event(xeno_ev_smpsched);
+	xnltt_log_event(xeno_ev_smpsched, XNLTT_NOARGS);
 #if defined(CONFIG_SMP) && defined(CONFIG_XENO_OPT_PRIOCPL)
 	if (testbits(sched->status, XNRPICK)) {
 		clrbits(sched->status, XNRPICK);
@@ -549,11 +549,12 @@ static inline void xnpod_switch_zombie(x
 	int shadow = xnthread_test_state(threadout, XNSHADOW);
 #endif /* CONFIG_XENO_OPT_PERVASIVE */
 
-	xnltt_log_event(xeno_ev_finalize, threadout->name, threadin->name);
+	xnltt_log_event(xeno_ev_finalize, "%s %s",
+			threadout->name, threadin->name);
 
 	if (!emptyq_p(&nkpod->tdeleteq) && !xnthread_test_state(threadout, XNROOT)) {
-		xnltt_log_event(xeno_ev_callout, "SELF-DELETE",
-				threadout->name);
+		xnltt_log_event(xeno_ev_callout, "%s %s",
+				"SELF-DELETE", threadout->name);
 		xnpod_fire_callouts(&nkpod->tdeleteq, threadout);
 	}
 
@@ -703,7 +704,8 @@ int xnpod_init_thread(xnthread_t *thread
 	if (err)
 		return err;
 
-	xnltt_log_event(xeno_ev_thrinit, thread->name, flags);
+	xnltt_log_event(xeno_thread_init, "%s %p %lu %d",
+			xnthread_name(thread), thread, flags, prio);
 
 	xnlock_get_irqsave(&nklock, s);
 	thread->sched = xnpod_current_sched();
@@ -835,7 +837,8 @@ int xnpod_start_thread(xnthread_t *threa
 	if (xnthread_test_state(thread, XNRRB))
 		thread->rrcredit = thread->rrperiod;
 
-	xnltt_log_event(xeno_ev_thrstart, thread->name);
+	xnltt_log_event(xeno_thread_start, "%s %p",
+			xnthread_name(thread), thread);
 
 #ifdef CONFIG_XENO_OPT_PERVASIVE
 	if (xnthread_test_state(thread, XNSHADOW)) {
@@ -859,7 +862,8 @@ int xnpod_start_thread(xnthread_t *threa
 #endif /* __XENO_SIM__ */
 
 	if (!emptyq_p(&nkpod->tstartq) && !xnthread_test_state(thread, XNROOT)) {
-		xnltt_log_event(xeno_ev_callout, "START", thread->name);
+		xnltt_log_event(xeno_ev_callout, "%s %s",
+				"START", xnthread_name(thread));
 		xnpod_fire_callouts(&nkpod->tstartq, thread);
 	}
 
@@ -916,7 +920,8 @@ void xnpod_restart_thread(xnthread_t *th
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_threstart, thread->name);
+	xnltt_log_event(xeno_thread_restart, "%s %p",
+			xnthread_name(thread), thread);
 
 	/* Break the thread out of any wait it is currently in. */
 	xnpod_unblock_thread(thread);
@@ -1032,7 +1037,8 @@ xnflags_t xnpod_set_thread_mode(xnthread
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_thrsetmode, thread->name, clrmask, setmask);
+	xnltt_log_event(xeno_ev_thrsetmode, "%s %lu %lu",
+			xnthread_name(thread), clrmask, setmask);
 
 #ifndef CONFIG_XENO_OPT_ISHIELD
 	setmask &= ~XNSHIELD;
@@ -1165,7 +1171,8 @@ void xnpod_delete_thread(xnthread_t *thr
 	}
 #endif /* CONFIG_XENO_OPT_PERVASIVE */
 
-	xnltt_log_event(xeno_ev_thrdelete, thread->name);
+	xnltt_log_event(xeno_thread_delete, "%s %p",
+			xnthread_name(thread), thread);
 
 	removeq(&nkpod->threadq, &thread->glink);
 	nkpod->threadq_rev++;
@@ -1202,8 +1209,8 @@ void xnpod_delete_thread(xnthread_t *thr
 	} else {
 		if (!emptyq_p(&nkpod->tdeleteq)
 		    && !xnthread_test_state(thread, XNROOT)) {
-			xnltt_log_event(xeno_ev_callout, "DELETE",
-					thread->name);
+			xnltt_log_event(xeno_ev_callout, "%s %s",
+					"DELETE", xnthread_name(thread));
 			xnpod_fire_callouts(&nkpod->tdeleteq, thread);
 		}
 
@@ -1350,7 +1357,9 @@ void xnpod_suspend_thread(xnthread_t *th
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_thrsuspend, thread->name, mask, timeout, wchan);
+	xnltt_log_event(xeno_thread_suspend, "%s %p %lu %Lu %d %p",
+			xnthread_name(thread), thread, mask, timeout,
+			timeout_mode, wchan);
 
 	sched = thread->sched;
 
@@ -1530,7 +1539,8 @@ void xnpod_resume_thread(xnthread_t *thr
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_thresume, thread->name, mask);
+	xnltt_log_event(xeno_thread_resume, "%s %p %lu",
+			xnthread_name(thread), thread, mask);
 	xnarch_trace_pid(xnthread_user_task(thread) ?
 			 xnarch_user_pid(xnthread_archtcb(thread)) : -1,
 			 xnthread_current_priority(thread));
@@ -1671,7 +1681,9 @@ int xnpod_unblock_thread(xnthread_t *thr
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_thrunblock, xnthread_name(thread), xnthread_state_flags(thread));
+	xnltt_log_event(xeno_thread_unblock, "%s %p %lu",
+			xnthread_name(thread), thread,
+			xnthread_state_flags(thread));
 
 	if (xnthread_test_state(thread, XNDELAY))
 		xnpod_resume_thread(thread, XNDELAY);
@@ -1754,7 +1766,8 @@ void xnpod_renice_thread_inner(xnthread_
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_threnice, thread->name, prio);
+	xnltt_log_event(xeno_thread_renice, "%s %p %d",
+			xnthread_name(thread), thread, prio);
 
 	oldprio = thread->cprio;
 
@@ -1835,7 +1848,8 @@ int xnpod_migrate_thread(int cpu)
 	if (cpu == xnarch_current_cpu())
 		goto unlock_and_exit;
 
-	xnltt_log_event(xeno_ev_cpumigrate, thread->name, cpu);
+	xnltt_log_event(xeno_ev_cpumigrate, "%s %d",
+			xnthread_name(thread), cpu);
 
 #ifdef CONFIG_XENO_HW_FPU
 	if (xnthread_test_state(thread, XNFPU)) {
@@ -1920,7 +1934,8 @@ void xnpod_rotate_readyq(int prio)
 	if (sched_emptypq_p(&sched->readyq))
 		goto unlock_and_exit;	/* Nobody is ready. */
 
-	xnltt_log_event(xeno_ev_rdrotate, sched->runthread, prio);
+	xnltt_log_event(xeno_ev_rdrotate, "%s %d",
+			xnthread_name(sched->runthread), prio);
 
 	/* There is _always_ a running thread, ultimately the root
 	   one. Use the base priority, not the priority boost. */
@@ -1974,7 +1989,7 @@ void xnpod_activate_rr(xnticks_t quantum
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_rractivate, quantum);
+	xnltt_log_event(xeno_ev_rractivate, "%Lu", quantum);
 
 	holder = getheadq(&nkpod->threadq);
 
@@ -2019,7 +2034,7 @@ void xnpod_deactivate_rr(void)
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_rrdeactivate);
+	xnltt_log_event(xeno_ev_rrdeactivate, XNLTT_NOARGS);
 
 	holder = getheadq(&nkpod->threadq);
 
@@ -2061,7 +2076,8 @@ void xnpod_dispatch_signals(void)
 	    || thread->asr == XNTHREAD_INVALID_ASR)
 		return;
 
-	xnltt_log_event(xeno_ev_sigdispatch, thread->name, thread->signals);
+	xnltt_log_event(xeno_ev_sigdispatch, "%s %lu",
+			xnthread_name(thread), thread->signals);
 
 	/* Start the asynchronous service routine */
 	oldmode = xnthread_test_state(thread, XNTHREAD_MODE_BITS);
@@ -2102,7 +2118,7 @@ void xnpod_dispatch_signals(void)
 
 void xnpod_welcome_thread(xnthread_t *thread, int imask)
 {
-	xnltt_log_event(xeno_ev_thrboot, thread->name);
+	xnltt_log_event(xeno_ev_thrboot, "%s", xnthread_name(thread));
 
 	xnarch_trace_pid(-1, xnthread_current_priority(thread));
 
@@ -2346,7 +2362,7 @@ void xnpod_schedule(void)
 	if (xnarch_escalate())
 		return;
 
-	xnltt_log_event(xeno_ev_resched);
+	xnltt_log_event(xeno_ev_resched, XNLTT_NOARGS);
 #endif /* __KERNEL__ */
 
 	/* No immediate rescheduling is possible if an ISR or callout
@@ -2442,7 +2458,9 @@ void xnpod_schedule(void)
 	    !xnthread_test_state(threadout, XNRESTART))
 		goto signal_unlock_and_exit;
 
-	xnltt_log_event(xeno_ev_switch, threadout->name, threadin->name);
+	xnltt_log_event(xeno_thread_switch, "%s %p %s %p",
+			xnthread_name(threadout), threadout,
+			xnthread_name(threadin), threadin);
 
 #ifdef CONFIG_XENO_OPT_PERVASIVE
 	shadow = xnthread_test_state(threadout, XNSHADOW);
@@ -2509,7 +2527,8 @@ void xnpod_schedule(void)
 #endif /* __XENO_SIM__ */
 
 	if (!emptyq_p(&nkpod->tswitchq) && !xnthread_test_state(runthread, XNROOT)) {
-		xnltt_log_event(xeno_ev_callout, "SWITCH", runthread->name);
+		xnltt_log_event(xeno_ev_callout, "%s %s",
+				"SWITCH", xnthread_name(runthread));
 		xnpod_fire_callouts(&nkpod->tswitchq, runthread);
 	}
 
@@ -2553,7 +2572,7 @@ void xnpod_schedule_runnable(xnthread_t 
 	xnsched_t *sched = thread->sched;
 	xnthread_t *runthread = sched->runthread, *threadin;
 
-	xnltt_log_event(xeno_ev_fastsched);
+	xnltt_log_event(xeno_ev_fastsched, XNLTT_NOARGS);
 	xnarch_trace_pid(xnthread_user_task(thread) ?
 			 xnarch_user_pid(xnthread_archtcb(thread)) : -1,
 			 xnthread_current_priority(thread));
@@ -2719,7 +2738,7 @@ int xnpod_add_hook(int type, void (*rout
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_addhook, type, routine);
+	xnltt_log_event(xeno_ev_addhook, "%d %p", type, routine);
 
 	switch (type) {
 	case XNHOOK_THREAD_START:
@@ -2789,7 +2808,7 @@ int xnpod_remove_hook(int type, void (*r
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_remhook, type, routine);
+	xnltt_log_event(xeno_ev_remhook, "%d %p", type, routine);
 
 	switch (type) {
 	case XNHOOK_THREAD_START:
@@ -2873,9 +2892,9 @@ int xnpod_trap_fault(xnarch_fltinfo_t *f
 
 	thread = xnpod_current_thread();
 
-	xnltt_log_event(xeno_ev_fault,
-			thread->name,
-			xnarch_fault_pc(fltinfo), xnarch_fault_trap(fltinfo));
+	xnltt_log_event(xeno_ev_fault, "%s %p %lu %d", xnthread_name(thread),
+			thread, xnarch_fault_pc(fltinfo),
+			xnarch_fault_trap(fltinfo));
 
 #ifdef __KERNEL__
 	if (xnarch_fault_fpu_p(fltinfo)) {
@@ -3012,7 +3031,7 @@ int xnpod_enable_timesource(void)
 		return err;
 	}
 
-	xnltt_log_event(xeno_ev_tsenable);
+	xnltt_log_event(xeno_ev_tsenable, XNLTT_NOARGS);
 
 #ifdef CONFIG_XENO_OPT_STATS
 	/*
@@ -3111,7 +3130,7 @@ void xnpod_disable_timesource(void)
 	spl_t s;
 	int cpu;
 
-	xnltt_log_event(xeno_ev_tsdisable);
+	xnltt_log_event(xeno_ev_tsdisable, XNLTT_NOARGS);
 
 	xnlock_get_irqsave(&nklock, s);
 
@@ -3201,7 +3220,9 @@ int xnpod_set_thread_periodic(xnthread_t
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_thrperiodic, thread->name, idate, period);
+	xnltt_log_event(xeno_thread_set_periodic, "%s %p %Lu %Lu %p",
+			xnthread_name(thread), thread, idate, period,
+			&thread->ptimer);
 
 	if (period == XN_INFINITE) {
 		if (xntimer_running_p(&thread->ptimer))
@@ -3304,7 +3325,8 @@ int xnpod_wait_thread_period(unsigned lo
 		goto unlock_and_exit;
 	}
 
-	xnltt_log_event(xeno_ev_thrwait, thread->name);
+	xnltt_log_event(xeno_thread_wait_period, "%s %p",
+			xnthread_name(thread), thread);
 
 	/* Work with either TSC or periodic ticks. */
 	tbase = xnthread_time_base(thread);
@@ -3322,9 +3344,13 @@ int xnpod_wait_thread_period(unsigned lo
 	}
 
 	overruns = xntimer_get_overruns(&thread->ptimer, now);
-	if (overruns)
+	if (overruns) {
 		err = -ETIMEDOUT;
 
+		xnltt_log_event(xeno_thread_missed_period, "%s %p %lu",
+				xnthread_name(thread), thread, overruns);
+	}
+
 	if (likely(overruns_r != NULL))
 		*overruns_r = overruns;
 
Index: xenomai/ksrc/nucleus/shadow.c
===================================================================
--- xenomai.orig/ksrc/nucleus/shadow.c
+++ xenomai/ksrc/nucleus/shadow.c
@@ -881,7 +881,9 @@ static void lostage_handler(void *cookie
 		struct task_struct *p = rq->req[reqnum].task;
 		rq->out = (reqnum + 1) & (LO_MAX_REQUESTS - 1);
 
-		xnltt_log_event(xeno_ev_lohandler, reqnum, p->comm, p->pid);
+		xnltt_log_event(xn_nucleus_lostage_work,
+				"reqnum %d comm %s pid %d",
+				reqnum, p->comm, p->pid);
 
 		switch (rq->req[reqnum].type) {
 		case LO_UNMAP_REQ:
@@ -1094,7 +1096,9 @@ redo:
 	   preemption and using the TASK_ATOMICSWITCH cumulative state
 	   provided by Adeos to Linux tasks. */
 
-	xnltt_log_event(xeno_ev_primarysw, this_task->comm);
+	xnltt_log_event(xn_nucleus_shadow_go_hard,
+			"thread %p thread_name %s comm %s",
+			thread, thread->name, this_task->comm);
 
 	gk->thread = thread;
 	xnthread_set_info(thread, XNATOMIC);
@@ -1141,7 +1145,8 @@ redo:
 	if (rpi_p(thread))
 		rpi_clear_remote(thread);
 
-	xnltt_log_event(xeno_ev_primary, thread->name);
+	xnltt_log_event(xn_nucleus_shadow_hardened, "thread %p thread_name %s",
+			thread, thread->name);
 
 	return 0;
 }
@@ -1186,7 +1191,8 @@ void xnshadow_relax(int notify)
 	   domain to the Linux domain.  This will cause the Linux task
 	   to resume using the register state of the shadow thread. */
 
-	xnltt_log_event(xeno_ev_secondarysw, thread->name);
+	xnltt_log_event(xn_nucleus_shadow_go_relax, "thread %p thread_name %s",
+			thread, thread->name);
 
 	ishield_on(thread);
 
@@ -1231,7 +1237,9 @@ void xnshadow_relax(int notify)
 	/* "current" is now running into the Linux domain on behalf of the
 	   root thread. */
 
-	xnltt_log_event(xeno_ev_secondary, current->comm);
+	xnltt_log_event(xn_nucleus_shadow_relaxed,
+			"thread %p thread_name %s comm %s",
+			thread, thread->name, current->comm);
 }
 
 void xnshadow_exit(void)
@@ -1327,8 +1335,9 @@ int xnshadow_map(xnthread_t *thread, xnc
 		}
 	}
 
-	xnltt_log_event(xeno_ev_shadowmap,
-			thread->name, current->pid,
+	xnltt_log_event(xn_nucleus_shadow_map,
+			"thread %p thread_name %s pid %d priority %d",
+			thread, thread->name, current->pid,
 			xnthread_base_priority(thread));
 
 	/* Switch on propagation of normal kernel events for the bound
@@ -1387,7 +1396,9 @@ void xnshadow_unmap(xnthread_t *thread)
 	xnthread_clear_state(thread, XNMAPPED);
 	rpi_pop(thread);
 
-	xnltt_log_event(xeno_ev_shadowunmap, thread->name, p ? p->pid : -1);
+	xnltt_log_event(xn_nucleus_shadow_unmap,
+			"thread %p thread_name %s pid %d",
+			thread, thread->name, p ? p->pid : -1);
 
 	if (!p)
 		return;
@@ -1450,7 +1461,8 @@ void xnshadow_start(xnthread_t *thread)
 	struct task_struct *p = xnthread_archtcb(thread)->user_task;
 
 	rpi_push(thread);	/* A shadow always starts in relaxed mode. */
-	xnltt_log_event(xeno_ev_shadowstart, thread->name);
+	xnltt_log_event(xn_nucleus_shadow_start, "thread %p thread_name %s",
+			thread, thread->name);
 	xnpod_resume_thread(thread, XNDORMANT);
 
 	if (p->state == TASK_INTERRUPTIBLE)
@@ -1898,7 +1910,9 @@ static inline int do_hisyscall_event(uns
 	muxid = __xn_mux_id(regs);
 	muxop = __xn_mux_op(regs);
 
-	xnltt_log_event(xeno_ev_syscall, thread->name, muxid, muxop);
+	xnltt_log_event(xn_nucleus_syscall_histage,
+			"thread %p thread_name %s muxid %d muxop %d",
+			thread, thread ? thread->name : NULL, muxid, muxop);
 
 	if (muxid < 0 || muxid > XENOMAI_MUX_NR ||
 	    muxop < 0 || muxop >= muxtable[muxid].props->nrcalls) {
@@ -2073,8 +2087,10 @@ static inline int do_losyscall_event(uns
 	muxid = __xn_mux_id(regs);
 	muxop = __xn_mux_op(regs);
 
-	xnltt_log_event(xeno_ev_syscall,
-			xnpod_active_p() ? xnpod_current_thread()->name : "<system>",
+	xnltt_log_event(xn_nucleus_syscall_lostage,
+			"thread %p thread_name %s muxid %d muxop %d",
+			xnpod_active_p() ? xnpod_current_thread() : NULL,
+			xnpod_active_p() ? xnpod_current_thread()->name : NULL,
 			muxid, muxop);
 
 	/* Processing a real-time skin syscall. */
@@ -2151,7 +2167,8 @@ static inline void do_taskexit_event(str
 	xnpod_schedule();
 
 	xnshadow_dereference_skin(magic);
-	xnltt_log_event(xeno_ev_shadowexit, thread->name);
+	xnltt_log_event(xn_nucleus_shadow_exit,
+			"thread %p thread_name %s", thread, thread->name);
 }
 
 RTHAL_DECLARE_EXIT_EVENT(taskexit_event);
Index: xenomai/ksrc/nucleus/synch.c
===================================================================
--- xenomai.orig/ksrc/nucleus/synch.c
+++ xenomai/ksrc/nucleus/synch.c
@@ -174,7 +174,9 @@ void xnsynch_sleep_on(xnsynch_t *synch, 
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_sleepon, thread->name, synch);
+	xnltt_log_event(xn_nucleus_synch_sleepon,
+			"thread %p thread_name %s sync %p",
+			thread, thread->name, synch);
 
 	if (!testbits(synch->status, XNSYNCH_PRIO)) { /* i.e. FIFO */
 		appendpq(&synch->pendq, &thread->plink);
@@ -388,7 +390,9 @@ xnthread_t *xnsynch_wakeup_one_sleeper(x
 		thread->wchan = NULL;
 		synch->owner = thread;
 		xnthread_set_info(thread, XNWAKEN);
-		xnltt_log_event(xeno_ev_wakeup1, thread->name, synch);
+		xnltt_log_event(xn_nucleus_synch_wakeup_one,
+				"thread %p thread_name %s sync %p",
+				thread, thread->name, synch);
 		xnpod_resume_thread(thread, XNPEND);
 	} else
 		synch->owner = NULL;
@@ -461,7 +465,9 @@ xnpholder_t *xnsynch_wakeup_this_sleeper
 	thread->wchan = NULL;
 	synch->owner = thread;
 	xnthread_set_info(thread, XNWAKEN);
-	xnltt_log_event(xeno_ev_wakeupx, thread->name, synch);
+	xnltt_log_event(xn_nucleus_synch_wakeup_all,
+			"thread %p thread_name %s synch %p",
+			thread, thread->name, synch);
 	xnpod_resume_thread(thread, XNPEND);
 
 	if (testbits(synch->status, XNSYNCH_CLAIMED))
@@ -531,7 +537,8 @@ int xnsynch_flush(xnsynch_t *synch, xnfl
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_syncflush, synch, reason);
+	xnltt_log_event(xn_nucleus_synch_flush, "synch %p reason %lu",
+			synch, reason);
 
 	status = emptypq_p(&synch->pendq) ? XNSYNCH_DONE : XNSYNCH_RESCHED;
 
@@ -577,7 +584,9 @@ void xnsynch_forget_sleeper(xnthread_t *
 {
 	xnsynch_t *synch = thread->wchan;
 
-	xnltt_log_event(xeno_ev_syncforget, thread->name, synch);
+	xnltt_log_event(xn_nucleus_synch_forget,
+			"thread %p thread_name %s synch %p",
+			thread, thread->name, synch);
 
 	xnthread_clear_state(thread, XNPEND);
 	thread->wchan = NULL;
Index: xenomai/ksrc/nucleus/timebase.c
===================================================================
--- xenomai.orig/ksrc/nucleus/timebase.c
+++ xenomai/ksrc/nucleus/timebase.c
@@ -469,8 +469,7 @@ void xntbase_tick(xntbase_t *base)
 
 	xnlock_get_irqsave(&nklock, s);
 
-	xnltt_log_event(xeno_ev_tstick, base->name,
-			xnpod_current_thread()->name);
+	xnltt_log_event(xn_nucleus_tbase_tick, "base %s", base->name);
 
 	if (base == &nktbase)
 		xntimer_tick_aperiodic();
@@ -565,7 +564,8 @@ void xntbase_adjust_time(xntbase_t *base
 	}
 #endif /* CONFIG_XENO_OPT_TIMING_PERIODIC */
 
-	/* xnltt_log_event(xeno_ev_timeadjust, base->name, delta); */
+	xnltt_log_event(xn_nucleus_tbase_adjust, "base %s delta %Lu",
+			base->name, delta);
 }
 
 /* The master time base - the most precise one, aperiodic, always valid. */
Index: xenomai/ksrc/nucleus/Config.in
===================================================================
--- xenomai.orig/ksrc/nucleus/Config.in
+++ xenomai/ksrc/nucleus/Config.in
@@ -60,15 +60,6 @@ if [ "$CONFIG_XENO_OPT_NUCLEUS" != "n" ]
 	fi
 	endmenu
 
-	if [ "$CONFIG_LTT" != "n" ]; then
-		mainmenu_option next_comment
-		comment 'LTT tracepoints filtering'
-			bool 'Disable IRQ-related tracepoints' CONFIG_XENO_OPT_FILTER_EVIRQ
-			bool 'Disable thread-related tracepoints' CONFIG_XENO_OPT_FILTER_EVTHR
-			bool 'Disable syscall-related tracepoints' CONFIG_XENO_OPT_FILTER_EVSYS
-			bool 'Disable all tracepoints' CONFIG_XENO_OPT_FILTER_EVALL
-		endmenu
-	fi
 	endmenu
 fi
 
Index: xenomai/ksrc/nucleus/Kconfig
===================================================================
--- xenomai.orig/ksrc/nucleus/Kconfig
+++ xenomai/ksrc/nucleus/Kconfig
@@ -339,40 +339,4 @@ config XENO_OPT_TIMER_WHEEL_STEP
 
 endmenu
 
-menu "LTT tracepoints filtering"
-
-	depends on LTT
-
-config XENO_OPT_FILTER_EVIRQ
-	bool "Disable IRQ-related tracepoints"
-	default y if XENO_OPT_FILTER_EVALL=y
-	help
-
-	When LTT support is active, this option disables tracepoints
-	inside real-time interrupt handlers.
-
-config XENO_OPT_FILTER_EVTHR
-	bool "Disable thread-related tracepoints"
-	default y if XENO_OPT_FILTER_EVALL=y
-	help
-
-	When LTT support is active, this option disables tracepoints
-	inside most thread-related services.
-
-config XENO_OPT_FILTER_EVSYS
-	bool "Disable syscall-related tracepoints"
-	default y if XENO_OPT_FILTER_EVALL=y
-	help
-
-	When LTT support is active, this option disables tracepoints
-	inside the shadow syscall dispatcher.
-
-config XENO_OPT_FILTER_EVALL
-	bool "Disable all tracepoints"
-	help
-
-	This option disables all LTT tracepoints inside Xenomai.
-
-endmenu
-
 endif
Index: xenomai/ksrc/nucleus/Makefile
===================================================================
--- xenomai.orig/ksrc/nucleus/Makefile
+++ xenomai/ksrc/nucleus/Makefile
@@ -14,8 +14,6 @@ xeno_nucleus-$(CONFIG_XENO_OPT_MAP) += m
 
 xeno_nucleus-$(CONFIG_XENO_OPT_REGISTRY) += registry.o
 
-xeno_nucleus-$(CONFIG_LTT) += ltt.o
-
 EXTRA_CFLAGS += -D__IN_XENOMAI__ -Iinclude/xenomai
 
 else
@@ -35,7 +33,6 @@ opt_objs-$(CONFIG_XENO_OPT_PERVASIVE) +=
 opt_objs-$(CONFIG_XENO_OPT_PIPE) += pipe.o
 opt_objs-$(CONFIG_XENO_OPT_MAP) += map.o
 opt_objs-$(CONFIG_XENO_OPT_REGISTRY) += registry.o
-opt_objs-$(CONFIG_LTT) += ltt.o
 
 xeno_nucleus-objs += $(opt_objs-y)
 
Index: xenomai/ksrc/nucleus/module.c
===================================================================
--- xenomai.orig/ksrc/nucleus/module.c
+++ xenomai/ksrc/nucleus/module.c
@@ -1156,10 +1156,6 @@ int __init __xeno_sys_init(void)
 
 	xnintr_mount();
 
-#ifdef CONFIG_LTT
-	xnltt_mount();
-#endif /* CONFIG_LTT */
-
 #ifdef CONFIG_XENO_OPT_PIPE
 	err = xnpipe_mount();
 
@@ -1249,9 +1245,6 @@ void __exit __xeno_sys_exit(void)
 #ifdef CONFIG_XENO_OPT_PIPE
 	xnpipe_umount();
 #endif /* CONFIG_XENO_OPT_PIPE */
-#ifdef CONFIG_LTT
-	xnltt_umount();
-#endif /* CONFIG_LTT */
 #endif /* __KERNEL__ */
 
 	if (nkmsgbuf)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 249 bytes --]

             reply	other threads:[~2007-10-18 22:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-18 22:05 Jan Kiszka [this message]
2007-10-19  7:41 ` [Xenomai-core] LTTng for Xenomai - next round ROSSIER Daniel
2007-10-19  8:13   ` Jan Kiszka
2007-11-05  8:15     ` Jan Kiszka
2007-11-05  8:21       ` Jan Kiszka
2007-11-08  8:09         ` Jan Kiszka
2007-11-08  9:01           ` Philippe Gerum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4717D8AC.8000900@domain.hid \
    --to=jan.kiszka@domain.hid \
    --cc=Daniel.Rossier@domain.hid \
    --cc=xenomai@xenomai.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.