~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/nsdeps

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/sh
  2 # SPDX-License-Identifier: GPL-2.0
  3 # Linux kernel symbol namespace import generator
  4 #
  5 # This script requires a minimum spatch version.
  6 SPATCH_REQ_VERSION="1.0.4"
  7 
  8 DIR="$(dirname $(readlink -f $0))/.."
  9 SPATCH="`which ${SPATCH:=spatch}`"
 10 if [ ! -x "$SPATCH" ]; then
 11         echo 'spatch is part of the Coccinelle project and is available at http://coccinelle.lip6.fr/'
 12         exit 1
 13 fi
 14 
 15 SPATCH_VERSION=$($SPATCH --version | head -1 | awk '{print $3}')
 16 
 17 if ! { echo "$SPATCH_REQ_VERSION"; echo "$SPATCH_VERSION"; } | sort -CV ; then
 18         echo "spatch needs to be version $SPATCH_REQ_VERSION or higher"
 19         exit 1
 20 fi
 21 
 22 if [ "$KBUILD_EXTMOD" ]; then
 23         src_prefix=
 24 else
 25         src_prefix=$srctree/
 26 fi
 27 
 28 generate_deps_for_ns() {
 29         $SPATCH --very-quiet --in-place --sp-file \
 30                 $srctree/scripts/coccinelle/misc/add_namespace.cocci -D nsdeps -D ns=$1 $2
 31 }
 32 
 33 generate_deps() {
 34         local mod=${1%.ko:}
 35         shift
 36         local namespaces="$*"
 37         local mod_source_files=$(sed "s|^\(.*\)\.o$|${src_prefix}\1.c|" $mod.mod)
 38 
 39         for ns in $namespaces; do
 40                 echo "Adding namespace $ns to module $mod.ko."
 41                 generate_deps_for_ns $ns "$mod_source_files"
 42                 # sort the imports
 43                 for source_file in $mod_source_files; do
 44                         sed '/MODULE_IMPORT_NS/Q' $source_file > ${source_file}.tmp
 45                         offset=$(wc -l ${source_file}.tmp | awk '{print $1;}')
 46                         cat $source_file | grep MODULE_IMPORT_NS | LC_ALL=C sort -u >> ${source_file}.tmp
 47                         tail -n +$((offset +1)) ${source_file} | grep -v MODULE_IMPORT_NS >> ${source_file}.tmp
 48                         if ! diff -q ${source_file} ${source_file}.tmp; then
 49                                 mv ${source_file}.tmp ${source_file}
 50                         else
 51                                 rm ${source_file}.tmp
 52                         fi
 53                 done
 54         done
 55 }
 56 
 57 while read line
 58 do
 59         generate_deps $line
 60 done < $MODULES_NSDEPS

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php