[patch 08/10] Defines the linker macro EXTRA_RWDATA for the marker data section.

Mathieu Desnoyers
2007-05-10T02:52:58Z

[-- Attachment #1: linux-kernel-markers-define-the-linker-macro-extra_rwdata.patch --]
[-- Type: text/plain, Size: 2784 bytes --]

Defines the linker macro EXTRA_RWDATA for the marker data section. It puts
the marker data in a separate section that will not pollute the normal .data
section, which minimize the cache impact. Markers need such a special section
because they define a lot of spreaded and small data structures at multiple
sites.

This patch also creates the __markers_strings section (ro marker strings) and
makes sure the __markers section is aligned by putting it before the
__ksymtab_strings (not after).

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

include/asm-generic/vmlinux.lds.h | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)

Index: linux-2.6-lttng/include/asm-generic/vmlinux.lds.h
===================================================================
--- linux-2.6-lttng.orig/include/asm-generic/vmlinux.lds.h 2007-05-08 17:07:12.000000000 -0400
+++ linux-2.6-lttng/include/asm-generic/vmlinux.lds.h 2007-05-08 17:09:12.000000000 -0400
@@ -116,21 +116,19 @@
*(__kcrctab_gpl_future) \
VMLINUX_SYMBOL(__stop___kcrctab_gpl_future) = .; \
} \
- \
- /* Kernel symbol table: strings */ \
- __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
- *(__ksymtab_strings) \
- } \
/* Kernel markers : pointers */ \
- .markers : AT(ADDR(.markers) - LOAD_OFFSET) { \
+ __markers : AT(ADDR(__markers) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___markers) = .; \
- *(.markers) \
+ *(__markers) \
VMLINUX_SYMBOL(__stop___markers) = .; \
} \
- .markers.c : AT(ADDR(.markers.c) - LOAD_OFFSET) { \
- VMLINUX_SYMBOL(__start___markers_c) = .; \
- *(.markers.c) \
- VMLINUX_SYMBOL(__stop___markers_c) = .; \
+ /* Kernel symbol table: strings */ \
+ __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
+ *(__ksymtab_strings) \
+ } \
+ /* Kernel markers : strings */ \
+ __markers_strings : AT(ADDR(__markers_strings) - LOAD_OFFSET) { \
+ *(__markers_strings) \
} \
__end_rodata = .; \
. = ALIGN(4096); \
@@ -145,6 +143,10 @@
\
. = ALIGN(4096);

+#define EXTRA_RWDATA \
+ . = ALIGN(8); \
+ *(__markers_data) \
+
#define SECURITY_INIT \
.security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__security_initcall_start) = .; \
@@ -241,4 +243,3 @@
*(.initcall6s.init) \
*(.initcall7.init) \
*(.initcall7s.init)
-

--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68