买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:杭州迪普科技股份有限公司
摘要:本公开涉及一种在内核态与用户态之间交换报文的系统以及方法。该系统包括:关联创建组件,用于创建文件操作结构体,以便将系统调用组件和设备驱动组件关联起来,从而使得文件操作结构体中的每一个成员的名字都对应着一个调用;接口创建组件,用于创建内核与用户之间的交换接口,以便执行用户访问系统内核数据的操作,从而使得内核空间和用户空间进行信息交互;报文交换组件,用于基于用户指令,启动所述交换接口,通过执行文件操作结构体的系统调用,读取文件操作结构体中相应的函数指针,以便接着把控制权转交给函数,从而完成了设备驱动。
主权项:1.一种在内核态与用户态之间交换报文的系统,该系统包括:关联创建组件,用于创建文件操作结构体,以便将系统调用组件和设备驱动组件关联起来,从而使得文件操作结构体中的每一个成员的名字都对应着一个调用;接口创建组件,用于创建内核与用户之间的交换接口,以便执行用户访问系统内核数据的操作,从而使得内核空间和用户空间进行信息交互,所述交换接口是一个名称为channel_net_dev文件的proc文件,其结构为:proc_create"channel_net_dev",00777,NULL,g_netdev_fops,所述channel_net_dev文件指定了读写函数drv_netdev_read和drv_netdev_write如下:conststructfile_operationsg_netdev_fops={.owner=THIS_MODULE,.read=drv_netdev_read,.write=drv_netdev_write,.open=drv_netdev_open,.release=drv_netdev_release,.unlocked_ioctl=drv_netdev_ioctl,};由此在用户态打开channel_net_dev文件后调用读函数来调用内核态的drv_netdev_read来将数据从内核空间传递到用户空间,和通过调用写函数模块来调用内核态的drv_netdev_write函数模块以将数据从用户空间传递到内核空间;报文交换组件,用于基于用户指令,启动所述交换接口,通过执行文件操作结构体的系统调用,读取文件操作结构体中相应的函数指针,以便接着把控制权转交给函数,从而完成了设备驱动,内核结构体创建组件,用于创建如下结构的内核态structdrv_netdev_info_s结构体:structdrv_netdev_info_s{structsk_buff_headskb_list;wait_queue_head_ttx_wait;};该内核态结构体用于保存内核发包链表skb_list和发包等待队列tx_wait,其中在系统启动并完成初始化之后,在用户态下创建一个user_netdev_hard_xmit_thread进程,该进程用于通过内核态structdrv_netdev_info_s结构体保存的内核发包链表和发包等待队列信息来监控内核是否有发包,其中所述user_netdev_hard_xmit_thread进程以阻塞的方式打开channel_net_dev文件,并以死循环的方式重复调用read函数模块,进而调用内核态的drv_netdev_read函数模块,所述内核态的drv_netdev_read函数模块每次被调用都将当前进程加入到等待队列tx_wait中,在调用读函数模块之前,进程从用户态的一个内存池中取出一块内存空间,并将内存空间的首地址pkb通过read函数的第二个参数__user传递到drv_netdev_read,当内核没有发包时,进程在drv_netdev_read函数模块中阻塞而不再往下执行。
全文数据:
权利要求:
百度查询: 杭州迪普科技股份有限公司 在内核态与用户态之间交换报文的系统和方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。