On Thu, 11 Jan 2018 14:05:34 +0100 Alexandre Ghiti <aghiti@xxxxxxxxx> wrote:Ok, thanks for your time and explanations.
On 11/01/2018 11:06, Michal Hocko wrote:Disagree. We'd have to put an absolutely vast amount of complex and
On Thu 11-01-18 09:53:31, Alexandre Ghiti wrote:It is not a big problem but surrounding the declaration with the #ifdef
The only definition of vmf_insert_pfn_pud depends onWhy is this a problem? Compiler should simply throw away any
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD being defined. Then its declaration in
include/linux/huge_mm.h should have the same restriction so that we do
not expose this function if CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is
not defined.
declarations which are not used?
makes the compilation of external modules fail with an "error: implicit
declaration of function vmf_insert_pfn_pud" if
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD is not defined. I think it is
cleaner than generating a .ko which would not load anyway.
hard-to-maintain ifdefs in headers if we were to ensure that such
errors were to be detected at compile time.
Whereas if we defer the detection of the errors until link time (or
depmod or modprobe time) then yes, a handful of people will detect
their mistake a minute or three later but that's a small cost compared
to permanently and badly messing up the header files.