diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2010-05-31 12:52:35 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2010-06-01 10:43:11 -0400 |
commit | 753fb14dfb0662e1d38758ffc6876c0ab1c7bd9e (patch) | |
tree | d03e024cfd3d815e039a4c2d55f7c35108271af8 /litmus | |
parent | 62c186fde48926a30f4e61332a805430dc1325cd (diff) |
Make platform-specific Feather-Trace depend on !CONFIG_DEBUG_RODATA
Feather-Trace rewrites instructions in the kernel's .text segment.
This segment may be write-protected if CONFIG_DEBUG_RODATA is selected.
In this case, fall back to the default flag-based Feather-Trace
implementation. In the future, we could either adopt the ftrace method
of rewriting .text addresses using non-.text mappings or we could
consider replacing Feather-Trace with ftrace altogether.
For now, this patch avoids unexpected runtime errors.
Diffstat (limited to 'litmus')
-rw-r--r-- | litmus/Kconfig | 9 | ||||
-rw-r--r-- | litmus/ft_event.c | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/litmus/Kconfig b/litmus/Kconfig index 1c0a96d54992..f3aa7478faf7 100644 --- a/litmus/Kconfig +++ b/litmus/Kconfig | |||
@@ -80,6 +80,15 @@ config FEATHER_TRACE | |||
80 | Feather-Trace basic tracing infrastructure. Includes device file | 80 | Feather-Trace basic tracing infrastructure. Includes device file |
81 | driver and instrumentation point support. | 81 | driver and instrumentation point support. |
82 | 82 | ||
83 | There are actually two implementations of Feather-Trace. | ||
84 | 1) A slower, but portable, default implementation. | ||
85 | 2) Architecture-specific implementations that rewrite kernel .text at runtime. | ||
86 | |||
87 | If enabled, Feather-Trace will be based on 2) if available (currently only for x86). | ||
88 | However, if DEBUG_RODATA=y, then Feather-Trace will choose option 1) in any case | ||
89 | to avoid problems with write-protected .text pages. | ||
90 | |||
91 | Bottom line: to avoid increased overheads, choose DEBUG_RODATA=n. | ||
83 | 92 | ||
84 | config SCHED_TASK_TRACE | 93 | config SCHED_TASK_TRACE |
85 | bool "Trace real-time tasks" | 94 | bool "Trace real-time tasks" |
diff --git a/litmus/ft_event.c b/litmus/ft_event.c index 58124fe0ad90..399a07becca5 100644 --- a/litmus/ft_event.c +++ b/litmus/ft_event.c | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | #include <litmus/feather_trace.h> | 3 | #include <litmus/feather_trace.h> |
4 | 4 | ||
5 | #ifndef CONFIG_ARCH_HAS_FEATHER_TRACE | 5 | #if !defined(CONFIG_ARCH_HAS_FEATHER_TRACE) || defined(CONFIG_DEBUG_RODATA) |
6 | /* provide dummy implementation */ | 6 | /* provide dummy implementation */ |
7 | 7 | ||
8 | int ft_events[MAX_EVENTS]; | 8 | int ft_events[MAX_EVENTS]; |