mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	 a0a7e453b5
			
		
	
	
		a0a7e453b5
		
	
	
	
	
		
			
			Displaying "PREEMPT" on kernel headers when CONFIG_PREEMPT_DYNAMIC=y can be misleading for anybody involved in remote debugging because it is then not guaranteed that there is an actual preemption behaviour. It depends on default Kconfig or boot defined choices. Therefore, tell about PREEMPT_DYNAMIC on static kernel headers and leave the search for the actual preemption behaviour to browsing dmesg. Reviewed-by: Valentin Schneider <valentin.schneider@arm.com> Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20220217111240.GA742892@lothringen
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| # SPDX-License-Identifier: GPL-2.0
 | |
| 
 | |
| TARGET=$1
 | |
| ARCH=$2
 | |
| SMP=$3
 | |
| PREEMPT=$4
 | |
| PREEMPT_DYNAMIC=$5
 | |
| PREEMPT_RT=$6
 | |
| CC_VERSION="$7"
 | |
| LD=$8
 | |
| 
 | |
| # Do not expand names
 | |
| set -f
 | |
| 
 | |
| # Fix the language to get consistent output
 | |
| LC_ALL=C
 | |
| export LC_ALL
 | |
| 
 | |
| if [ -z "$KBUILD_BUILD_VERSION" ]; then
 | |
| 	VERSION=$(cat .version 2>/dev/null || echo 1)
 | |
| else
 | |
| 	VERSION=$KBUILD_BUILD_VERSION
 | |
| fi
 | |
| 
 | |
| if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
 | |
| 	TIMESTAMP=`date`
 | |
| else
 | |
| 	TIMESTAMP=$KBUILD_BUILD_TIMESTAMP
 | |
| fi
 | |
| if test -z "$KBUILD_BUILD_USER"; then
 | |
| 	LINUX_COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
 | |
| else
 | |
| 	LINUX_COMPILE_BY=$KBUILD_BUILD_USER
 | |
| fi
 | |
| if test -z "$KBUILD_BUILD_HOST"; then
 | |
| 	LINUX_COMPILE_HOST=`uname -n`
 | |
| else
 | |
| 	LINUX_COMPILE_HOST=$KBUILD_BUILD_HOST
 | |
| fi
 | |
| 
 | |
| UTS_VERSION="#$VERSION"
 | |
| CONFIG_FLAGS=""
 | |
| if [ -n "$SMP" ] ; then CONFIG_FLAGS="SMP"; fi
 | |
| 
 | |
| if [ -n "$PREEMPT_RT" ] ; then
 | |
| 	CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT_RT"
 | |
| elif [ -n "$PREEMPT_DYNAMIC" ] ; then
 | |
| 	CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT_DYNAMIC"
 | |
| elif [ -n "$PREEMPT" ] ; then
 | |
| 	CONFIG_FLAGS="$CONFIG_FLAGS PREEMPT"
 | |
| fi
 | |
| 
 | |
| # Truncate to maximum length
 | |
| UTS_LEN=64
 | |
| UTS_VERSION="$(echo $UTS_VERSION $CONFIG_FLAGS $TIMESTAMP | cut -b -$UTS_LEN)"
 | |
| 
 | |
| # Generate a temporary compile.h
 | |
| 
 | |
| { echo /\* This file is auto generated, version $VERSION \*/
 | |
|   if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
 | |
| 
 | |
|   echo \#define UTS_MACHINE \"$ARCH\"
 | |
| 
 | |
|   echo \#define UTS_VERSION \"$UTS_VERSION\"
 | |
| 
 | |
|   printf '#define LINUX_COMPILE_BY "%s"\n' "$LINUX_COMPILE_BY"
 | |
|   echo \#define LINUX_COMPILE_HOST \"$LINUX_COMPILE_HOST\"
 | |
| 
 | |
|   LD_VERSION=$($LD -v | head -n1 | sed 's/(compatible with [^)]*)//' \
 | |
| 		      | sed 's/[[:space:]]*$//')
 | |
|   printf '#define LINUX_COMPILER "%s"\n' "$CC_VERSION, $LD_VERSION"
 | |
| } > .tmpcompile
 | |
| 
 | |
| # Only replace the real compile.h if the new one is different,
 | |
| # in order to preserve the timestamp and avoid unnecessary
 | |
| # recompilations.
 | |
| # We don't consider the file changed if only the date/time changed,
 | |
| # unless KBUILD_BUILD_TIMESTAMP was explicitly set (e.g. for
 | |
| # reproducible builds with that value referring to a commit timestamp).
 | |
| # A kernel config change will increase the generation number, thus
 | |
| # causing compile.h to be updated (including date/time) due to the
 | |
| # changed comment in the
 | |
| # first line.
 | |
| 
 | |
| if [ -z "$KBUILD_BUILD_TIMESTAMP" ]; then
 | |
|    IGNORE_PATTERN="UTS_VERSION"
 | |
| else
 | |
|    IGNORE_PATTERN="NOT_A_PATTERN_TO_BE_MATCHED"
 | |
| fi
 | |
| 
 | |
| if [ -r $TARGET ] && \
 | |
|       grep -v $IGNORE_PATTERN $TARGET > .tmpver.1 && \
 | |
|       grep -v $IGNORE_PATTERN .tmpcompile > .tmpver.2 && \
 | |
|       cmp -s .tmpver.1 .tmpver.2; then
 | |
|    rm -f .tmpcompile
 | |
| else
 | |
|    echo "  UPD     $TARGET"
 | |
|    mv -f .tmpcompile $TARGET
 | |
| fi
 | |
| rm -f .tmpver.1 .tmpver.2
 |