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/

Reply via email to