examples/msr/init.sh
author Florian Pose <fp@igh-essen.com>
Wed, 18 Jun 2008 11:16:30 +0000
changeset 1025 ae175095f09a
parent 451 cd6b819c2351
permissions -rwxr-xr-x
Output attachment failure messages only when debugging.
#!/bin/sh

#------------------------------------------------------------------------------
#
#  MSR Init Script
#
#  $Id$
#
#------------------------------------------------------------------------------

### BEGIN INIT INFO
# Provides:          msr
# Required-Start:    $local_fs $syslog $network
# Should-Start:      $time ntp ethercat
# Required-Stop:     $local_fs $syslog $network
# Should-Stop:       $time ntp ethercat
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: MSR module
# Description:
### END INIT INFO

#------------------------------------------------------------------------------

# <Customizing>

NAME="MSR EtherCAT sample"
BASE=/opt/etherlab
MSR_SERVER=$BASE/bin/msrserv.pl
MODULE=ec_msr_sample
RTAI_PATH=/usr/realtime
RTAI_MODULES="hal up" # sem math
DEVICE=msr
DEVMASK=664
GROUP=users

# </Customizing>

#------------------------------------------------------------------------------

. /etc/rc.status
rc_reset

#------------------------------------------------------------------------------

case "$1" in
    start)
	echo -n Starting $NAME" "

	# Insert RTAI modules
	for mod in $RTAI_MODULES; do
	    if ! lsmod | grep -q "^rtai_$mod"; then
		if ! insmod $RTAI_PATH/modules/rtai_$mod.ko; then
		    /bin/false
		    rc_status -v
		    rc_exit
		fi
	    fi
	done

	# Insert realtime module
	if ! modprobe $MODULE; then
	    /bin/false
	    rc_status -v
	    rc_exit
	fi

	#sleep 2

	# Create MSR device
	MAJOR=`cat /proc/devices | awk "\\$2==\"$DEVICE\" {print \\$1}"`
	rm -f /dev/${DEVICE}
	mknod /dev/${DEVICE} c $MAJOR 0
	chgrp $GROUP /dev/${DEVICE}
	chmod $DEVMASK /dev/${DEVICE}

	#sleep 1

	# Start MSR-Server
	startproc $MSR_SERVER 1>/dev/null 2>/dev/null
	rc_status -v
	;;

    stop)
	echo -n Shutting down $NAME" "

	if ! killproc $MSR_SERVER; then
	    /bin/false
	    rc_status -v
	    rc_exit
	fi

	if ! /sbin/rmmod $MODULE; then
	    /bin/false
	    rc_status -v
	    rc_exit
	fi

	# Remove stale nodes
	rm -f /dev/${DEVICE} /dev/${DEVICE}0

	rc_status -v
	;;

    restart)
	$0 stop || exit 1
	sleep 1
	$0 start

	rc_status
	;;

    status)
	echo -n "Checking for MSR module: "
	/sbin/lsmod | grep -q "^$MODULE"
	rc_status -v

	echo -n "Checking for MSR server: "
	checkproc $MSR_SERVER
	rc_status -v
	;;

    *)
	echo "Usage: $0 {start|stop|status|restart}"
	exit 1
	;;
esac

rc_exit