fifo/lock fixes
This commit is contained in:
parent
7c4f48df57
commit
7d36cbda32
@ -1,8 +1,9 @@
|
|||||||
#!/sbin/runscript
|
#!/sbin/runscript
|
||||||
|
|
||||||
DAEMON="/usr/local/sbin/snail.watcher"
|
DAEMON="/usr/local/sbin/snail.watcher.sh"
|
||||||
DAEMON_ARGS=""
|
DAEMON_ARGS=""
|
||||||
PIDFILE=/var/run/snail.pid
|
PIDFILE=/var/run/snail.pid
|
||||||
|
#PATH=/usr/local/sbin:/usr/local/bin:$PATH
|
||||||
PATH=$PATH:/usr/local/bin
|
PATH=$PATH:/usr/local/bin
|
||||||
|
|
||||||
depend() {
|
depend() {
|
||||||
@ -11,7 +12,10 @@ depend() {
|
|||||||
|
|
||||||
start() {
|
start() {
|
||||||
ebegin "Starting ${SVCNAME}"
|
ebegin "Starting ${SVCNAME}"
|
||||||
start-stop-daemon -m -b --start --exec $DAEMON \
|
start-stop-daemon --make-pidfile \
|
||||||
|
--background \
|
||||||
|
--start \
|
||||||
|
--exec $DAEMON \
|
||||||
--pidfile $PIDFILE \
|
--pidfile $PIDFILE \
|
||||||
-- $DAEMON_ARGS
|
-- $DAEMON_ARGS
|
||||||
eend $?
|
eend $?
|
||||||
@ -19,8 +23,8 @@ start() {
|
|||||||
|
|
||||||
stop() {
|
stop() {
|
||||||
ebegin "Stopping ${SVCNAME}"
|
ebegin "Stopping ${SVCNAME}"
|
||||||
start-stop-daemon --stop --exec $DAEMON \
|
start-stop-daemon --stop \
|
||||||
|
--exec $DAEMON \
|
||||||
--pidfile $PIDFILE
|
--pidfile $PIDFILE
|
||||||
eend $?
|
eend $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
PATH=/usr/local/sbin:/usr/local/bin:$PATH
|
PATH=/usr/local/sbin:/usr/local/bin:$PATH
|
||||||
|
|
||||||
TIMEOUT=5 # wait timeout for X server start
|
TIMEOUT=10 # wait timeout for X server start
|
||||||
let INTEL_IF_FAIL=1 # run on Intel if nVidia fails
|
let INTEL_IF_FAIL=1 # run on Intel if nVidia fails
|
||||||
|
|
||||||
SERVICE=/etc/init.d/snail-xserver
|
SERVICE=/etc/init.d/snail-xserver
|
||||||
@ -13,7 +13,7 @@ FIFO_FILE=/tmp/.snail.fifo
|
|||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
echo -n >$FIFO_FILE
|
echo -n > $FIFO_FILE &
|
||||||
flock -w $TIMEOUT -s 9
|
flock -w $TIMEOUT -s 9
|
||||||
|
|
||||||
if [ 0 -eq $? ]; then
|
if [ 0 -eq $? ]; then
|
||||||
@ -27,4 +27,6 @@ FIFO_FILE=/tmp/.snail.fifo
|
|||||||
echo "Application $@ was performed on Intel"
|
echo "Application $@ was performed on Intel"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
} 9 > $LOCK_FILE
|
flock -u 9
|
||||||
|
|
||||||
|
} 9>$LOCK_FILE
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
PATH=/usr/local/sbin:/usr/local/bin:$PATH
|
|
||||||
|
|
||||||
SERVICE=/etc/init.d/snail-xserver
|
|
||||||
PROC=nvrun
|
|
||||||
|
|
||||||
LOCK_FILE=/tmp/.snail.lock
|
|
||||||
FIFO_FILE=/tmp/.snail.fifo
|
|
||||||
|
|
||||||
$SERVICE stop && snail.nv_pwr_off # stop X service
|
|
||||||
|
|
||||||
touch $LOCK_FILE && chown 0:0 $LOCK_FILE # create lock file
|
|
||||||
rm -f $FIFO_FILE && mkfifo --mode 640 $FIFO_FILE && chgrp video $FIFO_FILE # create fifo
|
|
||||||
|
|
||||||
{
|
|
||||||
echo >$FIFO_FILE | cat <$FIFO_FILE >/dev/null # flush fifo
|
|
||||||
flock -n 9 # make exclusive lock
|
|
||||||
|
|
||||||
while [ 1 ]; do
|
|
||||||
cat <$FIFO_FILE >/dev/null
|
|
||||||
flock -u 9 # unlock to get access for clients
|
|
||||||
flock -n 9
|
|
||||||
if [ 0 -ne $? ]; then # test is $LOCK_FILE locked by any client
|
|
||||||
snail.nv_pwr_on && $SERVICE start # starting X server
|
|
||||||
flock 9
|
|
||||||
echo >$FIFO_FILE | cat <$FIFO_FILE >/dev/null # flush fifo
|
|
||||||
$SERVICE stop && snail.nv_pwr_off # stopping X server
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
} 9 > $LOCK_FILE
|
|
28
usr/local/sbin/snail.watcher.sh
Executable file
28
usr/local/sbin/snail.watcher.sh
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PATH=/usr/local/sbin:/usr/local/bin:$PATH
|
||||||
|
|
||||||
|
SERVICE=/etc/init.d/snail-xserver
|
||||||
|
PROC=nvrun
|
||||||
|
|
||||||
|
LOCK_FILE=/tmp/.snail.lock
|
||||||
|
FIFO_FILE=/tmp/.snail.fifo
|
||||||
|
|
||||||
|
$SERVICE stop && snail.nv_pwr_off # stop X service
|
||||||
|
|
||||||
|
touch $LOCK_FILE && chown root:video $LOCK_FILE && chmod 660 $LOCK_FILE # create lock file
|
||||||
|
rm -f $FIFO_FILE && mkfifo --mode 660 $FIFO_FILE && chgrp video $FIFO_FILE # create fifo
|
||||||
|
|
||||||
|
{
|
||||||
|
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||||
|
flock -n 9 # make exclusive lock
|
||||||
|
|
||||||
|
while [ 1 ]; do
|
||||||
|
read <$FIFO_FILE
|
||||||
|
snail.nv_pwr_on && $SERVICE start # starting X server
|
||||||
|
flock -u 9
|
||||||
|
flock 9
|
||||||
|
echo >$FIFO_FILE | cat $FIFO_FILE >/dev/null # flush fifo
|
||||||
|
$SERVICE stop && snail.nv_pwr_off # stopping X server
|
||||||
|
done
|
||||||
|
} 9>$LOCK_FILE
|
Loading…
x
Reference in New Issue
Block a user