Home | History | Annotate | Download | only in SUNWadpu320
      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