生如夏花

专注于工业物联网行业数据采集,嵌入式Linux系统裁剪,5G智慧网关软件开发等

UCI system

UCI,Unified Configuration Interface,统一配置接口,是一个集中配置OpenWrt服务的系统。

UCI是OpenWrt中基于NVRAM配置的继承者,是OpenWrt主要系统功能配置的用户接口,包括网络、无线、日志以及远程访问等等。

OpenWrt之shell脚本处理UCI配置

OpenWRT提供了一些列shell标准接口(config_load, config_get, config_get_bool, config_cb, option_cb, list_cb, config_foreach, config_list_foreach,以便在shell脚本中高效地读取和处理uci配置。

这主要用于在/etc/init.d中写启动脚本。

OpenWRT在/lib/functions.sh文件中提供了访问uci配置的shell接口,因此在使用这些接口之间需要直接或间接(包含rc.common)的方式包含该文件。

uloop源码剖析

uloop是OpenWrt基础库libubox的核心模块,提供事件驱动功能。

其主体框架由uloop_init、uloop_run_timeout和uloop_done三个函数构成,分别完成初始化、事件处理循环和清理工作。

uloop支持五大核心功能:

  1. 文件描述符监控基于epoll实现,通过epoll_wait处理就绪事件;
  2. 定时器事件在循环中检测超时;
  3. 子进程管理响应SIGCHLD信号;
  4. 信号处理通过管道实现;
  5. 间隔定时器依赖文件描述符机制。