@@ -26,15 +26,17 @@ CheckKernel() {
2626 # Shellcheck doesn't know about substitution
2727 # shellcheck disable=SC2194
2828 case " @KERNEL_VERS@" in
29- " " ) ;;
29+ " " )
30+ ;;
3031 * )
31- if [ " $( uname -r) " != " @KERNEL_VERS@" ]; then
32- cat 1>&2 << EOF
32+ if [ " $( uname -r) " != " @KERNEL_VERS@" ]; then
33+ cat 1>&2 << EOF
3334RTAPI requires the real-time kernel @KERNEL_VERS@ to run. Before running
3435this realtime application, reboot and choose this kernel at the boot menu.
3536EOF
36- exit 1
37- fi
37+ exit 1
38+ fi
39+ ;;
3840 esac
3941}
4042
@@ -71,8 +73,8 @@ CheckConfig(){
7173 fi
7274 fi
7375 if [ -z " $RTAPICONF " ] ; then
74- echo " Missing rtapi.conf. Check your installation." 1>&2
75- exit 1
76+ echo " Missing rtapi.conf. Check your installation." 1>&2
77+ exit 1
7678 fi
7779 INSMOD=" @INSMOD@"
7880 RMMOD=" @RMMOD@"
@@ -94,7 +96,9 @@ CheckConfig(){
9496 MODULES_LOAD=
9597 MODULES_UNLOAD=
9698 case $RTPREFIX in
97- uspace) SHM_DEV=/dev/zero;;
99+ uspace)
100+ SHM_DEV=/dev/zero
101+ ;;
98102 esac
99103 for MOD in $MODULES ; do
100104 eval MOD=\$ {MODPATH_" $MOD " }
@@ -108,81 +112,85 @@ CheckConfig(){
108112 MODULES_UNLOAD=" $MOD $MODULES_UNLOAD "
109113 done
110114 case $RTPREFIX in
111- (* rtai* )
112- MODULES_LOAD=" $MODULES_LOAD $RTLIB_DIR /rtapi$MODULE_EXT $RTLIB_DIR /hal_lib$MODULE_EXT "
113- MODULES_UNLOAD=" hal_lib rtapi $MODULES_UNLOAD "
114- SHM_DEV=/dev/rtai_shm
115- ;;
116- (* )
117- MODULES_UNLOAD=
115+ * rtai* )
116+ MODULES_LOAD=" $MODULES_LOAD $RTLIB_DIR /rtapi$MODULE_EXT $RTLIB_DIR /hal_lib$MODULE_EXT "
117+ MODULES_UNLOAD=" hal_lib rtapi $MODULES_UNLOAD "
118+ SHM_DEV=/dev/rtai_shm
119+ ;;
120+ * )
121+ MODULES_UNLOAD=
122+ ;;
118123 esac
119124}
120125
121126CheckStatus (){
122127 case $RTPREFIX in
123- uspace)
124- if [ -z " $( $PS -o stat= -o comm= -C rtapi_app | $GREP -v ' ^Z' ) " ]; then
125- echo rtapi_app is not running
126- return 1
127- else
128- echo rtapi_app is running
129- return 0
130- fi ;;
131- * )
132- # check loaded/unloaded status of modules
133- unset NOTLOADED
134- for MOD in $MODULES_UNLOAD ; do
135- if " $LSMOD " | awk ' {print $1}' | $GREP -x " $MOD " > /dev/null ; then
136- echo " $MOD is loaded"
128+ uspace)
129+ if [ -z " $( $PS -o stat= -o comm= -C rtapi_app | $GREP -v ' ^Z' ) " ]; then
130+ echo rtapi_app is not running
131+ return 1
137132 else
138- echo " $MOD is not loaded "
139- NOTLOADED=NOT
133+ echo rtapi_app is running
134+ return 0
140135 fi
141- done
142- if [ -z " $NOTLOADED " ]; then
143- return 0
144- else
145- return 1
146- fi
136+ ;;
137+ * )
138+ # check loaded/unloaded status of modules
139+ unset NOTLOADED
140+ for MOD in $MODULES_UNLOAD ; do
141+ if " $LSMOD " | awk ' {print $1}' | $GREP -x " $MOD " > /dev/null ; then
142+ echo " $MOD is loaded"
143+ else
144+ echo " $MOD is not loaded"
145+ NOTLOADED=NOT
146+ fi
147+ done
148+ if [ -z " $NOTLOADED " ]; then
149+ return 0
150+ else
151+ return 1
152+ fi
153+ ;;
147154 esac
148155}
149156
150157CheckMem (){
151158# check for user space processes using shared memory
152159 if [ -e /dev/mbuff ] ; then
153- # device file exists, check for processes using it
154- if $FUSER -s /dev/mbuff 2> /dev/null; then
155- # at least one process is using it
156- echo " ERROR: Can't remove RTLinux modules, kill the following process(es) first"
157- $FUSER -v /dev/mbuff
158- exit 1
159- fi
160+ # device file exists, check for processes using it
161+ if $FUSER -s /dev/mbuff 2> /dev/null; then
162+ # at least one process is using it
163+ echo " ERROR: Can't remove RTLinux modules, kill the following process(es) first"
164+ $FUSER -v /dev/mbuff
165+ exit 1
166+ fi
160167 elif [ -e /dev/rtai_shm ] ; then
161- # device file exists, check for processes using it
162- if $FUSER -s /dev/rtai_shm 2> /dev/null; then
163- # at least one process is using it
164- echo " ERROR: Can't remove RTAI modules, kill the following process(es) first"
165- $FUSER -v /dev/rtai_shm
166- exit 1
167- fi
168+ # device file exists, check for processes using it
169+ if $FUSER -s /dev/rtai_shm 2> /dev/null; then
170+ # at least one process is using it
171+ echo " ERROR: Can't remove RTAI modules, kill the following process(es) first"
172+ $FUSER -v /dev/rtai_shm
173+ exit 1
174+ fi
168175 fi
169176}
170177
171178Load (){
172179 CheckKernel
173180 case $RTPREFIX in
174- uspace)
175- rtapi_app start
176- ;;
177- (* rtai* )
178- for MOD in $MODULES_LOAD ; do
179- if ! [ -d " /sys/module/$( basename " $MOD " .ko) " ]; then
180- $INSMOD " $MOD " || return $?
181- fi
182- done
183- if [ " $DEBUG " != " " ] && [ -w /proc/rtapi/debug ] ; then
184- echo " $DEBUG " > /proc/rtapi/debug
185- fi
181+ uspace)
182+ rtapi_app start
183+ ;;
184+ * rtai* )
185+ for MOD in $MODULES_LOAD ; do
186+ if ! [ -d " /sys/module/$( basename " $MOD " .ko) " ]; then
187+ $INSMOD " $MOD " || return $?
188+ fi
189+ done
190+ if [ " $DEBUG " != " " ] && [ -w /proc/rtapi/debug ] ; then
191+ echo " $DEBUG " > /proc/rtapi/debug
192+ fi
193+ ;;
186194 esac
187195}
188196
@@ -202,29 +210,32 @@ CheckLoaded(){
202210
203211Unload (){
204212 CheckKernel
213+
205214 case $RTPREFIX in
206- uspace)
207- rtapi_app exit
215+ uspace)
216+ rtapi_app exit
208217
209- # wait 5 seconds for rtapi_app to die and be reaped by its parent
210- START=$SECONDS
211- local NPROCS
212- while [ 5 -gt $(( SECONDS- START)) ]; do
218+ # wait 5 seconds for rtapi_app to die and be reaped by its parent
219+ START=$SECONDS
220+ local NPROCS
221+ while [ 5 -gt $(( SECONDS- START)) ]; do
222+ NPROCS=$( ps -C rtapi_app -o stat= -o comm= | $GREP -v ' ^Z' | wc -l)
223+ if [ " $NPROCS " -eq 0 ]; then
224+ break
225+ fi
226+ sleep 0.1
227+ done
213228 NPROCS=$( ps -C rtapi_app -o stat= -o comm= | $GREP -v ' ^Z' | wc -l)
214- if [ " $NPROCS " -eq 0 ]; then
215- break
229+ if [ " $NPROCS " -gt 0 ]; then
230+ echo " ERROR: rtapi_app failed to die " 1>&2
216231 fi
217- sleep 0.1
218- done
219- NPROCS=$( ps -C rtapi_app -o stat= -o comm= | $GREP -v ' ^Z' | wc -l)
220- if [ " $NPROCS " -gt 0 ]; then
221- echo " ERROR: rtapi_app failed to die" 1>&2
222- fi
223232
224- ipcrm -M 0x48414c32 2> /dev/null ; # HAL_KEY
225- ipcrm -M 0x90280A48 2> /dev/null ; # RTAPI_KEY
226- ipcrm -M 0x48484c34 2> /dev/null ; # UUID_KEY
233+ ipcrm -M 0x48414c32 2> /dev/null ; # HAL_KEY
234+ ipcrm -M 0x90280A48 2> /dev/null ; # RTAPI_KEY
235+ ipcrm -M 0x48484c34 2> /dev/null ; # UUID_KEY
236+ ;;
227237 esac
238+
228239 for module in $MODULES_UNLOAD ; do
229240 $RMMOD " $module "
230241 done
@@ -233,12 +244,13 @@ Unload(){
233244Verify (){
234245 HAS_REALTIME=false
235246 case $RTPREFIX in
236- uspace)
237- rtapi_app check_rt && HAS_REALTIME=true
238- ;;
239- (* rtai* )
240- echo " RTAI"
241- HAS_REALTIME=true
247+ uspace)
248+ rtapi_app check_rt && HAS_REALTIME=true
249+ ;;
250+ * rtai* )
251+ echo " RTAI"
252+ HAS_REALTIME=true
253+ ;;
242254 esac
243255
244256 if [ $HAS_REALTIME = true ]; then
@@ -252,50 +264,50 @@ CheckUnloaded(){
252264# checks to see if all modules were unloaded
253265 STATUS=
254266 for module in $MODULES_UNLOAD ; do
255- # check to see if the module is installed
256- if " $LSMOD " | awk ' {print $1}' | $GREP -x " $module " > /dev/null ; then
257- echo " ERROR: Could not unload '$module '"
258- STATUS=error
259- fi
267+ # check to see if the module is installed
268+ if " $LSMOD " | awk ' {print $1}' | $GREP -x " $module " > /dev/null ; then
269+ echo " ERROR: Could not unload '$module '"
270+ STATUS=error
271+ fi
260272 done
261273 if [ -n " $STATUS " ] ; then
262- exit 1
274+ exit 1
263275 fi
264276}
265277
266278CMD=$1
267279
268280case " $CMD " in
269- start|load)
270- CheckConfig
271- Load || exit $?
272- CheckLoaded
273- ;;
274- restart|force-reload)
275- CheckConfig
276- CheckMem
277- Unload
278- CheckUnloaded
279- Load || exit $?
280- CheckLoaded
281- ;;
282- stop|unload)
283- CheckConfig
284- CheckMem
285- Unload || exit $?
286- ;;
287- status)
288- CheckConfig
289- CheckStatus || exit $?
290- ;;
291- verify)
292- CheckConfig
293- Verify || exit $?
294- ;;
295- * )
296- echo " Usage: $0 {start|load|stop|unload|restart|force-reload|status|verify}" >&2
297- exit 1
298- ;;
281+ start|load)
282+ CheckConfig
283+ Load || exit $?
284+ CheckLoaded
285+ ;;
286+ restart|force-reload)
287+ CheckConfig
288+ CheckMem
289+ Unload
290+ CheckUnloaded
291+ Load || exit $?
292+ CheckLoaded
293+ ;;
294+ stop|unload)
295+ CheckConfig
296+ CheckMem
297+ Unload || exit $?
298+ ;;
299+ status)
300+ CheckConfig
301+ CheckStatus || exit $?
302+ ;;
303+ verify)
304+ CheckConfig
305+ Verify || exit $?
306+ ;;
307+ * )
308+ echo " Usage: $0 {start|load|stop|unload|restart|force-reload|status|verify}" >&2
309+ exit 1
310+ ;;
299311esac
300312
301313exit 0
0 commit comments