The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/scripts/gfp-translate

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #!/bin/bash
    2 # Translate the bits making up a GFP mask
    3 # (c) 2009, Mel Gorman <mel@csn.ul.ie>
    4 # Licensed under the terms of the GNU GPL License version 2
    5 SOURCE=
    6 GFPMASK=none
    7 
    8 # Helper function to report failures and exit
    9 die() {
   10         echo ERROR: $@
   11         if [ "$TMPFILE" != "" ]; then
   12                 rm -f $TMPFILE
   13         fi
   14         exit -1
   15 }
   16 
   17 usage() {
   18         echo "usage: gfp-translate [-h] [ --source DIRECTORY ] gfpmask"
   19         exit 0
   20 }
   21 
   22 # Parse command-line arguments
   23 while [ $# -gt 0 ]; do
   24         case $1 in
   25                 --source)
   26                         SOURCE=$2
   27                         shift 2
   28                         ;;
   29                 -h)
   30                         usage
   31                         ;;
   32                 --help)
   33                         usage
   34                         ;;
   35                 *)
   36                         GFPMASK=$1
   37                         shift
   38                         ;;
   39         esac
   40 done
   41 
   42 # Guess the kernel source directory if it's not set. Preference is in order of
   43 # o current directory
   44 # o /usr/src/linux
   45 if [ "$SOURCE" = "" ]; then
   46         if [ -r "/usr/src/linux/Makefile" ]; then
   47                 SOURCE=/usr/src/linux
   48         fi
   49         if [ -r "`pwd`/Makefile" ]; then
   50                 SOURCE=`pwd`
   51         fi
   52 fi
   53 
   54 # Confirm that a source directory exists
   55 if [ ! -r "$SOURCE/Makefile" ]; then
   56         die "Could not locate kernel source directory or it is invalid"
   57 fi
   58 
   59 # Confirm that a GFP mask has been specified
   60 if [ "$GFPMASK" = "none" ]; then
   61         usage
   62 fi
   63 
   64 # Extract GFP flags from the kernel source
   65 TMPFILE=`mktemp -t gfptranslate-XXXXXX` || exit 1
   66 grep -q ___GFP $SOURCE/include/linux/gfp.h
   67 if [ $? -eq 0 ]; then
   68         grep "^#define ___GFP" $SOURCE/include/linux/gfp.h | sed -e 's/u$//' | grep -v GFP_BITS > $TMPFILE
   69 else
   70         grep "^#define __GFP" $SOURCE/include/linux/gfp.h | sed -e 's/(__force gfp_t)//' | sed -e 's/u)/)/' | grep -v GFP_BITS | sed -e 's/)\//) \//' > $TMPFILE
   71 fi
   72 
   73 # Parse the flags
   74 IFS="
   75 "
   76 echo Source: $SOURCE
   77 echo Parsing: $GFPMASK
   78 for LINE in `cat $TMPFILE`; do
   79         MASK=`echo $LINE | awk '{print $3}'`
   80         if [ $(($GFPMASK&$MASK)) -ne 0 ]; then
   81                 echo $LINE
   82         fi
   83 done
   84 
   85 rm -f $TMPFILE
   86 exit 0

Cache object: 04ab68a93370d328ee51caafde1163dc


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.