linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: David Rientjes <rientjes@google.com>
To: Josh Triplett <josh@joshtriplett.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Rashika Kheria <rashika.kheria@gmail.com>,
	linux-kernel@vger.kernel.org, Rik van Riel <riel@redhat.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Jiang Liu <jiang.liu@huawei.com>,
	Michel Lespinasse <walken@google.com>,
	linux-mm@kvack.org
Subject: Re: [PATCH 9/9] mm: Remove ifdef condition in include/linux/mm.h
Date: Fri, 7 Feb 2014 17:02:02 -0800 (PST)	[thread overview]
Message-ID: <alpine.DEB.2.02.1402071654560.775@chino.kir.corp.google.com> (raw)
In-Reply-To: <20140207232711.GA16836@jtriplet-mobl1>

On Fri, 7 Feb 2014, Josh Triplett wrote:

> > Why??  If CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID then, yes, we need it to be 
> > global.  Otherwise it's perfectly fine just being static in file scope.  
> > This causes the compilation unit to break when you compile it, not wait 
> > until vmlinux and find undefined references.
> > 
> > I see no reason it can't be done like this in mm/page_alloc.c:
> > 
> > 	#ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
> > 	extern int __meminit __early_pfn_to_nid(unsigned long pfn);
> 
> No, a .c file should not have an extern declaration in it.  This should
> live in an appropriate header file, to be included in both page_alloc.c
> and any arch file that defines an overriding function.
> 

Ok, so you have religious beliefs about extern being used in files ending 
in .c and don't mind the 2900 occurrences of it in the kernel tree and 
desire 14 line obfuscation in header files with comments to what is being 
defined in .c files such as "please see mm/page_alloc.c" as mm.h has.  
Good point.

> > Both of these options look much better than
> > 
> > 	include/linux/mm.h:
> > 
> > 	#if !defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) && \
> > 	    !defined(CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID)
> > 	static inline int __early_pfn_to_nid(unsigned long pfn)
> > 	{
> > 	        return 0;
> > 	}
> > 	#else
> > 	/* please see mm/page_alloc.c */
> > 	extern int __meminit early_pfn_to_nid(unsigned long pfn);
> > 	#ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
> > 	/* there is a per-arch backend function. */
> > 	extern int __meminit __early_pfn_to_nid(unsigned long pfn);
> > 	#endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */
> > 	#endif
> > 
> > where all this confusion is originating from.
> 
> The proposal is to first simplify those ifdefs by eliminating the inner
> one in the #else; I agree with Andrew that we ought to go ahead and take
> that step given the patch at hand, and then figure out if there's an
> additional simplification possible.
> 

If additional simplification is possible?  Yeah, it's __weak which is 
designed for this purpose.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2014-02-08  1:02 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-07 12:01 [PATCH 1/9] mm: Mark function as static in compaction.c Rashika Kheria
2014-02-07 12:03 ` [PATCH 2/9] mm: Mark functions as static in memory.c Rashika Kheria
2014-02-07 13:03   ` Rik van Riel
2014-02-07 20:47   ` David Rientjes
2014-02-07 12:04 ` [PATCH 3/9] mm: Mark function as static in mmap.c Rashika Kheria
2014-02-07 13:16   ` Rik van Riel
2014-02-07 20:47   ` David Rientjes
2014-02-07 12:07 ` [PATCH 4/9] mm: Mark function as static in process_vm_access.c Rashika Kheria
2014-02-07 20:49   ` David Rientjes
2014-02-07 12:08 ` [PATCH 5/9] mm: Mark functions as static in migrate.c Rashika Kheria
2014-02-07 13:16   ` Rik van Riel
2014-02-07 20:49   ` David Rientjes
2014-02-07 12:10 ` [PATCH 6/9] mm: Mark function as static in memcontrol.c Rashika Kheria
2014-02-07 20:55   ` David Rientjes
2014-02-07 12:11 ` [PATCH 7/9] mm: Mark functions as static in page_cgroup.c Rashika Kheria
2014-02-07 20:56   ` David Rientjes
2014-02-07 12:12 ` [PATCH 8/9] mm: Mark function as static in nobootmem.c Rashika Kheria
2014-02-07 20:57   ` David Rientjes
2014-02-07 12:15 ` [PATCH 9/9] mm: Remove ifdef condition in include/linux/mm.h Rashika Kheria
2014-02-07 13:18   ` Rik van Riel
2014-02-07 21:04   ` David Rientjes
2014-02-07 21:07     ` Josh Triplett
2014-02-07 21:15       ` David Rientjes
2014-02-07 22:30         ` Andrew Morton
2014-02-07 23:09           ` David Rientjes
2014-02-07 23:27             ` Josh Triplett
2014-02-08  1:02               ` David Rientjes [this message]
2014-02-08  1:25                 ` Josh Triplett
2014-02-07 12:51 ` [PATCH 1/9] mm: Mark function as static in compaction.c Rik van Riel
2014-02-07 20:43 ` David Rientjes

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=alpine.DEB.2.02.1402071654560.775@chino.kir.corp.google.com \
    --to=rientjes@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=jiang.liu@huawei.com \
    --cc=josh@joshtriplett.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=rashika.kheria@gmail.com \
    --cc=riel@redhat.com \
    --cc=walken@google.com \
    /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