summaryrefslogtreecommitdiff
path: root/sources/target_skeleton
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-02-15 12:36:32 +0000
committerEric Andersen <andersen@codepoet.org>2003-02-15 12:36:32 +0000
commitbbe35d48172c059e0cc4040bb3e1bbec5192abe2 (patch)
treea845123d3ad51ebb3af2f4d1972fe3410843372a /sources/target_skeleton
parent039a17c4896759aa94c1e0eb037b99320c4c3b33 (diff)
Fix pcmcia startup. Add grep
Diffstat (limited to 'sources/target_skeleton')
-rwxr-xr-xsources/target_skeleton/etc/init.d/S30pcmcia180
1 files changed, 180 insertions, 0 deletions
diff --git a/sources/target_skeleton/etc/init.d/S30pcmcia b/sources/target_skeleton/etc/init.d/S30pcmcia
new file mode 100755
index 000000000..0b14338f3
--- /dev/null
+++ b/sources/target_skeleton/etc/init.d/S30pcmcia
@@ -0,0 +1,180 @@
+#!/bin/sh
+
+# rc.pcmcia 1.39 2001/10/04 12:30:05 (David Hinds)
+#
+# This is designed to work in BSD as well as SysV init setups. See
+# the HOWTO for customization instructions.
+# Modified to comply with Debian's standards by Brian Mays
+# <brian@debian.org>.
+
+# Tags for Red Hat init configuration tools
+#
+# chkconfig: 2345 45 96
+# processname: cardmgr
+# pidfile: /var/run/cardmgr.pid
+# config: /etc/pcmcia/config
+# config: /etc/pcmcia/config.opts
+# description: PCMCIA support is usually to support things like ethernet \
+# and modems in laptops. It won't get started unless \
+# configured so it is safe to have it installed on machines \
+# that don't need it.
+
+# Save option values passed in through the environment
+for N in PCMCIA PCIC PCIC_OPTS CORE_OPTS CARDMGR_OPTS SCHEME ; do
+ V=`eval echo '$'$N` ; if [ "$V" ] ; then eval ENV_$N=\"$V\" ; fi
+done
+
+# PCMCIA configuration... This may be wrong for many systems.
+
+# Should be either yenta_socket, i82365 or tcic
+PCIC=yenta_socket
+#PCIC=i82365
+#PCIC=tcic
+
+# Put socket driver timing parameters here
+PCIC_OPTS=
+# Put pcmcia_core options here
+CORE_OPTS=
+# Put cardmgr options here
+CARDMGR_OPTS=
+# To set the PCMCIA scheme at startup...
+SCHEME=
+PCMCIA=yes
+
+
+for N in PCMCIA PCIC PCIC_OPTS CORE_OPTS CARDMGR_OPTS SCHEME ; do
+ V=`eval echo '$'ENV_$N` ; if [ "$V" ] ; then eval $N=\"$V\" ; fi
+done
+if [ "$PCMCIA" -a "$PCMCIA" != "yes" ] ; then exit 0 ; fi
+
+# Debian modification: Fix PCIC for stand-alone modules.
+# yenta_socket -> i82365 on these systems.
+# Existence of a standalone module implies that it is preferred.
+PC=/lib/modules/`uname -r`/pcmcia
+if [ "$PCIC" = yenta_socket -a -e $PC/i82365.o \
+ -a ! -L $PC/i82365.o ]; then
+ PCIC=i82365
+fi
+
+usage()
+{
+ echo "Usage: $0 {start|stop|status|restart|reload|force-reload}"
+}
+
+cleanup()
+{
+ while read SN CLASS MOD INST DEV EXTRA ; do
+ if [ "$SN" != "Socket" ] ; then
+ /etc/pcmcia/$CLASS stop $DEV 2> /dev/null
+ fi
+ done
+}
+
+EXITCODE=1
+for x in "1" ; do
+
+ if [ "$PCIC" = "" ] ; then
+ echo "PCIC module not defined in startup options!"
+ break
+ fi
+
+ if [ $# -lt 1 ] ; then usage ; break ; fi
+ action=$1
+
+ case "$action" in
+
+ start)
+ echo -n "Starting PCMCIA services:"
+ SC=/var/lib/pcmcia/scheme
+ RUN=/var/lib/pcmcia
+ if [ -L $SC -o ! -O $SC ] ; then rm -f $SC ; fi
+ if [ ! -f $SC ] ; then umask 022 ; touch $SC ; fi
+ if [ "$SCHEME" ] ; then umask 022 ; echo $SCHEME > $SC ; fi
+ grep -q pcmcia /proc/devices
+ if [ $? -ne 0 ] ; then
+ PC=/lib/modules/`uname -r`/pcmcia
+ KD=/lib/modules/`uname -r`/kernel/drivers/pcmcia
+ if [ -d $KD ] ; then
+ /sbin/modprobe pcmcia_core
+ /sbin/modprobe $PCIC
+ /sbin/modprobe ds
+ elif [ -d $PC ] ; then
+ echo -n " modules"
+ /sbin/insmod $PC/pcmcia_core.o $CORE_OPTS
+ /sbin/insmod $PC/$PCIC.o $PCIC_OPTS
+ /sbin/insmod $PC/ds.o
+ else
+ echo " module directory $PC not found."
+ break
+ fi
+ fi
+ if [ -s /var/run/cardmgr.pid ] && \
+ kill -0 `cat /var/run/cardmgr.pid` 2>/dev/null ; then
+ echo " cardmgr is already running."
+ else
+ if [ -r $RUN/stab ] ; then
+ cat $RUN/stab | cleanup
+ fi
+ echo " cardmgr."
+ /sbin/cardmgr $CARDMGR_OPTS
+ fi
+ touch /var/lock/pcmcia.lock 2>/dev/null
+ EXITCODE=0
+ ;;
+
+ stop)
+ echo -n "Shutting down PCMCIA services:"
+ if [ -s /var/run/cardmgr.pid ] ; then
+ PID=`cat /var/run/cardmgr.pid`
+ kill $PID
+ echo -n " cardmgr"
+ # Give cardmgr a few seconds to handle the signal
+ kill -0 $PID 2>/dev/null && sleep 2 && \
+ kill -0 $PID 2>/dev/null && sleep 2 && \
+ kill -0 $PID 2>/dev/null && sleep 2 && \
+ kill -0 $PID 2>/dev/null
+ fi
+ if grep -q "ds " /proc/modules ; then
+ echo -n " modules"
+ /sbin/rmmod ds
+ /sbin/rmmod $PCIC
+ /sbin/rmmod pcmcia_core
+ fi
+ echo "."
+ rm -f /var/lock/pcmcia.lock
+ EXITCODE=0
+ ;;
+
+ status)
+ pid=`/bin/pidof cardmgr`
+ if [ "$pid" != "" ] ; then
+ echo "cardmgr (pid $pid) is running..."
+ EXITCODE=0
+ else
+ echo "cardmgr is stopped"
+ EXITCODE=3
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ EXITCODE=$?
+ ;;
+
+ reload|force-reload)
+ echo "Reloading $DESC configuration files."
+ kill -1 `cat /var/run/cardmgr.pid` 2>/dev/null
+ EXITCODE=0
+ ;;
+
+ *)
+ usage
+ ;;
+
+ esac
+
+done
+
+# Only exit if we're in our own subshell
+case $0 in *pcmcia) exit $EXITCODE ;; esac