blob: 0b14338f3edeff998948b7a9dbefb9749df5e177 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
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
|