1 #!/sbin/sh 2 # 3 # Copyright 2006 Sun Microsystems, Inc. All rights reserved. 4 # Use is subject to license terms. 5 6 # ident "%Z%%M% %I% %E% SMI" 7 8 # Function: check_add_drv() 9 # 10 # This function will check if the module has an entry in etc/name_to_major 11 # If not simply calls add_drv with the arguments given. If there is 12 # such an entry in name_to_major file, it adds entries in driver_aliases 13 # driver_classes and minor_perm if necessary. 14 # The syntax of this function is the same as add_drv. 15 16 check_add_drv() 17 { 18 if [ "$BASEDIR" = "" ] 19 then 20 BASEDIR=/ 21 fi 22 alias="" 23 class="" 24 ADD_ALIAS=0 25 ADD_CLASS=0 26 ADD_MINOR=0 27 OPTIND=1 28 IS_NET_DRIVER=0 29 30 cmd="add_drv" 31 32 NO_CMD= 33 while getopts i:b:m:c:N opt 34 do 35 case $opt in 36 N ) NO_CMD=1;; 37 i ) ADD_ALIAS=1 38 alias=$OPTARG 39 cmd=$cmd" -i '$alias'" 40 ;; 41 m ) ADD_MINOR=1 42 minor=$OPTARG 43 cmd=$cmd" -m '$minor'" 44 ;; 45 c) ADD_CLASS=1 46 class=$OPTARG 47 cmd=$cmd" -c $class" 48 ;; 49 b) BASEDIR=$OPTARG 50 cmd=$cmd" -b $BASEDIR" 51 ;; 52 \?) echo "check_add_drv can not handle this option" 53 return 54 ;; 55 esac 56 done 57 shift `/usr/bin/expr $OPTIND - 1` 58 59 drvname=$1 60 61 cmd=$cmd" "$drvname 62 63 drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'` 64 65 /usr/bin/grep "^$drvname[ ]" $BASEDIR/etc/name_to_major > /dev/null 2>&1 66 67 if [ "$NO_CMD" = "" -a $? -ne 0 ] 68 then 69 eval $cmd 70 else 71 # entry already in name_to_major, add alias, class, minorperm 72 # if necessary 73 if [ $ADD_ALIAS = 1 ] 74 then 75 for i in $alias 76 do 77 /usr/bin/egrep "^$drvname[ ]+$i" $BASEDIR/etc/driver_aliases>/dev/null 2>&1 78 if [ $? -ne 0 ] 79 then 80 echo "$drvname $i" >> $BASEDIR/etc/driver_aliases 81 fi 82 done 83 fi 84 85 if [ $ADD_CLASS = 1 ] 86 then 87 /usr/bin/egrep "^$drvname[ ]+$class( | |$)" $BASEDIR/etc/driver_classes > /dev/null 2>&1 88 if [ $? -ne 0 ] 89 then 90 echo "$drvname\t$class" >> $BASEDIR/etc/driver_classes 91 fi 92 fi 93 94 if [ $ADD_MINOR = 1 ] 95 then 96 /usr/bin/grep "^$drvname:" $BASEDIR/etc/minor_perm > /dev/null 2>&1 97 if [ $? -ne 0 ] 98 then 99 minorentry="$drvname:$minor" 100 echo $minorentry >> $BASEDIR/etc/minor_perm 101 fi 102 fi 103 104 fi 105 106 107 } 108 109 110 check_add_drv -i '"pci9005,8000" "pci9005,800f.9005.5f" "pci9005,8010" "pci9005,8011" "pci9005,8012" "pci9005,8014" "pci9005,8015" "pci9005,8016" "pci9005,8017" "pci9005,801d" "pci9005,801e" "pci9005,801f" "pci9005,808f"' -b "$BASEDIR" -c scsi \ 111 -m 'adpu320ctl 0666 root root' adpu320 112