Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3127813
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: 嵌入式

2014-09-05 19:36:52

config_load调用:
/etc/init.d目录下的log和led(config_load system)、6delayd、dhcp
/etc/rc.button目录下rfkill(config_load wireless)
/etc/hotplug.d/tty目录下30-3g(config_load network)
/lib/network/config.sh(config_load network)
/lib/network/switch.sh(config_load network)
/lib/wifi目录下rt2860v2.sh(config_load wireless)
/sbin目录下led.sh(config_load system)
/sbin目录下ifup和ifdown(config_load wireless)


/etc/init.d/led除了调用config_load system外还调用config_foreach load_led led(load_led函数在/etc/init.d/led),
load_led函数读写/sys/class/leds目录下文件实现灯闪烁灯操作。
分析:linux\ramips\base-files\etc\uci-defaults\01_leds(或root-ramips\etc\uci-defaults),系统启动时会将wan和wifi指示灯设置到/etc/config/system文件中。


1.config_load函数:/lib/functions.sh中定义
config_load() {
[ -n "$IPKG_INSTROOT" ] && return 0
uci_load "$@"
}
含义:若IPKG_INSTROOT不为空则调用uci_load函数执行。

2.uci_load函数:/lib/config/uci.sh中定义(该函数只能加载符合lua要求的配置文件,如/etc/config目录下的)。
uci_load() {
local PACKAGE="$1"
local DATA
local RET
local VAR

_C=0
if [ -z "$CONFIG_APPEND" ]; then
for VAR in $CONFIG_LIST_STATE; do
export ${NO_EXPORT:+-n} CONFIG_${VAR}=
export ${NO_EXPORT:+-n} CONFIG_${VAR}_LENGTH=
done
export ${NO_EXPORT:+-n} CONFIG_LIST_STATE=
export ${NO_EXPORT:+-n} CONFIG_SECTIONS=
export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0
export ${NO_EXPORT:+-n} CONFIG_SECTION=
fi

DATA="$(/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} ${LOAD_STATE:+-P /var/state} -S -n export "$PACKAGE" 2>/dev/null)"
RET="$?"
[ "$RET" != 0 -o -z "$DATA" ] || eval "$DATA"
unset DATA

${CONFIG_SECTION:+config_cb}
return "$RET"
}

3.config_foreach函数:/lib/functions.sh中定义
config_foreach() {
local ___function="$1"
[ "$#" -ge 1 ] && shift
local ___type="$1"
[ "$#" -ge 1 ] && shift
local section cfgtype

[ -z "$CONFIG_SECTIONS" ] && return 0
for section in ${CONFIG_SECTIONS}; do
config_get cfgtype "$section" TYPE
[ -n "$___type" -a "x$cfgtype" != "x$___type" ] && continue
eval "$___function \"\$section\" \"\$@\""
done
}

4.config_get函数:/lib/functions.sh中定义
# config_get
阅读(3849) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~