* Re: [patch 8/8] Pageflags: Eliminate PG_xxx aliases [not found] ` <20080305223846.780991734@sgi.com> @ 2008-03-06 2:40 ` Nick Piggin 2008-03-06 22:51 ` Christoph Lameter 0 siblings, 1 reply; 15+ messages in thread From: Nick Piggin @ 2008-03-06 2:40 UTC (permalink / raw) To: Christoph Lameter Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Thursday 06 March 2008 09:38, Christoph Lameter wrote: > Remove aliases of PG_xxx. We can easily drop those now and alias by > specifying the PG_xxx flag in the macro that generates the functions. > > Signed-off-by: Christoph Lameter <clameter@sgi.com> > > --- > include/linux/page-flags.h | 10 +++------- > mm/page_alloc.c | 2 +- > 2 files changed, 4 insertions(+), 8 deletions(-) > > Index: linux-2.6.25-rc3-mm1/mm/page_alloc.c > =================================================================== > --- linux-2.6.25-rc3-mm1.orig/mm/page_alloc.c 2008-03-05 14:17:09.963838055 > -0800 +++ linux-2.6.25-rc3-mm1/mm/page_alloc.c 2008-03-05 > 14:21:45.372755277 -0800 @@ -650,7 +650,7 @@ static int > prep_new_page(struct page *pa > if (PageReserved(page)) > return 1; > > - page->flags &= ~(1 << PG_uptodate | 1 << PG_error | 1 << PG_readahead | > + page->flags &= ~(1 << PG_uptodate | 1 << PG_error | 1 << PG_reclaim | > 1 << PG_referenced | 1 << PG_arch_1 | > 1 << PG_owner_priv_1 | 1 << PG_mappedtodisk); > set_page_private(page, 0); > Index: linux-2.6.25-rc3-mm1/include/linux/page-flags.h > =================================================================== > --- linux-2.6.25-rc3-mm1.orig/include/linux/page-flags.h 2008-03-05 > 14:21:29.689386158 -0800 +++ > linux-2.6.25-rc3-mm1/include/linux/page-flags.h 2008-03-05 > 14:21:45.372755277 -0800 @@ -77,8 +77,6 @@ enum pageflags { > PG_active, > PG_slab, > PG_owner_priv_1, /* Owner use. If pagecache, fs may use*/ > - PG_checked = PG_owner_priv_1, /* Used by some filesystems */ > - PG_pinned = PG_owner_priv_1, /* Xen pinned pagetable */ > PG_arch_1, > PG_reserved, > PG_private, /* If pagecache, has fs-private data */ > @@ -87,8 +85,6 @@ enum pageflags { > PG_swapcache, /* Swap page: swp_entry_t in private */ > PG_mappedtodisk, /* Has blocks allocated on-disk */ > PG_reclaim, /* To be reclaimed asap */ > - /* PG_readahead is only used for file reads; PG_reclaim is only for > writes */ - PG_readahead = PG_reclaim, /* Reminder to do async read-ahead > */ PG_buddy, /* Page is free, on buddy lists */ IMO it's nice to see these alias up front. Otherwise the patchset looks pretty good, nice work. I actually hate macros for generating things, but I try to pick my fights ;) -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 8/8] Pageflags: Eliminate PG_xxx aliases 2008-03-06 2:40 ` [patch 8/8] Pageflags: Eliminate PG_xxx aliases Nick Piggin @ 2008-03-06 22:51 ` Christoph Lameter 2008-03-07 0:48 ` Nick Piggin 0 siblings, 1 reply; 15+ messages in thread From: Christoph Lameter @ 2008-03-06 22:51 UTC (permalink / raw) To: Nick Piggin Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Thu, 6 Mar 2008, Nick Piggin wrote: > > PG_mappedtodisk, /* Has blocks allocated on-disk */ > > PG_reclaim, /* To be reclaimed asap */ > > - /* PG_readahead is only used for file reads; PG_reclaim is only for > > writes */ - PG_readahead = PG_reclaim, /* Reminder to do async read-ahead > > */ PG_buddy, /* Page is free, on buddy lists */ > > IMO it's nice to see these alias up front. I could add a comment pointing to the aliases for those that are aliases? -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 8/8] Pageflags: Eliminate PG_xxx aliases 2008-03-06 22:51 ` Christoph Lameter @ 2008-03-07 0:48 ` Nick Piggin 2008-03-07 1:38 ` Christoph Lameter 0 siblings, 1 reply; 15+ messages in thread From: Nick Piggin @ 2008-03-07 0:48 UTC (permalink / raw) To: Christoph Lameter Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Friday 07 March 2008 09:51, Christoph Lameter wrote: > On Thu, 6 Mar 2008, Nick Piggin wrote: > > > PG_mappedtodisk, /* Has blocks allocated on-disk */ > > > PG_reclaim, /* To be reclaimed asap */ > > > - /* PG_readahead is only used for file reads; PG_reclaim is only for > > > writes */ - PG_readahead = PG_reclaim, /* Reminder to do async > > > read-ahead */ PG_buddy, /* Page is free, on buddy lists */ > > > > IMO it's nice to see these alias up front. > > I could add a comment pointing to the aliases for those that are aliases? Yeah that would be better than nothing. I didn't quite understand why you made this change in the first place though. -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 8/8] Pageflags: Eliminate PG_xxx aliases 2008-03-07 0:48 ` Nick Piggin @ 2008-03-07 1:38 ` Christoph Lameter 2008-03-07 2:20 ` Nick Piggin 0 siblings, 1 reply; 15+ messages in thread From: Christoph Lameter @ 2008-03-07 1:38 UTC (permalink / raw) To: Nick Piggin Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Fri, 7 Mar 2008, Nick Piggin wrote: > On Friday 07 March 2008 09:51, Christoph Lameter wrote: > > On Thu, 6 Mar 2008, Nick Piggin wrote: > > > > PG_mappedtodisk, /* Has blocks allocated on-disk */ > > > > PG_reclaim, /* To be reclaimed asap */ > > > > - /* PG_readahead is only used for file reads; PG_reclaim is only for > > > > writes */ - PG_readahead = PG_reclaim, /* Reminder to do async > > > > read-ahead */ PG_buddy, /* Page is free, on buddy lists */ > > > > > > IMO it's nice to see these alias up front. > > > > I could add a comment pointing to the aliases for those that are aliases? > > Yeah that would be better than nothing. I didn't quite > understand why you made this change in the first place > though. It avoids us having to deal with aliases in the future. PG_xx at this point is not unique which can be confusing. See the PG_reclaim in mm/page_alloc.c. It also means PG_readahead. If I look for handling of PG_readahead then I wont find it. -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 8/8] Pageflags: Eliminate PG_xxx aliases 2008-03-07 1:38 ` Christoph Lameter @ 2008-03-07 2:20 ` Nick Piggin 2008-03-07 3:53 ` Christoph Lameter 0 siblings, 1 reply; 15+ messages in thread From: Nick Piggin @ 2008-03-07 2:20 UTC (permalink / raw) To: Christoph Lameter Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Friday 07 March 2008 12:38, Christoph Lameter wrote: > On Fri, 7 Mar 2008, Nick Piggin wrote: > > On Friday 07 March 2008 09:51, Christoph Lameter wrote: > > > On Thu, 6 Mar 2008, Nick Piggin wrote: > > > > > PG_mappedtodisk, /* Has blocks allocated on-disk */ > > > > > PG_reclaim, /* To be reclaimed asap */ > > > > > - /* PG_readahead is only used for file reads; PG_reclaim is only > > > > > for writes */ - PG_readahead = PG_reclaim, /* Reminder to do async > > > > > read-ahead */ PG_buddy, /* Page is free, on buddy lists */ > > > > > > > > IMO it's nice to see these alias up front. > > > > > > I could add a comment pointing to the aliases for those that are > > > aliases? > > > > Yeah that would be better than nothing. I didn't quite > > understand why you made this change in the first place > > though. > > It avoids us having to deal with aliases in the future. It doesn't. You still have to deal with them. > PG_xx at this > point is not unique which can be confusing. See the PG_reclaim in > mm/page_alloc.c. It also means PG_readahead. If I look for > handling of PG_readahead then I wont find it. You can't just pretend not to deal with aliases at that point in mm/page_alloc.c just becuase you only have one name for the bit position. You still have to know that checking for PG_reclaim in bad_page can only be done if it is *also* a bug for PG_readahead to be found set at that point too. Because it is an alias. -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 8/8] Pageflags: Eliminate PG_xxx aliases 2008-03-07 2:20 ` Nick Piggin @ 2008-03-07 3:53 ` Christoph Lameter 2008-03-07 4:16 ` Nick Piggin 0 siblings, 1 reply; 15+ messages in thread From: Christoph Lameter @ 2008-03-07 3:53 UTC (permalink / raw) To: Nick Piggin Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Fri, 7 Mar 2008, Nick Piggin wrote: > > It avoids us having to deal with aliases in the future. > > It doesn't. You still have to deal with them. Sortof. You do not have to deal with it on the level of the PG_xxx enum constant. Yes you will have to deal with the aliases at the level of the functions. > > PG_xx at this > > point is not unique which can be confusing. See the PG_reclaim in > > mm/page_alloc.c. It also means PG_readahead. If I look for > > handling of PG_readahead then I wont find it. > > You can't just pretend not to deal with aliases at that point > in mm/page_alloc.c just becuase you only have one name for the > bit position. If you only have one name for the bit position the you can localize the aliases and uses of that bit. This means you can go from a bit that you see set while debugging to the PG_xxx flag and then look for uses. Which will turn up aliases. > You still have to know that checking for PG_reclaim in bad_page > can only be done if it is *also* a bug for PG_readahead to be > found set at that point too. Because it is an alias. True. -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 8/8] Pageflags: Eliminate PG_xxx aliases 2008-03-07 3:53 ` Christoph Lameter @ 2008-03-07 4:16 ` Nick Piggin 0 siblings, 0 replies; 15+ messages in thread From: Nick Piggin @ 2008-03-07 4:16 UTC (permalink / raw) To: Christoph Lameter Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Friday 07 March 2008 14:53, Christoph Lameter wrote: > On Fri, 7 Mar 2008, Nick Piggin wrote: > > > It avoids us having to deal with aliases in the future. > > > > It doesn't. You still have to deal with them. > > Sortof. > > You do not have to deal with it on the level of the PG_xxx enum constant. But that's the easy part, and the part that I think is actually useful because you get to explicitly see the aliases. > Yes you will have to deal with the aliases at the level of the > functions. Which is the hard part. > > > PG_xx at this > > > point is not unique which can be confusing. See the PG_reclaim in > > > mm/page_alloc.c. It also means PG_readahead. If I look for > > > handling of PG_readahead then I wont find it. > > > > You can't just pretend not to deal with aliases at that point > > in mm/page_alloc.c just becuase you only have one name for the > > bit position. > > If you only have one name for the bit position the you can localize the > aliases and uses of that bit. This means you can go from a bit that you > see set while debugging to the PG_xxx flag and then look for uses. Which > will turn up aliases. I don't understand how this would be any different from the current code except with the curent code, you only have to look for aliases in one place (ie. the PG_ definitions). -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <20080305223845.436523065@sgi.com>]
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions [not found] ` <20080305223845.436523065@sgi.com> @ 2008-03-06 4:08 ` Andrew Morton 2008-03-06 20:20 ` Christoph Lameter 2008-03-06 20:51 ` Sam Ravnborg 1 sibling, 1 reply; 15+ messages in thread From: Andrew Morton @ 2008-03-06 4:08 UTC (permalink / raw) To: Christoph Lameter Cc: ak, Sam Ravnborg, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Wed, 05 Mar 2008 14:38:17 -0800 Christoph Lameter <clameter@sgi.com> wrote: > The use of enums create constants that are not available to the preprocessor > when building the kernel (f.e. MAX_NR_ZONES). > > Arch code already has a way to export constants calculated to the > preprocessor through the asm-offsets.c file. Generate something > similar for the core kernel through kbuild. > err, this patch needs help. > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ linux-2.6/include/linux/bounds.h 2008-02-29 19:29:50.000000000 -0800 > @@ -0,0 +1,10 @@ > +#ifndef __LINUX_BOUNDS_H__ > +#define __LINUX_BOUNDS_H__ > +/* > + * DO NOT MODIFY. > + * > + * This file was generated by Kbuild > + * > + */ > + > +#endif a) I'm not sure that we should check in a file which is supposed to get overwritten at build-time. b) Is this `make O=' friendly? c) make mrproper make allmodconfig make In file included from include/linux/mm.h:192, from include/linux/suspend.h:11, from arch/x86/kernel/asm-offsets_64.c:12, from arch/x86/kernel/asm-offsets.c:4: include/linux/page-flags.h:10:26: error: linux/bounds.h: No such file or directory -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions 2008-03-06 4:08 ` [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions Andrew Morton @ 2008-03-06 20:20 ` Christoph Lameter 2008-03-06 21:00 ` Sam Ravnborg 0 siblings, 1 reply; 15+ messages in thread From: Christoph Lameter @ 2008-03-06 20:20 UTC (permalink / raw) To: Andrew Morton Cc: ak, Sam Ravnborg, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Wed, 5 Mar 2008, Andrew Morton wrote: > > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > > +++ linux-2.6/include/linux/bounds.h 2008-02-29 19:29:50.000000000 -0800 > > @@ -0,0 +1,10 @@ > > +#ifndef __LINUX_BOUNDS_H__ > > +#define __LINUX_BOUNDS_H__ > > +/* > > + * DO NOT MODIFY. > > + * > > + * This file was generated by Kbuild > > + * > > + */ > > + > > +#endif > > a) I'm not sure that we should check in a file which is supposed to get > overwritten at build-time. Well but it needs to be present in order to generate it. If the definitions are not present then the new values of the constants cannot be determined. A .config determined the value of these. > b) Is this `make O=' friendly? These are just symbol definitions. Should be handled the same way as arch/x86/*/asm-offsets.* stuff > c) > make mrproper > make allmodconfig > make > > In file included from include/linux/mm.h:192, > from include/linux/suspend.h:11, > from arch/x86/kernel/asm-offsets_64.c:12, > from arch/x86/kernel/asm-offsets.c:4: > include/linux/page-flags.h:10:26: error: linux/bounds.h: No such file or directory Hmmm... It should not be cleaned.... -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions 2008-03-06 20:20 ` Christoph Lameter @ 2008-03-06 21:00 ` Sam Ravnborg 2008-03-06 21:49 ` Christoph Lameter 2008-03-06 22:43 ` Christoph Lameter 0 siblings, 2 replies; 15+ messages in thread From: Sam Ravnborg @ 2008-03-06 21:00 UTC (permalink / raw) To: Christoph Lameter Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Thu, Mar 06, 2008 at 12:20:17PM -0800, Christoph Lameter wrote: > On Wed, 5 Mar 2008, Andrew Morton wrote: > > > > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > > > +++ linux-2.6/include/linux/bounds.h 2008-02-29 19:29:50.000000000 -0800 > > > @@ -0,0 +1,10 @@ > > > +#ifndef __LINUX_BOUNDS_H__ > > > +#define __LINUX_BOUNDS_H__ > > > +/* > > > + * DO NOT MODIFY. > > > + * > > > + * This file was generated by Kbuild > > > + * > > > + */ > > > + > > > +#endif > > > > a) I'm not sure that we should check in a file which is supposed to get > > overwritten at build-time. > > Well but it needs to be present in order to generate it. If the > definitions are not present then the new values of the constants cannot be > determined. A .config determined the value of these. Ehh - the file above is empty. I do not understand why we need an empty file to be present??? > > > b) Is this `make O=' friendly? > > These are just symbol definitions. Should be handled the > same way as arch/x86/*/asm-offsets.* stuff > > > c) > > make mrproper > > make allmodconfig > > make > > > > In file included from include/linux/mm.h:192, > > from include/linux/suspend.h:11, > > from arch/x86/kernel/asm-offsets_64.c:12, > > from arch/x86/kernel/asm-offsets.c:4: > > include/linux/page-flags.h:10:26: error: linux/bounds.h: No such file or directory > So asm-offset need bounds.h. We better tell make so - updated patch below. Sam diff --git a/Kbuild b/Kbuild index 1570d24..2a52057 100644 --- a/Kbuild +++ b/Kbuild @@ -1,19 +1,54 @@ # # Kbuild for top-level directory of the kernel # This file takes care of the following: -# 1) Generate asm-offsets.h -# 2) Check for missing system calls +# 1) Generate bounds.h +# 2) Generate asm-offsets.h (may need bounds.h) +# 3) Check for missing system calls ##### -# 1) Generate asm-offsets.h +# 1) Generate bounds.h + +bounds-file := include/linux/bounds.h + +always := $(bounds-file) +targets := $(bounds-file) kernel/bounds.s + +quiet_cmd_bounds = GEN $@ +define cmd_bounds + (set -e; \ + echo "#ifndef __LINUX_BOUNDS_H__"; \ + echo "#define __LINUX_BOUNDS_H__"; \ + echo "/*"; \ + echo " * DO NOT MODIFY."; \ + echo " *"; \ + echo " * This file was generated by Kbuild"; \ + echo " *"; \ + echo " */"; \ + echo ""; \ + sed -ne $(sed-y) $<; \ + echo ""; \ + echo "#endif" ) > $@ +endef + +# We use internal kbuild rules to avoid the "is up to date" message from make +kernel/bounds.s: kernel/bounds.c FORCE + $(Q)mkdir -p $(dir $@) + $(call if_changed_dep,cc_s_c) + +$(obj)/$(bounds-file): kernel/bounds.s Kbuild + $(Q)mkdir -p $(dir $@) + $(call cmd,bounds) + +##### +# 2) Generate asm-offsets.h # offsets-file := include/asm-$(SRCARCH)/asm-offsets.h -always := $(offsets-file) -targets := $(offsets-file) +always += $(offsets-file) +targets += $(offsets-file) targets += arch/$(SRCARCH)/kernel/asm-offsets.s -clean-files := $(addprefix $(objtree)/,$(targets)) + # Default sed regexp - multiline due to syntax constraints define sed-y @@ -40,7 +75,8 @@ define cmd_offsets endef # We use internal kbuild rules to avoid the "is up to date" message from make -arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c FORCE +arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ + $(obj)/$(bounds-file) FORCE $(Q)mkdir -p $(dir $@) $(call if_changed_dep,cc_s_c) @@ -49,7 +85,7 @@ $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild $(call cmd,offsets) ##### -# 2) Check for missing system calls +# 3) Check for missing system calls # quiet_cmd_syscalls = CALL $< @@ -58,3 +94,7 @@ quiet_cmd_syscalls = CALL $< PHONY += missing-syscalls missing-syscalls: scripts/checksyscalls.sh FORCE $(call cmd,syscalls) + +# Delete all targets during make clean +clean-files := $(addprefix $(objtree)/,$(targets)) + -- 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> ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions 2008-03-06 21:00 ` Sam Ravnborg @ 2008-03-06 21:49 ` Christoph Lameter 2008-03-06 22:43 ` Christoph Lameter 1 sibling, 0 replies; 15+ messages in thread From: Christoph Lameter @ 2008-03-06 21:49 UTC (permalink / raw) To: Sam Ravnborg Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Thu, 6 Mar 2008, Sam Ravnborg wrote: > Ehh - the file above is empty. > I do not understand why we need an empty file to be present??? Its going to be populated in later patches of the patchset. > We better tell make so - updated patch below. I am very thankful for your help.... Will try that. -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions 2008-03-06 21:00 ` Sam Ravnborg 2008-03-06 21:49 ` Christoph Lameter @ 2008-03-06 22:43 ` Christoph Lameter 2008-03-06 22:55 ` Sam Ravnborg 1 sibling, 1 reply; 15+ messages in thread From: Christoph Lameter @ 2008-03-06 22:43 UTC (permalink / raw) To: Sam Ravnborg Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm Hmmm.. Even after the Sam's fixes: I still have the recursion probblem that include/linux/bounds.h needs to exist and provide some value for the constants in order to create kernel/bounds.c. And kernel/bounds.c is needed then to create bounds.s which creates bounds.h. Argh! -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions 2008-03-06 22:43 ` Christoph Lameter @ 2008-03-06 22:55 ` Sam Ravnborg 2008-03-06 23:02 ` Christoph Lameter 0 siblings, 1 reply; 15+ messages in thread From: Sam Ravnborg @ 2008-03-06 22:55 UTC (permalink / raw) To: Christoph Lameter Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Thu, Mar 06, 2008 at 02:43:53PM -0800, Christoph Lameter wrote: > Hmmm.. Even after the Sam's fixes: I still have the recursion probblem > that include/linux/bounds.h needs to exist and provide some value for > the constants in order to create kernel/bounds.c. And kernel/bounds.c is > needed then to create bounds.s which creates bounds.h. Argh! I could only come up with following hack. And too late to try more today. It your test proves that it is OK then: Signed-off-by: Sam Ravnborg <sam@ravnborg.org> (But I had preferred the recursive dependency to be gone...) Sam diff --git a/Kbuild b/Kbuild index 1570d24..37a270f 100644 --- a/Kbuild +++ b/Kbuild @@ -2,18 +2,21 @@ # Kbuild for top-level directory of the kernel # This file takes care of the following: # 1) Generate asm-offsets.h -# 2) Check for missing system calls +# 2) Generate bounds.h +# 3) Check for missing system calls ##### # 1) Generate asm-offsets.h # +# Note: We create a temporary empty bounds.h file to build asm-offsets.s offsets-file := include/asm-$(SRCARCH)/asm-offsets.h +bounds-file := include/linux/bounds.h -always := $(offsets-file) +always := $(bounds-file) $(offsets-file) targets := $(offsets-file) targets += arch/$(SRCARCH)/kernel/asm-offsets.s -clean-files := $(addprefix $(objtree)/,$(targets)) + # Default sed regexp - multiline due to syntax constraints define sed-y @@ -42,6 +45,7 @@ endef # We use internal kbuild rules to avoid the "is up to date" message from make arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c FORCE $(Q)mkdir -p $(dir $@) + $(Q)test -f $(bounds-file) || (mkdir -p $(dir $(bounds-file)) && touch $(bounds-file)) $(call if_changed_dep,cc_s_c) $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild @@ -49,7 +53,39 @@ $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild $(call cmd,offsets) ##### -# 2) Check for missing system calls +# 2) Generate bounds.h + +always += $(bounds-file) +targets += $(bounds-file) kernel/bounds.s + +quiet_cmd_bounds = GEN $@ +define cmd_bounds + (set -e; \ + echo "#ifndef __LINUX_BOUNDS_H__"; \ + echo "#define __LINUX_BOUNDS_H__"; \ + echo "/*"; \ + echo " * DO NOT MODIFY."; \ + echo " *"; \ + echo " * This file was generated by Kbuild"; \ + echo " *"; \ + echo " */"; \ + echo ""; \ + sed -ne $(sed-y) $<; \ + echo ""; \ + echo "#endif" ) > $@ +endef + +# We use internal kbuild rules to avoid the "is up to date" message from make +kernel/bounds.s: kernel/bounds.c $(obj)/$(offsets-file) FORCE + $(Q)mkdir -p $(dir $@) + $(call if_changed_dep,cc_s_c) + +$(obj)/$(bounds-file): kernel/bounds.s Kbuild + $(Q)mkdir -p $(dir $@) + $(call cmd,bounds) + +##### +# 3) Check for missing system calls # quiet_cmd_syscalls = CALL $< @@ -58,3 +94,7 @@ quiet_cmd_syscalls = CALL $< PHONY += missing-syscalls missing-syscalls: scripts/checksyscalls.sh FORCE $(call cmd,syscalls) + +# Delete all targets during make clean +clean-files := $(addprefix $(objtree)/,$(targets)) + -- 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> ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions 2008-03-06 22:55 ` Sam Ravnborg @ 2008-03-06 23:02 ` Christoph Lameter 0 siblings, 0 replies; 15+ messages in thread From: Christoph Lameter @ 2008-03-06 23:02 UTC (permalink / raw) To: Sam Ravnborg Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm On Thu, 6 Mar 2008, Sam Ravnborg wrote: > (But I had preferred the recursive dependency to be gone...) I suppose we could add an #ifndef NR_MAX_ZONES #define NR_MAX_ZONES 1 #endif somewheres. Not that elegant though. -- 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> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions [not found] ` <20080305223845.436523065@sgi.com> 2008-03-06 4:08 ` [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions Andrew Morton @ 2008-03-06 20:51 ` Sam Ravnborg 1 sibling, 0 replies; 15+ messages in thread From: Sam Ravnborg @ 2008-03-06 20:51 UTC (permalink / raw) To: Christoph Lameter Cc: Andrew Morton, ak, Mel Gorman, apw, KAMEZAWA Hiroyuki, KOSAKI Motohiro, Rik van Riel, linux-mm Hi Christoph Sorry for getting back to you so late. Too busy with day-time job atm. On Wed, Mar 05, 2008 at 02:38:17PM -0800, Christoph Lameter wrote: > The use of enums create constants that are not available to the preprocessor > when building the kernel (f.e. MAX_NR_ZONES). > > Arch code already has a way to export constants calculated to the > preprocessor through the asm-offsets.c file. Generate something > similar for the core kernel through kbuild. > > Cc: Sam Ravnborg <sam@ravnborg.org> > Signed-off-by: Christoph Lameter <clameter@sgi.com> > > --- > Kbuild | 31 +++++++++++++++++++++++++++++-- > include/linux/bounds.h | 10 ++++++++++ > kernel/bounds.c | 16 ++++++++++++++++ > 3 files changed, 55 insertions(+), 2 deletions(-) > > Index: linux-2.6/Kbuild > =================================================================== > --- linux-2.6.orig/Kbuild 2008-02-29 19:27:40.000000000 -0800 > +++ linux-2.6/Kbuild 2008-02-29 19:29:38.000000000 -0800 > @@ -9,9 +9,10 @@ > # > > offsets-file := include/asm-$(SRCARCH)/asm-offsets.h > +bounds := include/linux/bounds.h > > -always := $(offsets-file) > -targets := $(offsets-file) > +always := $(offsets-file) $(bounds) > +targets := $(offsets-file) $(bounds) > targets += arch/$(SRCARCH)/kernel/asm-offsets.s > clean-files := $(addprefix $(objtree)/,$(targets)) We build a bounds.s file later so it needs to be listed as we do with asm-offsets.s: targets += kernel/bounds.s > > @@ -39,6 +40,23 @@ define cmd_offsets > echo "#endif" ) > $@ > endef > > +quiet_cmd_bounds = GEN $@ > +define cmd_bounds > + (set -e; \ > + echo "#ifndef __LINUX_BOUNDS_H__"; \ > + echo "#define __LINUX_BOUNDS_H__"; \ > + echo "/*"; \ > + echo " * DO NOT MODIFY."; \ > + echo " *"; \ > + echo " * This file was generated by Kbuild"; \ > + echo " *"; \ > + echo " */"; \ > + echo ""; \ > + sed -ne $(sed-y) $<; \ > + echo ""; \ > + echo "#endif" ) > $@ > +endef > + > # We use internal kbuild rules to avoid the "is up to date" message from make > arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c FORCE > $(Q)mkdir -p $(dir $@) > @@ -48,6 +66,15 @@ $(obj)/$(offsets-file): arch/$(SRCARCH)/ > $(Q)mkdir -p $(dir $@) > $(call cmd,offsets) > > +# We use internal kbuild rules to avoid the "is up to date" message from make > +kernel/bounds.s: kernel/bounds.c FORCE > + $(Q)mkdir -p $(dir $@) > + $(call if_changed_dep,cc_s_c) OK > + > +$(obj)/$(bounds): kernel/bounds.s Kbuild > + $(Q)mkdir -p $(dir $@) > + $(call cmd,bounds) OK > + > ##### > # 2) Check for missing system calls > # > Index: linux-2.6/kernel/bounds.c > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ linux-2.6/kernel/bounds.c 2008-02-29 19:29:38.000000000 -0800 > @@ -0,0 +1,16 @@ > +/* > + * Generate definitions needed by the preprocessor. > + * This code generates raw asm output which is post-processed > + * to extract and format the required data. > + */ > + > +#include <linux/mm.h> > + > +#define DEFINE(sym, val) \ > + asm volatile("\n->" #sym " %0 " #val : : "i" (val)) > + > +#define BLANK() asm volatile("\n->" : : ) > + > +void foo(void) > +{ > +} > Index: linux-2.6/include/linux/bounds.h > =================================================================== > --- /dev/null 1970-01-01 00:00:00.000000000 +0000 > +++ linux-2.6/include/linux/bounds.h 2008-02-29 19:29:50.000000000 -0800 > @@ -0,0 +1,10 @@ NO NO - we do not add files to the tree we overwrite. The kbuild stuff will take care that the file is generated before we start the kernel build. I have fixed it up and rearranged stuff to follow the style of the Kbuild file. diff --git a/Kbuild b/Kbuild index 1570d24..0198e3f 100644 --- a/Kbuild +++ b/Kbuild @@ -2,7 +2,8 @@ # Kbuild for top-level directory of the kernel # This file takes care of the following: # 1) Generate asm-offsets.h -# 2) Check for missing system calls +# 2) Generate bounds.h +# 3) Check for missing system calls ##### # 1) Generate asm-offsets.h @@ -13,7 +14,7 @@ offsets-file := include/asm-$(SRCARCH)/asm-offsets.h always := $(offsets-file) targets := $(offsets-file) targets += arch/$(SRCARCH)/kernel/asm-offsets.s -clean-files := $(addprefix $(objtree)/,$(targets)) + # Default sed regexp - multiline due to syntax constraints define sed-y @@ -49,7 +50,41 @@ $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild $(call cmd,offsets) ##### -# 2) Check for missing system calls +# 2) Generate bounds.h + +bounds-file := include/linux/bounds.h + +always += $(bounds-file) +targets += $(bounds-file) kernel/bounds.s + +quiet_cmd_bounds = GEN $@ +define cmd_bounds + (set -e; \ + echo "#ifndef __LINUX_BOUNDS_H__"; \ + echo "#define __LINUX_BOUNDS_H__"; \ + echo "/*"; \ + echo " * DO NOT MODIFY."; \ + echo " *"; \ + echo " * This file was generated by Kbuild"; \ + echo " *"; \ + echo " */"; \ + echo ""; \ + sed -ne $(sed-y) $<; \ + echo ""; \ + echo "#endif" ) > $@ +endef + +# We use internal kbuild rules to avoid the "is up to date" message from make +kernel/bounds.s: kernel/bounds.c FORCE + $(Q)mkdir -p $(dir $@) + $(call if_changed_dep,cc_s_c) + +$(obj)/$(bounds-file): kernel/bounds.s Kbuild + $(Q)mkdir -p $(dir $@) + $(call cmd,bounds) + +##### +# 3) Check for missing system calls # quiet_cmd_syscalls = CALL $< @@ -58,3 +93,7 @@ quiet_cmd_syscalls = CALL $< PHONY += missing-syscalls missing-syscalls: scripts/checksyscalls.sh FORCE $(call cmd,syscalls) + +# Delete all targets during make clean +clean-files := $(addprefix $(objtree)/,$(targets)) + -- 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> ^ permalink raw reply related [flat|nested] 15+ messages in thread
end of thread, other threads:[~2008-03-07 4:16 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20080305223815.574326323@sgi.com>
[not found] ` <20080305223846.780991734@sgi.com>
2008-03-06 2:40 ` [patch 8/8] Pageflags: Eliminate PG_xxx aliases Nick Piggin
2008-03-06 22:51 ` Christoph Lameter
2008-03-07 0:48 ` Nick Piggin
2008-03-07 1:38 ` Christoph Lameter
2008-03-07 2:20 ` Nick Piggin
2008-03-07 3:53 ` Christoph Lameter
2008-03-07 4:16 ` Nick Piggin
[not found] ` <20080305223845.436523065@sgi.com>
2008-03-06 4:08 ` [patch 2/8] Kbuild: Create a way to create preprocessor constants from C expressions Andrew Morton
2008-03-06 20:20 ` Christoph Lameter
2008-03-06 21:00 ` Sam Ravnborg
2008-03-06 21:49 ` Christoph Lameter
2008-03-06 22:43 ` Christoph Lameter
2008-03-06 22:55 ` Sam Ravnborg
2008-03-06 23:02 ` Christoph Lameter
2008-03-06 20:51 ` Sam Ravnborg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).