#!/bin/bash
#
# chkconfig: 345 90 36
# description: Starts and stops the afu device driver \
#              (by creating or removing a symbolic link).
#

#environment variables

KVER=`/bin/uname -r`
LNKPATH=/usr/local/afu
LNK=amifldrv_mod.o
DRVPATH=/usr/local/afu/driver/$KVER
DRV=amifldrv_mod.o
SRCPATH=/usr/local/afu/driver/src
RETVAL=0

#remove symbolic link to the AFU driver
rem_drv()
{
	if [ -e $LNKPATH/$LNK ]
    then
        rm -f $LNKPATH/$LNK
    fi
}

#add driver function to add imb driver
add_drv()
{
	if [ -e $LNKPATH/$LNK ]
    then
        rem_drv
    fi

	RETVAL=0
	ln -s $DRVPATH/$DRV $LNKPATH/$LNK
    RETVAL=$?
	return $RETVAL
}

#Check if the driver exists for the currently running kernel.
#If not, then build it for KVER.
build_drv()
(
    if [ "`find $DRVPATH -name "$DRV" 2> /dev/null`" = "" ]
    then
        echo "AFU driver does not exist for current kernel ($KVER). Will now build and install."
        cd $SRCPATH
        make clean
        make 
	mkdir $DRVPATH
	cp $DRV $DRVPATH
        RETVAL=$?
        make clean
    else
	    RETVAL=0
    fi
    return $RETVAL
)

case "$1" in
"start")
    build_drv
	RETVAL=$?
	if [ $RETVAL -ne 0 ]
	then
        exit $RETVAL
	fi
    add_drv
    RETVAL=$?
	;;
"stop")
    rem_drv
	;;
"build")
    build_drv
    RETVAL=$?
    ;;
*)
	echo afu: Unknown Argument $arg
	echo Usage: ism [start/stop]
	exit 1
	;;
esac

exit $RETVAL

