本发明专利技术提供一种改善Optware环境下IPKG程序的I/O读写速度的方法,包括步骤:打开NVRAM字符设备;所述NVRAM字符设备在应用层调用mmap机制将内核字符串地址映射到内存地址空间中;所述NVRAM字符设备进行读或写操作。本发明专利技术可实现低耗时、减少I/O打开和关闭、提升高效的读写速度、方便易用的字符设备读取技术;基于NVRAM字符设备操作技术,克服了采用脚本和传统文件读写的I/O操作,while循环加sleep等待脚本执行完成的技术缺点,具有较高的发展前景。
【技术实现步骤摘要】
本专利技术涉及I/O设备领域,尤其涉及一种。
技术介绍
Optware是DD-WRT系统中的一个类似第三方的运行环境,可以和路由器本身的环境共存,该系统存在于支持USB设备的路由器上,并采用IPKG安装包的形式,添加额外的功能,可以对路由器固件进行瘦身,固件只保存基本的u-boot和一些基本的路由功能,将大量的第三方程序以Pkg的形式安装在路由器中,这样势必会产生一个问题,如何读取路由系统中的NVRAM值。现有的技术是通过在Optware环境中添加一个shell脚本,在程序中需要读取某一个NVRAM (Non-VolatiIe Random Access Memory,非易失性随机访问存储器)值时,调用shell script,将NVRAM的NVRAM值传递给脚本,由脚本中调用nvram_get的命令写进一个文件中,接着在程序中在打开这个临时文件,将内容读取出来,这样势必会产生大量的I/O的关闭和打开。目前Optware现有的读取NVRAM的方式,需要耗费大量I/O打开和关闭的动作,还需要添加while循环检查shell script是否已经写完毕,这样程序耗费大量的等待时间,不利于轮询的一些Pkg文件的使用。ipkg的安装都是基于自带USB的路由设备,通过安装第三方的Optware环境,提供对ipkg运行环境的支持。—般的IPkg程序需要读取写入NVRAM的值,需要先调用脚本,传递需要读取的NVRAM的NVRAM值,将值写进临时的文件,在通过读取文件值的方式,在程序中获得对应的值。使用这种情形如果程序一次请求中读取很少的NVRAM,则不会有明显的影响,如果是Iighttpd这种的web服务器使用,在一次请求中需要读取大量的NVRAM值,这会导致⑶I的响应非常缓慢。读取NVRAM字符设备会大大提升I/O读取效率,提高响应速度。
技术实现思路
鉴于上述问题,本申请记载了一种,,包括步骤:打开NVRAM字符设备;所述NVRAM字符设备在应用层调用mmap机制将内核字符串地址映射到内存地址空间中;所述NVRAM字符设备进行读或写操作。较佳的,步骤进行读操作包括步骤:Pkg文件读取一个NVRAM值;从全局变量中读取所述NVRAM值对应偏移量;读取所述偏移量所存取的值。较佳的,步骤进行写操作包括步骤:Pkg文件读取一个NVRAM值;从全局变量中读取所述NVRAM值对应偏移量;在所述偏移量中写入数据。较佳的,所述NVRAM值对应的所述偏移量位于全局变量中。较佳的,所述Pkg文件读取所述NVRAM值后,判断所述全局变量是否已经打开;如果所述全局变量已打开,执行步骤从所述全局变量中读取所述NVRAM值对应的所述偏移量;否则,所述Pkg文件调用打开函数打开所述全局变量,所述全局变量打开后执行步骤从所述全局变量中读取所述NVRAM值对应的所述偏移量。较佳的,所述内核字符串地址映射到内存地址空间的堆区和栈区之间。上述技术方案具有如下优点或有益效果:本专利技术可实现低耗时、减少I/O打开和关闭、提升高效的读写速度、方便易用的字符设备读取技术;基于NVRAM字符设备操作技术,克服了采用脚本和传统文件读写的I/O操作,while循环加sleep等待脚本执行完成的技术缺点,具有较高的发展前景。【附图说明】参考所附附图,以更加充分的描述本专利技术的实施例。然而,所附附图仅用于说明和阐述,并不构成对本专利技术范围的限制。图1为本专利技术一种内核字符串地址映射到内存地址空间的状态示意图;图2为本专利技术一种中进行读操作的流程图;图3为本专利技术一种进行写操作的流程图。【具体实施方式】下面结合附图和具体实施例对本专利技术的进行详细说明。—种,包括步骤:打开NVRAM字符设备;在应用层调用_ap的机制将内核字符串地址映射到内存地址空间中;NVRAM字符设备进行读操作。如图1所示,其中,调用_ap将文件的内容映射到内存地址空间中,所述文件的存储映射部分位于堆区和栈区之间。如图2所示,在NVRAM字符设备进行读操作过程中,具体包括步骤:Pkg文件读取某一个NVRAM值;调用封装的nvram_get,即调用一检测函数;利用所述检测函数判断全局变量nvram_fd是否已经打开;如果全局变量nvram_fd打开时,调用read函数,读取出NVRAM值对应的偏移量offset ;如果全局变量nvram—fd没有打开,调用封装的nvram—init,即调用打开函数,利用所述打开函数打开所述全局变量,之后调用read函数,读取出NVRAM值对应的偏移量offset ;从全局变量nvram_buf中读取对应偏移量所存取的值value。在该过程中,首先判断全局变量nvram_fd是否已经打开,如果打开则调用read函数,读取出NVRAM值对应的偏移量offset,最后从全局变量nvram_buf中读取对应偏移量所存取的value,即可完成一次读取。如图3所示,在NVRAM字符设备进行写操作过程中,具体包括步骤:Pkg文件读取某一个NVRAM值;调用封装的nvram_get,即调用一检测函数;利用所述检测函数判断全局变量nvram_fd是否已经打开;如果全局变量nvram_fd打开时,调用read函数,读取出NVRAM值对应的偏移量offset ;如果全局变量nvram_fd没有打开,调用封装的nvram_init,即调用打开函数,利用所述打开函数打开所述全局变量,之后调用read函数,读取出NVRAM值对应的偏移量offset ;在偏移量offset中写入值value。本专利技术主要在Optware环境的Pkg文件中添加NVRAM字符设备的打开、读、写和关闭的操作。打开的动作实现一次打开字符设备的文件描述符,并映射内核字符串到用户空间,读的操作和正常的文件读操作一致,由系统的read调用至NVRAM字符设备的read操作函数,实现读取对应NVRAM的NVRAM值的偏移地址,从对应的映射到用户空间的字符串中查找对应偏移量的值返回给调用者,完成一次读取的动作,写的方式类似。本专利技术使用NVRAM字符设备的操作应用到Optware环境对应的Pkg文件中,实现一次打开一次关闭的高效读写方式,使Optware环境的Pkg文件也可以正常读取NVRAM值。本专利技术可实现低耗时、减少1/0打开和关闭、提升高效的读写速度、方便易用的字符设备读取技术;基于NVRAM字符设备操作技术,克服了采用脚本和传统文件读写的1/0操作,while循环加sleep等待脚本执行完成的技术缺点,具有较高的发展前景。对于本领域的技术人员而言,阅读上述说明后,各种变化和修正无疑将显而易见。因此,所附的权利要求书应看作是涵盖本专利技术的真实意图和范围的全部变化和修正。在权利要求书范围内任何和所有等价的范围与内容,都应认为仍属本专利技术的意图和范围内。【主权项】1.一种,其特征在于,包括步骤: 打开NVRAM字符设备; 所述NVRAM字符设备在应用层调用_ap机制将内核字符串地址映射到内存地址空间中; 所述NVRAM字符设备进行读或写操作。2.根据权利要求1所述的,其特征在于,所述进行读操作的步骤包括: Pkg文件读取一个NVRAM值; 读取所述NVRAM值对应偏移量; 读取所述偏移量所存取的值。3.根据权利要求1所本文档来自技高网...
【技术保护点】
一种改善Optware环境下IPkg程序的I/O读写速度的方法,其特征在于,包括步骤:打开NVRAM字符设备;所述NVRAM字符设备在应用层调用mmap机制将内核字符串地址映射到内存地址空间中;所述NVRAM字符设备进行读或写操作。
【技术特征摘要】
【专利技术属性】
技术研发人员:陶成军,
申请(专利权)人:上海斐讯数据通信技术有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。