14a8c3632SSascha Wildner#!/bin/sh - 27484ccd1SJoerg Sonnenberger# 34a8c3632SSascha Wildner# Copyright (c) 2004 The FreeBSD Project 44a8c3632SSascha Wildner# All rights reserved. 54a8c3632SSascha Wildner# 64a8c3632SSascha Wildner# Redistribution and use in source and binary forms, with or without 74a8c3632SSascha Wildner# modification, are permitted provided that the following conditions 84a8c3632SSascha Wildner# are met: 94a8c3632SSascha Wildner# 1. Redistributions of source code must retain the above copyright 104a8c3632SSascha Wildner# notice, this list of conditions and the following disclaimer. 114a8c3632SSascha Wildner# 2. Redistributions in binary form must reproduce the above copyright 124a8c3632SSascha Wildner# notice, this list of conditions and the following disclaimer in the 134a8c3632SSascha Wildner# documentation and/or other materials provided with the distribution. 144a8c3632SSascha Wildner# 154a8c3632SSascha Wildner# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 164a8c3632SSascha Wildner# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 174a8c3632SSascha Wildner# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 184a8c3632SSascha Wildner# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 194a8c3632SSascha Wildner# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 204a8c3632SSascha Wildner# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 214a8c3632SSascha Wildner# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 224a8c3632SSascha Wildner# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 234a8c3632SSascha Wildner# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 244a8c3632SSascha Wildner# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 254a8c3632SSascha Wildner# SUCH DAMAGE. 264a8c3632SSascha Wildner# 274a8c3632SSascha Wildner# $FreeBSD: head/etc/rc.d/mixer 240336 2012-09-11 05:04:59Z obrien $ 287484ccd1SJoerg Sonnenberger# 297484ccd1SJoerg Sonnenberger 307484ccd1SJoerg Sonnenberger# PROVIDE: mixer 31*ce083385SAaron LI# REQUIRE: FILESYSTEMS 324a8c3632SSascha Wildner# KEYWORD: nojail shutdown 337484ccd1SJoerg Sonnenberger 347484ccd1SJoerg Sonnenberger. /etc/rc.subr 357484ccd1SJoerg Sonnenberger 367484ccd1SJoerg Sonnenbergername="mixer" 374a8c3632SSascha Wildnerrcvar="mixer_enable" 387484ccd1SJoerg Sonnenbergerstop_cmd="mixer_stop" 394a8c3632SSascha Wildnerstart_cmd="mixer_start" 404a8c3632SSascha Wildnerreload_cmd="mixer_start" 414a8c3632SSascha Wildnerextra_commands="reload" 427484ccd1SJoerg Sonnenberger 434a8c3632SSascha Wildner# 444a8c3632SSascha Wildner# List current mixer devices to stdout. 454a8c3632SSascha Wildner# 464a8c3632SSascha Wildnerlist_mixers() 477484ccd1SJoerg Sonnenberger{ 484a8c3632SSascha Wildner ( cd /dev ; ls mixer* 2>/dev/null ) 494a8c3632SSascha Wildner} 504a8c3632SSascha Wildner 514a8c3632SSascha Wildner# 524a8c3632SSascha Wildner# Save state of an individual mixer specified as $1 534a8c3632SSascha Wildner# 544a8c3632SSascha Wildnermixer_save() 554a8c3632SSascha Wildner{ 564a8c3632SSascha Wildner local dev 574a8c3632SSascha Wildner 584a8c3632SSascha Wildner dev="/dev/${1}" 594a8c3632SSascha Wildner if [ -r ${dev} ]; then 604a8c3632SSascha Wildner /usr/sbin/mixer -f ${dev} -s > /var/db/${1}-state 2>/dev/null 617484ccd1SJoerg Sonnenberger fi 627484ccd1SJoerg Sonnenberger} 637484ccd1SJoerg Sonnenberger 644a8c3632SSascha Wildner# 654a8c3632SSascha Wildner# Restore the state of an individual mixer specified as $1 664a8c3632SSascha Wildner# 674a8c3632SSascha Wildnermixer_restore() 684a8c3632SSascha Wildner{ 694a8c3632SSascha Wildner local file dev 704a8c3632SSascha Wildner 714a8c3632SSascha Wildner dev="/dev/${1}" 724a8c3632SSascha Wildner file="/var/db/${1}-state" 734a8c3632SSascha Wildner if [ -r ${dev} -a -r ${file} ]; then 744a8c3632SSascha Wildner /usr/sbin/mixer -f ${dev} `cat ${file}` > /dev/null 754a8c3632SSascha Wildner fi 764a8c3632SSascha Wildner} 774a8c3632SSascha Wildner 784a8c3632SSascha Wildner# 794a8c3632SSascha Wildner# Restore state of all mixers 804a8c3632SSascha Wildner# 814a8c3632SSascha Wildnermixer_start() 824a8c3632SSascha Wildner{ 834a8c3632SSascha Wildner local mixer 844a8c3632SSascha Wildner 854a8c3632SSascha Wildner for mixer in `list_mixers`; do 864a8c3632SSascha Wildner mixer_restore ${mixer} 874a8c3632SSascha Wildner done 884a8c3632SSascha Wildner} 894a8c3632SSascha Wildner 904a8c3632SSascha Wildner# 914a8c3632SSascha Wildner# Save the state of all mixers 924a8c3632SSascha Wildner# 937484ccd1SJoerg Sonnenbergermixer_stop() 947484ccd1SJoerg Sonnenberger{ 954a8c3632SSascha Wildner local mixer 964a8c3632SSascha Wildner 974a8c3632SSascha Wildner for mixer in `list_mixers`; do 984a8c3632SSascha Wildner mixer_save ${mixer} 99289ad5f6SSimon Schubert done 1007484ccd1SJoerg Sonnenberger} 1017484ccd1SJoerg Sonnenberger 1027484ccd1SJoerg Sonnenbergerload_rc_config $name 1037484ccd1SJoerg Sonnenbergerrun_rc_command "$1" 104