| #!/bin/bash |
| # Intel MIC Platform Software Stack (MPSS) |
| # |
| # Copyright(c) 2013 Intel Corporation. |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License, version 2, as |
| # published by the Free Software Foundation. |
| # |
| # This program is distributed in the hope that it will be useful, but |
| # WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| # General Public License for more details. |
| # |
| # The full GNU General Public License is included in this distribution in |
| # the file called "COPYING". |
| # |
| # Intel MIC User Space Tools. |
| # |
| # micctrl - Controls MIC boot/start/stop. |
| # |
| # chkconfig: 2345 95 05 |
| # description: start MPSS stack processing. |
| # |
| ### BEGIN INIT INFO |
| # Provides: micctrl |
| ### END INIT INFO |
| |
| # Source function library. |
| . /etc/init.d/functions |
| |
| sysfs="/sys/class/mic" |
| |
| _status() |
| { |
| f=$sysfs/$1 |
| echo -e $1 state: "`cat $f/state`" shutdown_status: "`cat $f/shutdown_status`" |
| } |
| |
| status() |
| { |
| if [ "`echo $1 | head -c3`" == "mic" ]; then |
| _status $1 |
| return $? |
| fi |
| for f in $sysfs/* |
| do |
| _status `basename $f` |
| RETVAL=$? |
| [ $RETVAL -ne 0 ] && return $RETVAL |
| done |
| return 0 |
| } |
| |
| _reset() |
| { |
| f=$sysfs/$1 |
| echo reset > $f/state |
| } |
| |
| reset() |
| { |
| if [ "`echo $1 | head -c3`" == "mic" ]; then |
| _reset $1 |
| return $? |
| fi |
| for f in $sysfs/* |
| do |
| _reset `basename $f` |
| RETVAL=$? |
| [ $RETVAL -ne 0 ] && return $RETVAL |
| done |
| return 0 |
| } |
| |
| _boot() |
| { |
| f=$sysfs/$1 |
| echo "linux" > $f/bootmode |
| echo "mic/uos.img" > $f/firmware |
| echo "mic/$1.image" > $f/ramdisk |
| echo "boot" > $f/state |
| } |
| |
| boot() |
| { |
| if [ "`echo $1 | head -c3`" == "mic" ]; then |
| _boot $1 |
| return $? |
| fi |
| for f in $sysfs/* |
| do |
| _boot `basename $f` |
| RETVAL=$? |
| [ $RETVAL -ne 0 ] && return $RETVAL |
| done |
| return 0 |
| } |
| |
| _shutdown() |
| { |
| f=$sysfs/$1 |
| echo shutdown > $f/state |
| } |
| |
| shutdown() |
| { |
| if [ "`echo $1 | head -c3`" == "mic" ]; then |
| _shutdown $1 |
| return $? |
| fi |
| for f in $sysfs/* |
| do |
| _shutdown `basename $f` |
| RETVAL=$? |
| [ $RETVAL -ne 0 ] && return $RETVAL |
| done |
| return 0 |
| } |
| |
| _wait() |
| { |
| f=$sysfs/$1 |
| while [ "`cat $f/state`" != "offline" -a "`cat $f/state`" != "online" ] |
| do |
| sleep 1 |
| echo -e "Waiting for $1 to go offline" |
| done |
| } |
| |
| wait() |
| { |
| if [ "`echo $1 | head -c3`" == "mic" ]; then |
| _wait $1 |
| return $? |
| fi |
| # Wait for the cards to go offline |
| for f in $sysfs/* |
| do |
| _wait `basename $f` |
| RETVAL=$? |
| [ $RETVAL -ne 0 ] && return $RETVAL |
| done |
| return 0 |
| } |
| |
| if [ ! -d "$sysfs" ]; then |
| echo -e $"Module unloaded " |
| exit 3 |
| fi |
| |
| case $1 in |
| -s) |
| status $2 |
| ;; |
| -r) |
| reset $2 |
| ;; |
| -b) |
| boot $2 |
| ;; |
| -S) |
| shutdown $2 |
| ;; |
| -w) |
| wait $2 |
| ;; |
| *) |
| echo $"Usage: $0 {-s (status) |-r (reset) |-b (boot) |-S (shutdown) |-w (wait)}" |
| exit 2 |
| esac |
| |
| exit $? |