一种用户态获取受限访问信息的方法及装置制造方法及图纸

技术编号:10509530 阅读:175 留言:0更新日期:2014-10-08 12:17
本发明专利技术公开了一种用户态获取受限访问信息的方法及装置,所述方法包括:在Linux内核初始化时,申请大块连续内存作为共享内存使用,并记录该内存的地址和大小;内核创建受限访问信息的数据结构,将该数据结构的存储路径指向所申请的所述共享内存的地址;内核创建线程获取受限访问信息,将获取的受限访问信息赋值给共享内存中受限访问信息的数据结构;用户态在初始化时获取申请的所述共享内存的地址和大小,创建与内核相同的受限访问信息的数据结构,并将所建立的数据结构的存储路径指向共享内存的地址。本发明专利技术的用户态获取受限访问信息的同时将系统的损耗性能降到最低。

【技术实现步骤摘要】
一种用户态获取受限访问信息的方法及装置
本专利技术属于计算机网络
,具体涉及一种用户态获取受限访问信息的方法 及装置。
技术介绍
目前,Linux用户态直接从内核获取的访问信息是受限的,如果用户态要直接从内 核获取那些受限的访问信息,必须采用一些方式才行。例如,Linux内核驱动网络设备时可 以正常获取网络设备的接口状态,如网络设备接口的up/down状态、速率、双工状态以及接 口收发包统计等,虽然对于网络设备的用户态收发包已经很普遍,但是针对内核驱动的设 备,用户态无法直接读取硬件寄存器,导致用户态无法直接获取网络设备的接口状态,即网 络设备接口状态发的直接访问受到限制。所以用户态需要通过一些方式(如ioctl方式) 从内核获取网络设备的接口状态,但是网络设备接口的up/down状态的获取往往需要不断 地扫描函数,而频繁的ioctl操作会损耗大量的系统性能,还会影响收发性能。 因此,有必要提供一种用户态获取受限访问信息的方法及装置,能够满足用户态 对受限访问信息的感知需求,同时可以减小对系统性能的损耗,以解决上述技术问题。
技术实现思路
本专利技术的目的是提供一种用户态获取受限访问信息的方法及装置,能够满足用户 态对受限访问信息的感知需求,同时可以减小对系统性能的损耗,以解决用户态使用其他 通讯方式获取受限访问信息而损耗系统性能的问题。 根据本专利技术的一个方面,提供一种用户态获取受限访问信息的方法,包括以下步 骤:步骤S1,在Linux内核初始化时,申请大块连续内存作为共享内存使用,并记录该内存 的地址和大小;步骤S2,内核创建受限访问信息的数据结构,将该数据结构的存储路径指 向所申请的所述共享内存的地址;步骤S3,内核创建线程获取受限访问信息,将获取的受 限访问信息赋值给共享内存中受限访问信息的数据结构;步骤S4,用户态在初始化时获取 申请的所述共享内存的地址和大小,创建与内核相同的受限访问信息的数据结构,并将所 建立的数据结构的存储路径指向共享内存的地址;步骤S5,用户态创建线程获取共享内存 中的受限访问信息;其中,所述受限访问信息为用户态无法直接从内核获取的信息。 其中,在上述专利技术中,所述创建的受限访问信息的数据结构至少包括:网络设备接 口的up/down状态、速率、双工状态以及接口收发包统计。 其中,在上述专利技术中,所述步骤S3包括:步骤S31,扫描网络设备接口的up/down 状态,并将扫描到的网络设备接口的up/down状态赋值给共享内存中受限访问信息的数据 结构;和/或步骤S32,读取硬件状态寄存器获取相对应的网络设备接口的速率、双工状态 以及接口收发包统计,并将获取的网络设备接口的速率、双工状态以及接口收发包统计赋 值给共享内存中受限访问信息的数据结构。 其中,在上述专利技术中,所述步骤S4包括:步骤S41,用户态初始化时,通过ioctl方 式获取已申请的所述共享内存的地址和大小;步骤S42,采用mmap函数将所述共享内存的 地址映射为用户态可操作的共享内存的虚拟地址;步骤S43,用户态创建与内核相同的受 限访问信息的数据结构;步骤S44,将所建立的数据结构的存储路径指向所述共享内存的 虚拟地址。 其中,在上述专利技术中,所述步骤S1包括:在Linux内核初始化时,通过 Bigphysarea申请大块连续内存作为共享内存使用,并记录该内存的地址和大小。 根据本专利技术的另一个方面,提供一种用户态获取受限访问信息的装置,包括:存 储单元,连接到其他单元并为所连接的单元提供共享内存,以用于其他单元在该共享内存 存储对应的数据;内存申请单元,与所述存储单元相连,用于在Linux内核初始化时从所述 存储单元中申请大块连续内存作为共享内存使用,并记录该内存的地址和大小;数据结构 创建单元,与所述存储单元相连,用于为内核创建受限访问信息的数据结构,将创建的该数 据结构的存储路径指向所述存储单元中共享内存的地址;受限访问信息存储单元,与所述 存储单元相连,用于为内核创建线程获取受限访问信息,将获取的受限访问信息赋值给所 述数据结构创建单元创建的受限访问信息的数据结构,实现受限访问信息存储于所述存储 单元中的共享内存中;受限访问信息获取路径映射单元,与所述存储单元相连,用于在用户 态初始化时,为用户态获取所述存储单元中共享内存的地址和大小,创建与内核相同的受 限访问信息的数据结构,并将所建立的数据结构的存储路径指向所述共享内存的地址;受 限访问信息获取单元,与所述存储单元相连,用于为用户态创建线程,实现用户态获取所述 存储单元中的共享内存中存储的受限访问信息;所述受限访问信息为用户态无法直接从内 核获取的信息。 其中,在上述专利技术中,所述创建的受限访问信息的数据结构至少包括:网络设备接 口的up/down状态、速率、双工状态以及接口收发包统计。 其中,在上述专利技术中,所述受限访问信息存储单元,具体用于扫描网络设备接口 的up/down状态,并将扫描到的网络设备接口的up/down状态赋值给共享内存中受限访问 信息的数据结构;和/或读取硬件状态寄存器获取相对应的网络设备接口的速率、双工状 态以及接口收发包统计,并将获取的网络设备接口的速率、双工状态以及接口收发包统计 赋值给共享内存中受限访问信息的数据结构。 其中,在上述专利技术中,所述受限访问信息获取路径映射单元,具体用于采用_3? 函数将所述共享内存的地址映射为用户态可操作的共享内存的虚拟地址,创建与内核相同 的受限访问信息的数据结构,将所建立的数据结构的存储路径指向所述共享内存的虚拟地 址,来实现将所建立的数据结构的存储路径指向共享内存的地址。 其中,在上述专利技术中,所述内存申请单元通过Bigphysarea申请大块连续内存作 为共享内存使用。 根据本专利技术的一种用户态获取受限访问信息的方法及装置,通过内核获取受限访 问信息并保存在共享内存中,实现用户态获取保存在共享内存中的受限访问信息,满足了 用户态对受限访问信息的感知需求,同时解决了用户态使用其他通讯方式获取受限访问信 息而损耗系统性能的问题。 【附图说明】 图1显示了现有技术中的用户态获取受限访问信息的原理图; 图2显示了本专利技术的用户态获取受限访问信息的原理图; 图3显示了本专利技术优选实施例的用户态获取受限访问信息方法的流程图; 图4显示了图3中步骤S3的子流程图; 图5显示了图3中步骤S4的子流程图; 图6显示了本专利技术优选实施例的用户态获取受限访问信息装置的结构示意图。 【具体实施方式】 为使本专利技术的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参 照附图,对本专利技术进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发 明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本 专利技术的概念。 本专利技术中,受限访问信息包括:网络设备接口状态(如,接口 link up/down状态、 协商出的速率双工状态、接口收发包统计等),硬件的rxmode (接收模式:单播、多播、组播 和混杂),以及硬件状态寄存器的统计(收发包的个数、字节数和错误包数等本文档来自技高网...

【技术保护点】
一种用户态获取受限访问信息的方法,其特征在于,包括:步骤S1,在Linux内核初始化时,申请大块连续内存作为共享内存使用,并记录该内存的地址和大小;步骤S2,内核创建受限访问信息的数据结构,将该数据结构的存储路径指向所申请的所述共享内存的地址;步骤S3,内核创建线程获取受限访问信息,将获取的受限访问信息赋值给共享内存中受限访问信息的数据结构;步骤S4,用户态在初始化时获取申请的所述共享内存的地址和大小,创建与内核相同的受限访问信息的数据结构,并将所建立的数据结构的存储路径指向共享内存的地址;步骤S5,用户态创建线程获取共享内存中的受限访问信息;其中,所述受限访问信息为用户态无法直接从内核获取的信息。

【技术特征摘要】
1. 一种用户态获取受限访问信息的方法,其特征在于,包括: 步骤S1,在Linux内核初始化时,申请大块连续内存作为共享内存使用,并记录该内存 的地址和大小; 步骤S2,内核创建受限访问信息的数据结构,将该数据结构的存储路径指向所申请的 所述共享内存的地址; 步骤S3,内核创建线程获取受限访问信息,将获取的受限访问信息赋值给共享内存中 受限访问信息的数据结构; 步骤S4,用户态在初始化时获取申请的所述共享内存的地址和大小,创建与内核相同 的受限访问信息的数据结构,并将所建立的数据结构的存储路径指向共享内存的地址; 步骤S5,用户态创建线程获取共享内存中的受限访问信息; 其中,所述受限访问信息为用户态无法直接从内核获取的信息。2. 根据权利要求1所述的方法,其特征在于,所述创建的受限访问信息的数据结构至 少包括: 网络设备接口的up/down状态、速率、双工状态以及接口收发包统计。3. 根据权利要求2所述的方法,其特征在于,所述步骤S3包括: 步骤S31,扫描网络设备接口的up/down状态,并将扫描到的网络设备接口的up/down 状态赋值给共享内存中受限访问信息的数据结构;和/或 步骤S32,读取硬件状态寄存器获取相对应的网络设备接口的速率、双工状态以及接口 收发包统计,并将获取的网络设备接口的速率、双工状态以及接口收发包统计赋值给共享 内存中受限访问信息的数据结构。4. 根据权利要求1所述的方法,其特征在于,所述步骤S4包括: 步骤S41,用户态初始化时,通过ioctl方式获取已申请的所述共享内存的地址和大 小; 步骤S42,采用_ap函数将所述共享内存的地址映射为用户态可操作的共享内存的虚 拟地址; 步骤S43,用户态创建与内核相同的受限访问信息的数据结构; 步骤S44,将所建立的数据结构的存储路径指向所述共享内存的虚拟地址。5. 根据权利要求1至4中任一项中所述的方法,其特征在于,所述步骤S1包括: 在Linux内核初始化时,通过Bigphysarea申请大块连续内存作为共享内存使用,并记 录该内存的地址和大小。6. -种用户态获取受限访问信息的装置,其特征在于,包括: 存储单元(10),连接到其他单元并为所连接的单元提供共享内存,以用于其他单元在 该共享内存存储对应的数据; 内存申请单元(1),与所述存储单元(10)相连,用...

【专利技术属性】
技术研发人员:高福亮
申请(专利权)人:汉柏科技有限公司
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1