123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #! /bin/sh
- #
- # xpp_debug: Turn on/off debugging flags via /sys/module/*/parameters/debug
- #
- modules="xpp xpp_usb xpd_fxs xpd_fxo xpd_bri xpd_pri"
- dbg_names="DEFAULT PCM LEDS SYNC SIGNAL PROC REGS DEVICES COMMANDS"
- usage() {
- echo 1>&2 "Usage: $0 [module_name] [[-]flags...]"
- echo 1>&2 " module_name => $modules"
- echo 1>&2 " flags => NONE $dbg_names ANY"
- echo 1>&2 ""
- echo 1>&2 " Example: $0 xpp ANY -PCM -LEDS"
- echo 1>&2 ""
- }
- sysfs_name() {
- f=''
- if [ -f "/sys/module/$1/parameters/debug" ]; then
- f="/sys/module/$1/parameters/debug"
- elif [ -f "/sys/module/$1/debug" ]; then
- f="/sys/module/$1/debug"
- fi
- echo "$f"
- }
- sysfs_value() {
- f=`sysfs_name "$1"`
- if [ "$f" != "" ]; then
- cat "$f"
- fi
- }
- show_debug() {
- usage
- for i in $modules
- do
- f=`sysfs_name "$i"`
- if [ -f "$f" ]; then
- val=`cat $f`
- j=0
- list=''
- for n in $dbg_names
- do
- if (( val & (1 << j) ))
- then
- list="$list $n"
- fi
- let j++
- done
- if [ "$list" = "" ]; then
- list=' NONE'
- fi
- echo "$i $list"
- fi
- done
- }
- calc_debug() {
- val="$1"
- shift
- for wanted in $*
- do
- j=0
- found=0
- for n in $dbg_names
- do
- if [ "$wanted" = "$n" ]; then
- (( val |= (1 << j) ))
- found=1
- elif [ "$wanted" = -"$n" ]; then
- (( val &= ~(1 << j) ))
- found=1
- elif [ "$wanted" = "ANY" ]; then
- (( val = ~0 ))
- found=1
- elif [ "$wanted" = -"ANY" -o "$wanted" = "NONE" ]; then
- (( val = 0 ))
- found=1
- fi
- let j++
- done
- if [ "$found" -eq 0 ]; then
- echo >&2 "$0: Unknown debug flag '$wanted'"
- exit 1
- fi
- done
- echo $val
- }
- if [ "$#" = 0 ]; then
- show_debug
- exit 0
- fi
- module="$1"
- shift
- if ! echo "$modules" | grep -w "$module" > /dev/null; then
- echo >&2 "$0: Unknown module $module"
- exit 1
- fi
- oldval=`sysfs_value "$module"`
- val=`calc_debug "$oldval" $*`
- file=`sysfs_name $module`
- echo "$val" > "$file"
- show_debug
|