From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Petr Mladek <pmladek@suse.com>, 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 16:17:57 +0200 [thread overview]
Message-ID: <37faa9c7-94a3-3ea1-f116-6ff5cdf021cd@rasmusvillemoes.dk> (raw)
In-Reply-To: <ZNTjbtNhWts5i8Q0@smile.fi.intel.com>
On 10/08/2023 15.17, Andy Shevchenko wrote:
> On Thu, Aug 10, 2023 at 11:09:20AM +0200, Rasmus Villemoes wrote:
>> On 10/08/2023 10.15, Petr Mladek wrote:
>
> ...
>
>>> + 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.]
>
> Btw, it's easy to enforce IIUC, i.e. by dropping
>
> #ifndef _FOO_H
> #define _FOO_H
> #endif
>
> mantra from the headers.
>
No, you can't do that, because some headers legitimately include other
headers, often for type definitions. Say some struct definition where
one of the members is another struct (struct list_head being an obvious
example). Or a static inline function.
We _also_ don't want to force everybody who includes a.h to ensure that
they first include b.h because something in a.h needs stuff from b.h.
So include guards must be used. They are a so well-known idiom that gcc
even has special code for handling them: If everything in a foo.h file
except comments is inside an ifndef/define/endif, gcc remembers that
that foo.h file has such an include guard, so when gcc then encounters
some #include directive that would again resolve to that same foo.h, and
the include guard hasn't been #undef'ed, it doesn't even do the syscalls
to open/read/close the file again.
Rasmus
next prev parent reply other threads:[~2023-08-10 14:18 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
2023-08-10 13:17 ` Andy Shevchenko
2023-08-10 14:17 ` Rasmus Villemoes [this message]
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=37faa9c7-94a3-3ea1-f116-6ff5cdf021cd@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox