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 <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to