@@ -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,11 +244,12 @@ Unload(){
233244Verify (){
234245 HAS_REALTIME=false
235246 case $RTPREFIX in
236- uspace)
237- rtapi_app check_rt && HAS_REALTIME=true
238- ;;
239- (* rtai* )
240- HAS_REALTIME=true
247+ uspace)
248+ rtapi_app check_rt && HAS_REALTIME=true
249+ ;;
250+ * rtai* )
251+ HAS_REALTIME=true
252+ ;;
241253 esac
242254
243255 if [ $HAS_REALTIME = true ]; then
@@ -253,50 +265,50 @@ CheckUnloaded(){
253265# checks to see if all modules were unloaded
254266 STATUS=
255267 for module in $MODULES_UNLOAD ; do
256- # check to see if the module is installed
257- if " $LSMOD " | awk ' {print $1}' | $GREP -x " $module " > /dev/null ; then
258- echo " ERROR: Could not unload '$module '"
259- STATUS=error
260- fi
268+ # check to see if the module is installed
269+ if " $LSMOD " | awk ' {print $1}' | $GREP -x " $module " > /dev/null ; then
270+ echo " ERROR: Could not unload '$module '"
271+ STATUS=error
272+ fi
261273 done
262274 if [ -n " $STATUS " ] ; then
263- exit 1
275+ exit 1
264276 fi
265277}
266278
267279CMD=$1
268280
269281case " $CMD " in
270- start|load)
271- CheckConfig
272- Load || exit $?
273- CheckLoaded
274- ;;
275- restart|force-reload)
276- CheckConfig
277- CheckMem
278- Unload
279- CheckUnloaded
280- Load || exit $?
281- CheckLoaded
282- ;;
283- stop|unload)
284- CheckConfig
285- CheckMem
286- Unload || exit $?
287- ;;
288- status)
289- CheckConfig
290- CheckStatus || exit $?
291- ;;
292- verify)
293- CheckConfig
294- Verify || exit $?
295- ;;
296- * )
297- echo " Usage: $0 {start|load|stop|unload|restart|force-reload|status|verify}" >&2
298- exit 1
299- ;;
282+ start|load)
283+ CheckConfig
284+ Load || exit $?
285+ CheckLoaded
286+ ;;
287+ restart|force-reload)
288+ CheckConfig
289+ CheckMem
290+ Unload
291+ CheckUnloaded
292+ Load || exit $?
293+ CheckLoaded
294+ ;;
295+ stop|unload)
296+ CheckConfig
297+ CheckMem
298+ Unload || exit $?
299+ ;;
300+ status)
301+ CheckConfig
302+ CheckStatus || exit $?
303+ ;;
304+ verify)
305+ CheckConfig
306+ Verify || exit $?
307+ ;;
308+ * )
309+ echo " Usage: $0 {start|load|stop|unload|restart|force-reload|status|verify}" >&2
310+ exit 1
311+ ;;
300312esac
301313
302314exit 0
0 commit comments