Signed-off-by: Matt Helsley <matthltc@xxxxxxxxxx> --- cr.h | 92 +++++++++++++++++++++++++++++++++++++++++++------ rewrite-cr-header.sh | 64 ++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+), 12 deletions(-) create mode 100755 rewrite-cr-header.sh diff --git a/cr.h b/cr.h index d89e113..f24b7b0 100644 --- a/cr.h +++ b/cr.h @@ -1,27 +1,95 @@ -#if __i386__ +/* AUTOMATICALLY GENERATED by rewrite-cr-header.sh */ + +#define _LINUX_CHECKPOINT_H_ +/* + * Generic checkpoint-restart + * + * Copyright (C) 2008-2009 Oren Laadan + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of the Linux + * distribution for more details. + */ + +#define CHECKPOINT_VERSION 1 + +/* checkpoint user flags */ +#define CHECKPOINT_SUBTREE 0x1 + +/* restart user flags */ +#define RESTART_TASKSELF 0x1 +#define RESTART_FROZEN 0x2 + + + + + + + + + + -#ifndef __NR_checkpoint -#define __NR_checkpoint 335 -#endif -#ifndef __NR_restart -#define __NR_restart 336 -#endif -#elif __s390x__ + + + + + + + + + + + + + + + +/* alpha unsupported. */ +/* arm unsupported. */ +/* avr32 unsupported. */ +/* blackfin unsupported. */ +/* cris unsupported. */ +/* cris unsupported. */ +/* cris unsupported. */ +/* frv unsupported. */ +/* h8300 unsupported. */ +/* ia64 unsupported. */ +/* m32r unsupported. */ +/* m68k unsupported. */ +/* microblaze unsupported. */ +/* mips unsupported. */ +/* mn10300 unsupported. */ +/* parisc unsupported. */ +/* powerpc unsupported. */ +#if __s390x__ #ifndef __NR_checkpoint #define __NR_checkpoint 332 #endif + #ifndef __NR_restart -#define __NR_restart 333 +#define __NR_restart 333 #endif -#elif __powerpc__ +/* sh unsupported. */ +/* sh unsupported. */ +/* sh unsupported. */ +/* sparc unsupported. */ +#elif __i386__ #ifndef __NR_checkpoint -#define __NR_checkpoint 322 +#define __NR_checkpoint 338 #endif + #ifndef __NR_restart -#define __NR_restart 323 +#define __NR_restart 339 #endif + +/* x86_64 unsupported. */ +/* x86_64 unsupported. */ +/* xtensa unsupported. */ +#else +#error "Architecture does not have definitons for __NR_(checkpoint|restart)" #endif diff --git a/rewrite-cr-header.sh b/rewrite-cr-header.sh new file mode 100755 index 0000000..22f92c7 --- /dev/null +++ b/rewrite-cr-header.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# +# Rewrite the contents of cr.h +# + +KERNELSRC=../oren + +################################################################################ + +[ -z "${KERNELSRC}" ] && exit -1 +mv cr.h cr.h.bak || exit -1 + +( +COND='#if' +set -e +echo '/* AUTOMATICALLY GENERATED by rewrite-cr-header.sh */' + +# +# Include non-__KERNEL__ sections of include/linux/checkpoint.h using +# cpp to expand only the directives of the kernel header. +# +# The first 6 lines of cpp output write some trashy #define/#undef lines +# we don't want. Would it be better to throw everything away until we see +# "#define _LINUX_CHECKPOINT_H_" ?? +# +cpp -CC -P -U__KERNEL__ -undef -nostdinc -fdirectives-only ${KERNELSRC}/include/linux/checkpoint.h | tail -n '+6' + +find ${KERNELSRC}/arch -name 'unistd*.h' -print | sort | \ +while read UNISTDH ; do + REGEX='[[:space:]]*#[[:space:]]*define[[:space:]]+__NR_(checkpoint|restart)[[:space:]]+[[:digit:]]+' + + [ -z "${UNISTDH}" ] && continue + KARCH=$(echo "${UNISTDH}" | sed -e 's|.*/arch/\([^/]\+\)/.*|\1|') + BITNESS=$(basename "${UNISTDH}" | sed -e 's/unistd_*\([12346]\+\)\.h/\1/') + + # Map KARCH to something suitable for CPP e.g. __i386__ + case "${KARCH}" in + x86) if [ "${BITNESS}" == "32" ]; then + CPPARCH=i386 + else + CPPARCH=x86_64 + fi + ;; + s390*) CPPARCH=s390x ;; + *) CPPARCH="${KARCH}" ;; + esac + + grep -q -E "${REGEX}" ${UNISTDH} || { + echo '/* '"${CPPARCH}"' unsupported. */' + continue + } + + echo -e "${COND} __${CPPARCH}__\\n" + grep -E "${REGEX}" ${UNISTDH} | \ + sed -e 's/^[[:space:]]*#define[[:space:]]\+__NR_\([^[:space:]]\+\)[[:space:]]\+\([^[:space:]]\+\).*$/#ifndef __NR_\1\n#define __NR_\1 \2\n#endif\n/' + COND='#elif' +done +echo -e '#else\n#error "Architecture does not have definitons for __NR_(checkpoint|restart)"\n#endif' +) > cr.h || { + mv -f cr.h.bak cr.h + exit -1 +} + +rm -f cr.h.bak -- 1.5.6.3 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers