Patches 1-3 are semantic patches for replacing certain seq_* calls with simpler equivalents, e.g. seq_printf(m, "literal") -> seq_puts(m, "literal"). 1 and 3 are guaranteed to preserve the semantics of the code. 2 may change it slightly, since if the seq_file overflows midway through a series of seq_puts calls, some of the strings have been printed; after applying 2, it is all-or-nothing. However, consecutive seq_puts calls with literal strings is mostly used to print long headers, so overflow is very unlikely.
As an example, I applied these coccinelle scripts to kernel/trace/. The net result is a nice round, but admittedly tiny, 256 byte .text reduction. Rasmus Villemoes (6): Coccinelle: Semantic patch for replacing puts with putc Coccinelle: Semantic patch for joining seq_puts calls Coccinelle: Semantic patch for replacing seq_printf calls with equivalent but simpler functions trace: Replace seq_printf by simpler equivalents trace: Merge consecutive seq_puts calls trace: Replace single-character seq_puts with seq_putc kernel/trace/ftrace.c | 30 +++--- kernel/trace/trace.c | 86 ++++++++------- kernel/trace/trace_branch.c | 31 +++--- kernel/trace/trace_events.c | 4 +- kernel/trace/trace_events_trigger.c | 6 +- kernel/trace/trace_functions.c | 2 +- kernel/trace/trace_functions_graph.c | 28 ++--- kernel/trace/trace_kprobe.c | 12 +-- kernel/trace/trace_printk.c | 2 +- kernel/trace/trace_uprobe.c | 4 +- scripts/coccinelle/api/seq_printf.cocci | 156 +++++++++++++++++++++++++++ scripts/coccinelle/api/seq_puts_concat.cocci | 71 ++++++++++++ scripts/coccinelle/api/seq_putsc.cocci | 61 +++++++++++ 13 files changed, 393 insertions(+), 100 deletions(-) create mode 100644 scripts/coccinelle/api/seq_printf.cocci create mode 100644 scripts/coccinelle/api/seq_puts_concat.cocci create mode 100644 scripts/coccinelle/api/seq_putsc.cocci -- 2.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/