Annotation of coherent/f/etc/conf/bin/src/idenable, revision 1.1.1.1

1.1       root        1: # Shell version to provide a more friendly interface to the 'devadm' system
                      2: # to enable a device.
                      3: 
                      4: ##################### FUNCTION DEFINITIONS #######################
                      5: 
                      6: # Call with the $0 of the script as a parameter; this commands writes the
                      7: # name of the directory containing the script to standard output.
                      8: # Example:
                      9: #      conf_path $0
                     10: 
                     11: conf_path () {
                     12:        set `which $1 2>/dev/null` X
                     13:        if [ $# -ne 2 ]; then
                     14:                echo .          # Assume the current directory.
                     15:                return 1
                     16:        fi
                     17:        set `expr $1 : '\(.*\)/.*'` X
                     18:        if [ $# -ne 2 ]; then
                     19:                echo .          # Must be in the current directory.
                     20:        else
                     21:                echo $1
                     22:        fi
                     23:        return 0
                     24: }
                     25: 
                     26: # Report a usage message to standard output, with the name of the script
                     27: # passed as the argument to this function.
                     28: 
                     29: usage () {
                     30:        echo $1 ":" Enable device entries
                     31:        echo "usage:\t[-f] [file ...] [[-e file ...] [-d file ...]] ..."
                     32:        echo "\tBy default, enable the named devices, reporting conflicts"
                     33:        echo "\t-d specifies that subsequent device names are to be disabled"
                     34:        echo "\t-e specifies that subsequent device names are to be enabled"
                     35:        echo "\t-f specifies that conflicting devices be automatically disabled"
                     36: }
                     37: 
                     38: # Confirm whether a value is set to a yes
                     39: 
                     40: isyes () {
                     41:        [ $1 = y -o $1 = Y ]
                     42:        return $?
                     43: }
                     44: 
                     45: # Read the 'sdevice' parameters for a device into shell globals
                     46: 
                     47: read_sdevice () {
                     48:        grep ^$1 $CONF_DIR/sdevice 2>/dev/null 1>&2
                     49:        if [ $? -ne 0 ]; then
                     50:                echo There is no 'sdevice' entry for $1 1>&2
                     51:                return 1
                     52:        fi
                     53: 
                     54: #      set `grep ^$1 $CONF_DIR/mdevice 2>/dev/null`
                     55: #      shift
                     56: #      MDEV_FUNCS=$1
                     57: #      MDEV_FLAGS=$2
                     58: #      MDEV_PREFIX=$3
                     59: #      MDEV_BLOCK_MAJ=$4
                     60: #      MDEV_CHAR_MAJ=$5
                     61: #      MDEV_MIN_MIN=$6
                     62: #      MDEV_MIN_MAX=$7
                     63: #      MDEV_DMA_CHAN=$8
                     64: #      MDEV_CPU_ID=$9
                     65:        
                     66:        set `grep ^$1 $CONF_DIR/sdevice 2>/dev/null`
                     67:        shift
                     68:        SDEV_CONFIG=$1
                     69:        SDEV_UNIT=$2
                     70:        SDEV_INT_PRI=$3
                     71:        SDEV_INT_TYPE=$4
                     72:        SDEV_INT_VECT=$5
                     73:        SDEV_IOA_LO=$6
                     74:        SDEV_IOA_HI=$7
                     75:        SDEV_CMA_LO=$8
                     76:        SDEV_CMA_HI=$9
                     77: 
                     78:        OLD_SDEV_CONFIG=$SDEV_CONFIG
                     79:        shift
                     80:        OLD_SDEV_INFO="$*"
                     81:        return 0
                     82: }
                     83: 
                     84: # Update the value of an sdevice entry parameter
                     85: 
                     86: set_enable_sdevice () {
                     87:        if isyes $OLD_SDEV_CONFIG; then
                     88:                if isyes $2; then
                     89:                        return 0        # No effect
                     90:                fi
                     91:                # Disabling an entry is always legal...
                     92:        elif isyes $2; then
                     93:                # Verify that there is nothing conflicting with us
                     94:                BAD="`$HOME_DIR/devadm -I $CONF_DIR \
                     95:                         -S"$1 $2 $OLD_SDEV_INFO" -r`"
                     96:                if [ -n "$BAD" ]; then
                     97:                        if [ -n "$FORCE_ENABLE" ]; then
                     98:                                $HOME_DIR/idenable -d $BAD
                     99:                                BAD="`$HOME_DIR/devadm -I $CONF_DIR \
                    100:                                        -S"$1 $2 $OLD_SDEV_INFO" -r`"
                    101:                        fi
                    102:                        if [ -n "$BAD" ]; then
                    103:                                echo Enabling $1 will conflict with $BAD
                    104:                                return 1
                    105:                        fi
                    106:                fi
                    107:        else
                    108:                return 0                # No effect
                    109:        fi
                    110: 
                    111:        $HOME_DIR/devadm -I $CONF_DIR -S"$1 $2 $OLD_SDEV_INFO" -W
                    112: }
                    113: 
                    114: HOME_DIR=`conf_path $0`
                    115: CONF_DIR=$HOME_DIR/..
                    116: 
                    117: if [ $# -lt 1 ]; then
                    118:        usage $0 1>&2
                    119:        exit 100
                    120: fi
                    121: 
                    122: ENABLE=y
                    123: 
                    124: while [ $# -gt 0 ]; do
                    125:        ARG=$1; shift
                    126:        case $ARG in
                    127:        -d)     ENABLE=n
                    128:                ;;
                    129: 
                    130:        -e)     ENABLE=y
                    131:                ;;
                    132: 
                    133:        -f)     FORCE_ENABLE=1
                    134:                ;;
                    135: 
                    136:        *)      read_sdevice $ARG || exit 1
                    137:                set_enable_sdevice $ARG $ENABLE
                    138:                ;;
                    139:        esac
                    140: done
                    141: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.