diff options
Diffstat (limited to 'pcr/openrc-misc/lm_sensors-3-init.d')
-rw-r--r-- | pcr/openrc-misc/lm_sensors-3-init.d | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/pcr/openrc-misc/lm_sensors-3-init.d b/pcr/openrc-misc/lm_sensors-3-init.d new file mode 100644 index 000000000..18fb35370 --- /dev/null +++ b/pcr/openrc-misc/lm_sensors-3-init.d @@ -0,0 +1,105 @@ +#!/sbin/runscript +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/lm_sensors/files/lm_sensors-3-init.d,v 1.1 2008/03/17 07:59:28 dberkholz Exp $ + +checkconfig() { + if [ ! -f /etc/conf.d/lm_sensors ]; then + eerror "/etc/conf.d/lm_sensors does not exist, try running sensors-detect" + return 1 + fi + + if [ "${LOADMODULES}" = "yes" -a -f /proc/modules ]; then + if [ -z "${MODULE_0}" ]; then + eerror "MODULE_0 is not set in /etc/conf.d/lm_sensors, try running sensors-detect" + return 1 + fi + fi +} + +start() { + checkconfig || return 1 + + if [ "${LOADMODULES}" = "yes" -a -f /proc/modules ]; then + einfo "Loading lm_sensors modules..." + + mount | grep sysfs >/dev/null 2>&1 + if [ ${?} = 0 ]; then + if ! ( [ -e /sys/i2c ] || [ -e /sys/bus/i2c ] ); then + ebegin " Loading i2c-core" + modprobe i2c-core >/dev/null 2>&1 + if [ ${?} != 0 ]; then + eerror " Could not load i2c-core!" + eend 1 + fi + ( [ -e /sys/i2c ] || [ -e /sys/bus/i2c ] ) || return 1 + eend 0 + fi + elif ! [ -e /proc/sys/dev/sensors ]; then + ebegin " Loading i2c-proc" + modprobe i2c-proc >/dev/null 2>&1 + if [ ${?} != 0 ]; then + eerror " Could not load i2c-proc!" + eend 1 + fi + [ -e /proc/sys/dev/sensors ] || return 1 + eend 0 + fi + + i=0 + while true; do + module=`eval echo '$'MODULE_${i}` + module_args=`eval echo '$'MODULE_${i}_ARGS` + if [ -z "${module}" ]; then + break + fi + ebegin " Loading ${module}" + modprobe ${module} ${module_args} >/dev/null 2>&1 + eend $? + i=$(($i+1)) + done + fi + + if [ "${INITSENSORS}" = "yes" ]; then + if ! [ -f /etc/sensors3.conf ]; then + eerror "/etc/sensors3.conf does not exist!" + return 1 + fi + + ebegin "Initializing sensors" + /usr/bin/sensors -s >/dev/null 2>&1 + eend ${?} + fi +} + +stop() { + checkconfig || return 1 + + if [ "${LOADMODULES}" = "yes" -a -f /proc/modules ]; then + einfo "Unloading lm_sensors modules..." + + # find the highest possible MODULE_ number + i=0 + while true; do + module=`eval echo '$'MODULE_${i}` + if [ -z "${module}" ] ; then + break + fi + i=$(($i+1)) + done + + while [ ${i} -gt 0 ]; do + i=$(($i-1)) + module=`eval echo '$'MODULE_${i}` + ebegin " Unloading ${module}" + rmmod ${module} >/dev/null 2>&1 + eend $? + done + + if [ -e /proc/sys/dev/sensors ] ; then + ebegin " Unloading i2c-proc" + rmmod i2c-proc >/dev/null 2>&1 + eend $? + fi + fi +} |