#
# insert all sound modules
#
- if OLDLOGLEV=$(cat /proc/sys/kernel/printk | awk '{print $1}' 2> /dev/null); then
+ if OLDLOGLEV=$(awk '{print $1}' < /proc/sys/kernel/printk 2> /dev/null); then
/sbin/loglevel 1
fi
- cat $MODULES_CONF | grep -v "off" | \
- grep -E "^alias.+snd-card-[[:digit:]]" | \
- awk '{print $3}' | \
+ awk '$1 == "alias" && $3 != "off" && ($2 ~ /^snd-card-[0-9]$/ || $2 ~ /^sound-service-[0-9]-[0-9]+$/) {print $2}' < $MODULES_CONF | \
while read line; do \
- show "Starting sound driver: $line " ; \
- /sbin/modprobe $line; \
- ok; \
+ show "Starting sound driver: $line"
+ busy
+ /sbin/modprobe $line
+ ok
done
+ #
+ # set (non-)blocking state of pcm devices
+ #
+ for card in /proc/asound/[0-9]; do
+ card=`echo $card | awk '{ sub(/^.*\//, ""); print $0 }'`
+ for dev in /proc/asound/$card/pcmD[0-9]o; do
+ dev=`echo $dev | awk '{ sub(/^.*pcmD/, ""); sub(/o$/, ""); print $0 }'`
+ show "Setting up blocking state for card $card device $dev"
+ busy
+ echo "Playback erase" > /proc/asound/$card/pcmD${dev}o
+ echo "Capture erase" > /proc/asound/$card/pcmD${dev}o
+ awk -v CARD=$card '($1 ~ CARD || $1 ~ /\*/) { $1 = ""; sub(/^ /, ""); print $0}' < /etc/sysconfig/alsa-oss-pcm > /proc/asound/$card/pcmD${dev}o
+ ok
+ done
+ done
if [ -n "$OLDLOGLEV" ]; then
/sbin/loglevel "$OLDLOGLEV"
fi
#
# remove all sound modules
#
- /sbin/lsmod | grep -E "^snd" | while read line; do \
+ /sbin/lsmod | awk '/^snd/ { print $0 }' | while read line; do \
/sbin/rmmod `echo $line | cut -d ' ' -f 1`; \
done
}
# Stop daemons.
if [ -d /proc/asound ]; then
show "Shutting down sound driver:"
+ busy
if [ -f /proc/asound/detect ]; then
detect_stop
else