The patch titled kbuild: create a way to create preprocessor constants from C expressions has been removed from the -mm tree. Its filename was kbuild-create-a-way-to-create-preprocessor-constants-from-c-expressions.patch This patch was dropped because it was merged into mainline or a subsystem tree The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: kbuild: create a way to create preprocessor constants from C expressions From: Christoph Lameter <clameter@xxxxxxx> 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. Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx> Signed-off-by: Christoph Lameter <clameter@xxxxxxx> Cc: Andy Whitcroft <apw@xxxxxxxxxxxx> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> Cc: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> Cc: Rik van Riel <riel@xxxxxxxxxx> Cc: Mel Gorman <mel@xxxxxxxxx> Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- Kbuild | 56 +++++++++++++++++++++++++++++++++++++++------- kernel/bounds.c | 19 +++++++++++++++ 2 files changed, 67 insertions(+), 8 deletions(-) diff -puN Kbuild~kbuild-create-a-way-to-create-preprocessor-constants-from-c-expressions Kbuild --- a/Kbuild~kbuild-create-a-way-to-create-preprocessor-constants-from-c-expressions +++ a/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)/ $(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)) + diff -puN /dev/null kernel/bounds.c --- /dev/null +++ a/kernel/bounds.c @@ -0,0 +1,19 @@ +/* + * Generate definitions needed by the preprocessor. + * This code generates raw asm output which is post-processed + * to extract and format the required data. + */ + +#define __GENERATING_BOUNDS_H +/* Include headers that define the enum constants of interest */ + +#define DEFINE(sym, val) \ + asm volatile("\n->" #sym " %0 " #val : : "i" (val)) + +#define BLANK() asm volatile("\n->" : : ) + +void foo(void) +{ + /* The enum constants to put into include/linux/bounds.h */ + /* End of constants */ +} _ Patches currently in -mm which might be from clameter@xxxxxxx are origin.patch git-unionfs.patch git-pekka.patch page-allcoator-smarter-retry-of-costly-order-allocations.patch page-allocator-explicitly-retry-hugepage-allocations.patch ipc-add-definitions-of-ushort_max-and-others.patch mm-add-nr_writeback_temp-counter.patch remove-div_long_long_rem.patch slab-add-a-flag-to-prevent-debug_free-checks-on-a-kmem_cache.patch add-kbuildh-that-contains-common-definitions-for-kbuild-users.patch x86-use-kbuildh.patch mips-use-kbuildh-instead-of-macros-in-asm-offsetsc.patch alpha-use-kbuildh-instead-of-macros-in-asm-offsetsc.patch ia64-use-kbuildh-macros-instead-of-defining-macros-in-asm-offsetsc.patch arm-use-kbuildh-instead-of-macros-in-asm-offsetsc.patch xtensa-use-kbuildh-macros-instead-of-defining-them-in-asm-offsetsc.patch sparc-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch avr32-use-kbuildh-macros-instead-of-defining-macros-in-asm-offsetsc.patch blackfin-use-kbuildh-instead-of-defining-macros-in-asm-macrosc.patch frv-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch h8300-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch m68k-m68kmmu-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch mn10300-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch parisc-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch ppc-powerpc-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch s390-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch s390-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc-update.patch sh-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch v850-use-kbuildh-instead-of-defining-macros-in-asm-offsetsc.patch reiser4.patch reiser4-portion-of-zero_user-cleanup-patch.patch page-owner-tracking-leak-detector.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html