All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
To: Petr Mladek <pmladek@suse.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Marco Elver <elver@google.com>,
	linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com,
	linux-mm@kvack.org, Steven Rostedt <rostedt@goodmis.org>,
	Sergey Senozhatsky <senozhatsky@chromium.org>,
	Alexander Potapenko <glider@google.com>,
	Dmitry Vyukov <dvyukov@google.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v2 2/3] lib/vsprintf: Split out sprintf() and friends
Date: Thu, 10 Aug 2023 11:09:20 +0200	[thread overview]
Message-ID: <67ddbcec-b96f-582c-a38c-259234c3f301@rasmusvillemoes.dk> (raw)
In-Reply-To: <ZNScla_5FXc28k32@alley>

On 10/08/2023 10.15, Petr Mladek wrote:

> Everyone agrees that kernel.h should be removed. But there are always
> more possibilities where to move the definitions. For this, the use
> in C files must be considered. Otherwise, it is just a try&hope approach.
> 
>> Also, please, go through all of them and tell, how many of them are using
>> stuff from kernel.h besides sprintf.h and ARRAY_SIZE() (which I plan
>> for a long time to split from kernel.h)?
> 
> I am all for removing vsprintf declarations from linux.h.
> 
> I provided the above numbers to support the idea of moving them
> into printk.h.
> 
> The numbers show that the vsprintf function famility is used
> quite frequently. IMHO, creating an extra tiny include file
> will create more harm then good. By the harm I mean:
> 
>     + churn when updating 1/6 of source files

Well, we probably shouldn't do 5000 single-line patches to add that
sprintf.h include, and another 10000 to add an array-macros.h include
(just as an example). Some tooling and reasonable batching would
probably be required. Churn it will be, but how many thousands of
patches were done to make i2c drivers' probe methods lose a parameter
(first converting them all to .probe_new, then another round to again
assign to .probe when that prototype was changed). That's just the cost
of any tree-wide change in a tree our size.

>     + prolonging the list of #include lines in .c file. It will
>       not help with maintainability which was one of the motivation
>       in this patchset.

We really have to stop pretending it's ok to rely on header a.h
automatically pulling in b.h, if a .c file actually uses something
declared in b.h. [Of course, the reality is more complicated; e.g. we
have many cases where one must include linux/foo.h, not asm/foo.h, but
the actual declarations are in the appropriate arch-specific file.
However, we should not rely on linux/bar.h pulling in linux/foo.h.]

>     + an extra work for people using vsprintf function family in
>       new .c files. People are used to get them for free,
>       together with printk().

This is flawed. Not every C source file does a printk, or uses anything
else from printk.h. E.g. a lot of drivers only do the dev_err() family,
some subsystems have their own wrappers, etc. So by moving the
declarations to printk.h you just replace the kernel.h with something
equally bad (essentially all existing headers are bad because they all
include each other recursively). Also, by not moving the declarations to
a separate header, you're ignoring the fact that your own numbers show
that 5/6 of the kernel's TUs would become _smaller_ by not having to
parse those declarations. And the 1/6 that do use sprintf() may become
smaller by thousands of lines once they can avoid kernel.h and all that
that includes recursively.

But those gains can never be achieved if we don't start somewhere, and
if every such baby step results in 20+ message threads.

Rasmus


  reply	other threads:[~2023-08-10  9:09 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-05 17:50 [PATCH v2 0/3] lib/vsprintf: Rework header inclusions Andy Shevchenko
2023-08-05 17:50 ` [PATCH v2 1/3] lib/vsprintf: Sort headers alphabetically Andy Shevchenko
2023-08-07 14:31   ` Petr Mladek
2023-08-07 14:53     ` Sergey Senozhatsky
2023-08-07 15:00       ` Andy Shevchenko
2023-08-07 14:58     ` Andy Shevchenko
2023-08-07 19:47       ` Rasmus Villemoes
2023-08-14 15:33         ` Petr Mladek
2023-08-05 17:50 ` [PATCH v2 2/3] lib/vsprintf: Split out sprintf() and friends Andy Shevchenko
2023-08-05 18:43   ` Andrew Morton
2023-08-05 21:31     ` Andy Shevchenko
2023-08-08 12:55     ` Andy Shevchenko
2023-08-07 15:03   ` Petr Mladek
2023-08-07 15:09     ` Andy Shevchenko
2023-08-07 15:11       ` Andy Shevchenko
2023-08-07 15:13         ` Andy Shevchenko
2023-08-08  6:41           ` Petr Mladek
2023-08-08 12:47             ` Andy Shevchenko
2023-08-10  8:15               ` Petr Mladek
2023-08-10  9:09                 ` Rasmus Villemoes [this message]
2023-08-10 13:17                   ` Andy Shevchenko
2023-08-10 14:17                     ` Rasmus Villemoes
2023-08-11 19:28                       ` Steven Rostedt
2023-08-14 11:16                         ` Andy Shevchenko
2023-08-14 15:16                   ` Petr Mladek
2023-08-15  9:58                   ` David Laight
2023-08-09  8:48             ` David Laight
2023-08-10 13:13               ` Andy Shevchenko
2023-08-14  8:12                 ` David Laight
2023-08-14 12:28                   ` 'Andy Shevchenko'
2023-08-08  2:24       ` Steven Rostedt
2023-08-08 12:49         ` Andy Shevchenko
2023-08-07 19:31     ` Rasmus Villemoes
2023-08-08 11:17       ` David Laight
2023-08-05 17:50 ` [PATCH v2 3/3] lib/vsprintf: Declare no_hash_pointers in sprintf.h Andy Shevchenko
2023-08-07  6:00   ` Marco Elver
2023-08-07 15:06   ` Petr Mladek
2023-08-07 15:27     ` Andy Shevchenko
2023-08-14 15:38 ` [PATCH v2 0/3] lib/vsprintf: Rework header inclusions Petr Mladek
2023-08-14 16:11   ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=67ddbcec-b96f-582c-a38c-259234c3f301@rasmusvillemoes.dk \
    --to=linux@rasmusvillemoes.dk \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=glider@google.com \
    --cc=kasan-dev@googlegroups.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.