script/init.d/ethercat
changeset 1016 f831ef59426d
parent 942 dd13cdafc58c
child 1090 ee122eadda7f
equal deleted inserted replaced
1015:24efac66a647 1016:f831ef59426d
    47 # Description:
    47 # Description:
    48 ### END INIT INFO
    48 ### END INIT INFO
    49 
    49 
    50 #------------------------------------------------------------------------------
    50 #------------------------------------------------------------------------------
    51 
    51 
    52 CDEV='EtherCAT'
       
    53 MODPROBE=/sbin/modprobe
    52 MODPROBE=/sbin/modprobe
    54 RMMOD=/sbin/rmmod
    53 RMMOD=/sbin/rmmod
    55 MODINFO=/sbin/modinfo
    54 MODINFO=/sbin/modinfo
    56 
    55 
    57 #------------------------------------------------------------------------------
    56 #------------------------------------------------------------------------------
   171         parse_mac_address ${BACKUP}
   170         parse_mac_address ${BACKUP}
   172         BACKUPS=${BACKUPS}${MAC}
   171         BACKUPS=${BACKUPS}${MAC}
   173 
   172 
   174         MASTER_INDEX=$(expr ${MASTER_INDEX} + 1)
   173         MASTER_INDEX=$(expr ${MASTER_INDEX} + 1)
   175     done
   174     done
   176     MASTER_INDICES=`seq 0 $((${MASTER_INDEX} - 1))`
       
   177 
   175 
   178     # load master module
   176     # load master module
   179     if ! ${MODPROBE} ${MODPROBE_FLAGS} ec_master \
   177     if ! ${MODPROBE} ${MODPROBE_FLAGS} ec_master \
   180             main_devices=${DEVICES} backup_devices=${BACKUPS}; then
   178             main_devices=${DEVICES} backup_devices=${BACKUPS}; then
   181         exit_fail
   179         exit_fail
   182     fi
   180     fi
   183 
       
   184     # remove stale device nodes
       
   185     rm -f /dev/${CDEV}*
       
   186 
       
   187     # get dynamic major number
       
   188     MAJOR=$(awk "\$2==\"EtherCAT\" {print \$1}" /proc/devices)
       
   189     if [ -z "${MAJOR}" ]; then
       
   190         echo "Failed to get device major number!"
       
   191         ${RMMOD} ec_master
       
   192         exit_fail
       
   193     fi
       
   194 
       
   195     # create character devices
       
   196     for i in ${MASTER_INDICES}; do
       
   197         mknod /dev/${CDEV}${i} c ${MAJOR} ${i}
       
   198     done
       
   199 
   181 
   200     # check for modules to replace
   182     # check for modules to replace
   201     for MODULE in ${DEVICE_MODULES}; do
   183     for MODULE in ${DEVICE_MODULES}; do
   202         ECMODULE=ec_${MODULE}
   184         ECMODULE=ec_${MODULE}
   203         if ! ${MODINFO} ${ECMODULE} > /dev/null; then
   185         if ! ${MODINFO} ${ECMODULE} > /dev/null; then
   229         if ! ${RMMOD} ${ECMODULE}; then
   211         if ! ${RMMOD} ${ECMODULE}; then
   230             exit_fail
   212             exit_fail
   231         fi;
   213         fi;
   232     done
   214     done
   233 
   215 
   234     # remove device nodes
       
   235     rm -f /dev/${CDEV}*
       
   236 
       
   237     sleep 1
   216     sleep 1
   238 
   217 
   239     # reload previous modules
   218     # reload previous modules
   240     for MODULE in ${DEVICE_MODULES}; do
   219     for MODULE in ${DEVICE_MODULES}; do
   241         if ! ${MODPROBE} ${MODPROBE_FLAGS} ${MODULE}; then
   220         if ! ${MODPROBE} ${MODPROBE_FLAGS} ${MODULE}; then