提交 0f4f81dc 编写于 作者: A André Goddard Rosa 提交者: Linus Torvalds

vsprintf: factorize "(null)" string

This patchset reduces lib/lib.a code size by 482 bytes on my Core 2 with
gcc 4.4.1 even considering that it exports a newly defined function
skip_spaces() to drivers:

   text    data     bss     dec     hex filename
  64867     840     592   66299   102fb (TOTALS-lib.a-BEFORE)
  64641     584     592   65817   10119 (TOTALS-lib.a-AFTER)
and implements some code tidy up.

Besides reducing lib.a size, it converts many in-tree drivers to use the
newly defined function, which makes another small reduction on kernel size
overall when those drivers are used.

This patch:

Change "<NULL>" to "(null)", unifying 3 equal strings.
glibc also uses "(null)" for the same purpose.

It decreases code size by 7 bytes:
 text    data     bss     dec     hex filename
15765       0       8   15773    3d9d vsprintf.o (ex lib/lib.a-BEFORE)
15758       0       8   15766    3d96 vsprintf.o (ex lib/lib.a-AFTER)
Signed-off-by: NAndré Goddard Rosa <andre.goddard@gmail.com>
Acked-by: NFrederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 3768f0b1
...@@ -546,12 +546,12 @@ static char *number(char *buf, char *end, unsigned long long num, ...@@ -546,12 +546,12 @@ static char *number(char *buf, char *end, unsigned long long num,
return buf; return buf;
} }
static char *string(char *buf, char *end, char *s, struct printf_spec spec) static char *string(char *buf, char *end, const char *s, struct printf_spec spec)
{ {
int len, i; int len, i;
if ((unsigned long)s < PAGE_SIZE) if ((unsigned long)s < PAGE_SIZE)
s = "<NULL>"; s = "(null)";
len = strnlen(s, spec.precision); len = strnlen(s, spec.precision);
...@@ -1498,7 +1498,7 @@ do { \ ...@@ -1498,7 +1498,7 @@ do { \
size_t len; size_t len;
if ((unsigned long)save_str > (unsigned long)-PAGE_SIZE if ((unsigned long)save_str > (unsigned long)-PAGE_SIZE
|| (unsigned long)save_str < PAGE_SIZE) || (unsigned long)save_str < PAGE_SIZE)
save_str = "<NULL>"; save_str = "(null)";
len = strlen(save_str); len = strlen(save_str);
if (str + len + 1 < end) if (str + len + 1 < end)
memcpy(str, save_str, len + 1); memcpy(str, save_str, len + 1);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册