具体实施方式
本发明可以执行于各种电子装置或系统,例如路由器、非对称式数字用户线(Asymmetric Digital Subscriber Line,简称ADSL)装置、缆线调制解调器(cablemodem)、以及机上盒(Set Top Box)。
参阅图2,电子系统200包括非挥发性内存(Nonvolatile Memory)210、处理器220、主存储器230及通讯单元240。通讯单元240可以包括通讯端口及通讯相关的组件,例如无线通讯的控制器及天线、ADSL装置中的数字讯号处理器(Digital Signal Processor)及模拟至数字转换器(Analog-to-DigitalConverter)、缆线调制解调器中的调谐器(tuner)、以太网络(Ethernet)控制器、通用串行总线(Universal Serial Bus,USB)控制器及/或外围组件互联标准(Peripheral Component Interconnect,PCI)控制器。处理器220可以由集成电路(Integrated Circuit,简构IC)组成,用以处理数据及执行程序。处理器10可以是由单颗封装的IC所组成,或连接多颗封装的IC而组成。举例来说,处理器10可以仅包括中央处理器(Central Processing Unit,简称CPU),或者是CPU、通讯控制器的组合。所述的通讯控制器用以控制电子系统200中的各组件的通讯,或电子系统200与外部装置的通讯。在不同的实施方式中,所述各种通讯组件可以整合在通讯单元240或处理器220之中。
主存储器230可以包括各种随机存取内存(Random Access Memory,简称RAM);非挥发性内存210的实例如电子可抹除可程序化只读存储器(Electrically Erasable Programmable ROM,简称EEPROM)或闪存(FlashMemory)。非挥发性内存210包括电子系统200的操作系统及应用程序。非挥发性内存210中的程序及数据可以数据压缩的形式储存,待需执行或使用时再解压缩至主存储器230。
请参照图3,电子系统200可以包括内存100A。内存100A可以是虚拟内存,实际上可以映像至主存储器230及/或非挥发性内存210。内存100A包括用户空间及内核空间。配置参数文件12具有应用程序10c的多个配置参数,其中所述配置参数至少有二个程序使用。
为了达到配置参数共享及同步化的目的,电子系统200的其中一个应用程序(例如图3中的应用程序10c)启动对配置参数文件12的解析程序后,经由内核程序13根据配置参数文件12中各配置参数的关系,以建立配置参数文件12中各配置参数的配置树(例如配置树11d)于内存100A的内核空间。所有要使用到配置树11d中的参数的应用程序皆需通过内核程序13来执行读取或修改。虽然在此实施方式中,配置参数的数据结构为树状结构,但是并非限定于此,也可以利用数组、链接串行(linked list)等数据结构。应用程序10a~10c皆可以通过内核程序13读取或修改配置树11d内的参数,藉此达到配置参数共享与同步化的目的。其具体实施方式请参照图4。
在图4中,电子系统200具有应用程序群组10,其中包括多个应用程序A1~An,其中n为大于1的正整数。应用程序A1~An的实例可包括图3中的应用程序群组10a~10c。电子系统200还具有应用程序接口30、内核程序13提供的系统呼叫32、驱动程序34、及装置档案(device file或device specialfile)36。
应用程序接口30包括软件功能模块库(library),其中包括多个用以解析配置参数文件(例如配置参数文件12)的软件功能模块(function),根据所述解析结果以建立对应配置树的软件功能模块、以及修改及读取配置树及其中参数值的软件功能模块。由于配置树在内核空间中,应用程序接口30的软件功能模块可以利用内核程序13提供的系统呼叫(system call,例如“ioctl”),以驱使内核程序13致动驱动程序34以完成建立或修改配置树群组38中的配置树的动作。配置树群组38包括多个配置树T1~Tm,其中m为大于1的正整数。举例来说,配置树群组38包括图3中的配置树11d。
装置档案在Unix、Linux等以及相类似的操作系统中用以代表特定装置驱动程序及其对应的装置,例如储存于/dev的目录下,使应用程序可以通过标准的输出/输入系统呼叫来与所述装置档案代表的驱动程序互动。在本实施方式中,装置档案36的文件名为“xmlconf”,并且利用装置档案36对应配置树群组38,以代表中的多个配置树。图4中,装置档案36中的设备主代码(majornumber)N1为代表驱动程序34的一个号码,而设备次代码(minor number)N2包括了代表配置树T1~Tm的多个笔号码,每一笔设备次代码代表一个配置树。应用程序群组10中的应用程序、应用程序接口30中的软件功能模块或驱动程序34皆能够通过装置档案36以指定配置树群组38中的特定配置树,并予以读取或修改。
应用程序开启设备文文件/dev/xmlconf就可以找到设备主代码N1,通过设备号就可以请求内核程序13找到并利用驱动程序34。驱动程序34利用一笔设备次代码就可以找到其对应的特定配置树,并根据所述应用程序的请求以修改所述配置树或读取并回传配置参数值给所述应用程序。
装置档案的实例包括字符装置档案(character special file或character device)及区块装置档案(block special file或block device)。字符装置档案对应的字符装置与操作系统以字符为单位来交换数据,而区块装置与操作系统则以较大的数据区块为单位来交换数据。字符装置的实例包括调制解调器(modem)及电话通讯相关的装置。区块装置的实例包括硬式磁盘驱动器及光驱。驱动程序34每次读取配置树上一个节点的配置参数值,所以装置档案36可以是字符装置档案。
实例:
图5显示配置参数文件12的实例,其对应的配置树的一部分显示于图6。配置参数文件12a,其中的配置参数包括在<ConfigTree>与</ConfigTree>之间。<AtmCfg>与</AtmCfg>中间包括异步传输模式(asynchronous transfer mode,简称ATM)相关的设置。<AtmCfgTd>与</AtmCfgTd>之间包括关于ATM连接类型(Link Type)的设置,比如″CBR″表示用恒定的速率连接。<AtmCfgVcc>与</AtmCfgVcc>之间主要包括ATM层的持久虚拟线路(permanent virtualcircuit,简称PVC)参数。<SecCfg>与</SecCfg>之间主要包括网络安全的相关设置。<WirelessCfg>与</WirelessCfg>之间是Wi-Fi(IEEE 802.11)相关的设置。<RouteCfg>与</RouteCfg>之间主要设置电子系统200的静态路由表。<PMapCfg>与</PMapCfg>之间主要是做埠对应(Port Map)用的设置。<SNTPCfg>与</SNTPCfg>之间是设置时间服务器的参数,即与简单网络时间协议(Simple Network Time Protocol,SNTP)服务器相关的参数。<Voice>与</Voice>之间是网络电话(Voice Over Internet Protocol,简称VoIP)相关的设置。<pppsrv_8_35>与</pppsrv_8_35>之间是点对点协议(Point-To-Point Protocol,PPP)连接PPP服务器时的相关设置。<wan_8_35>与</wan_8_35>之间的配置参数主要用于建立广域网络(Wide Area Network,简称WAN)端的接口有关,它和ATM PVC是紧密相关的。
电子系统200中的内核程序13或应用程序皆可以启动配置参数文件12a转换成配置树的工作。举例来说,内核程序13在电子系统200开机时启动配置树的建立。或者,应用程序Ai(其中i为正整数,且1≤i≤n)启动配置树的建立。电子系统200内执行的内核程序13或应用程序A1~An可以利用应用程序接口30将配置参数文件12a转换成特定的数据格式,再交给驱动程序34以建立配置参数文件12a的对应配置树。
请参照图7,当电子系统200内的程序需要建立配置树时,请求执行应用程序接口30中用来建立配置树的软件功能模块(步骤700)。其中所述请求中包对应驱动程序34的装置档案36的名称。所述软件功能模块响应所述程序的请求以分析配置参数文件12a来产生代表配置参数文件12a的结构及其内配置参数值的数据结构(步骤702)。<protocol>卷标中的autoScan属性值可以在步骤702的数据结构中以“protocol.autoScan=enable”来表示。所述软件功能模块再通过电子系统200的操作系统的系统呼叫32以传递所述装置档案36的文件名、所述数据结构及其它数据至内核程序13(步骤704)。内核程序13根据所述文件名取得装置档案36中的设备主代码N1,再根据设备主代码N1取得驱动程序34,并将所述数据结构交给驱动程序34,使驱动程序34开始建立所述数据结构对应的配置树(步骤706)。驱动程序34新增设备次代码N2以作为将要建立的配置树的代码(步骤708),并根据所述数据结构以建立配置参数文件12a对应的配置树Tj(其中j为正整数,且1≤j≤m)(步骤710)。
图6显示配置参数文件12a中的区块B1转换成配置树的示意图。区块B1中<SystemInfo>与</SystemInfo>标签以“SystemInfo”为名,其间包括了以“protocol”、“sysLog”及“sysUserName”为名的标签。因此,在被程序请求的情况下,驱动程序34会在配置参数文件12a对应的配置树中建立“SystemInfo”、“protocol”、“sysLog”及“sysUserName”对应的节点,且“SystemInfo”为“protocol”、“sysLog”及“sysUserName”等节点的父节点。“protocol”标签包括“autoScan”、“upnp”、“igmpSnp”、“igmpMode”、macFilterPolicy”、“encodePassword”及“enetwan”的属性,相应地,驱动程序34会建立“autoScan”、“upnp”、“igmpSnp”、“igmpMode”、“macFilterPolicy”、“encodePassword”及“enetwan”等节点作为“protocol”节点的子节点,且每个属性对应的节点中包括其属性值。同理,驱动程序34也会建立“sysLog”及“sysUserName”节点的子节点,以及所述配置树的其它节点。
在配置树Tj建立之后,其它的程序就可以读取或修改配置树Tj的节点内的配置参数值。请参照图8,当电子系统200内的程序需要修改配置树中的特定节点(以下称为目标节点)时,请求执行应用程序接口30中用来修改配置树的软件功能模块(步骤800)。其中所述请求中包括对应驱动程序34的装置档案36的名称、新的配置参数值及其它数据。举例来说,执行PPP的程序或动态主机组态协议(Dynamic Host Configuration Protocol,简称DHCP)的程序从WAN取得电子系统200的新的IP地址作为新的配置参数值,随后更新配置树Tj中用来记录电子系统200的IP地址的目标节点中的IP地址。应用程序可以在步骤800的所述请求中指明所述目标节点的名称及从配置树Tj至所述目标节点的路径,其中所述路径包括目标节点的父节点及祖先节点的名称。
所述软件功能模块响应所述程序的请求,通过电子系统200的操作系统的系统呼叫将所述请求中的文件名、目标节点名称及新的配置参数值传递给内核程序13(步骤802)。内核程序13根据所述文件名取得装置档案36中的设备主代码N1,再根据设备主代码N1取得驱动程序34,并将所述新的配置参数值交给驱动程序34,使驱动程序34更新配置树Tj中目标节点内的配置参数值(步骤804)。驱动程序34取得配置树Tj中的所述目标节点(步骤806),并以所述新的配置参数值来更新目标节点内的配置参数值(步骤808)。步骤806中,驱动程序34可以根据所述目标节点的路径以取得所述目标节点,或搜寻配置树Tj以取得。
在图6中配置树Tj的例子上,电子系统200的IP地址是从区块B2中的“entry1”标签的address=“192.168.1.1”的属性取得的。在所述IP地址更新后,电子系统200中的防火墙程序可以从配置树Tj读取电子系统200的IP地址,并根据所述节点中新的IP地址以执行其任务。电子系统200的网络地址变换(network address translation,NAT)程序根据所述节点中新的IP地址以执行NAT。
请参照图9,当电子系统200内的程序需要读取配置树中的特定节点(以下称为目标节点)时,请求执行应用程序接口30中用来读取配置树的软件功能模块(步骤900)。其中所述请求中包对应驱动程序34的装置档案36的名称及目标节点的名称。应用程序可以在步骤900的所述请求中指明从配置树Tj至所述目标节点的路径,其中所述路径包括目标节点的父节点及祖先节点的名称。
所述软件功能模块响应所述程序的请求,通过电子系统200的操作系统的系统呼叫将所述请求中的文件名及目标节点的名称传递给内核程序13(步骤902)。内核程序13根据所述文件名取得装置档案36中的设备主代码N1,再根据设备主代码N1取得驱动程序34,并将目标节点的名称交给驱动程序34,使驱动程序34取得配置树Tj中所述目标节点内的配置参数值(步骤904)。驱动程序34根据目标节点的名称取得配置树Tj中的所述目标节点(步骤906),并将目标节点内的配置参数值回传给内核程序13(步骤908)。内核程序13再将目标节点内的配置参数值回传给请求读取的程序(步骤910)。步骤906中,驱动程序34可以根据所述目标节点的路径以取得所述目标节点,或搜寻配置树Tj以取得。
利用所述系统结构及方法,电子系统200内的应用程序A1~An及内核程序13可以共享并同步配置参数。其它的实例如,电子系统200包括系统设定程序。系统设定程序允许的用户名称记录在图6中“sysUserName”节点的子节点“value”中,用户名称为“admin”。系统设定程序提供使用者接口让使用者设定图6中配置树的配置参数值。电子系统200中的每个程序记录其执行时期相关的事件于记录文件。电子系统200可以将所述记录文件发送至外部服务器供分析之用。电子系统200中的每个程序根据图6中logLevel节点的配置参数值以决定记录于所述记录文件的事件类别。换言之,logLevel的配置参数值决定电子系统200中的多个程序记录事件的详细程度。“sysUserName”及“logLevel”节点的配置参数值可以利用所述方法被修改及读取。
电子系统200更包括用户认证程序。系统设定程序提供使用者接口让使用者设定可以从远程访问电子系统200的用户的远程装置的网络通讯协议(Internet Protocol,简称IP)地址,并记录于配置参数文件12a中的区块B3,即<TelnetAcl>与</TelnetAcl>之间。区块B3中的配置参数转换成配置树Tj中的节点后,系统设定程序可以增加、删除或修改所述节点中的IP地址。用户认证程序利用配置树Tj的所述节点(未图标)中的IP地址以容许或拒绝用户使用的远程装置连接至电子系统200。
本发明提供的方法可以克服现有方法的不足。利用所述系统结构及方法,电子系统内的应用程序及内核程序可以共享并同步配置参数。所述方法可以广泛应用于Linux/Unix环境下或其它的操作系统环境下的程序开发。