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(<t_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 --]
next 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.