发明名称 一种多个应用共享一个缓冲区的报文接收方法
摘要 本发明提供了一种多个应用共享一个缓冲区的报文接收方法。硬件网卡的PCI控制器向主机注册PCI空间,驱动软件申请一个报文缓冲区,对缓冲区设置一个写指针和多个读指针寄存器,每个应用单独使用一个,硬件接收报文后移动写指针,接口库映射报文缓冲区和PCI空间寄存器,应用软件调用接口库时确定自己的读指针,之后通过移动自己的读指针接收报文。本发明使多个应用可以利用一个共享缓冲区从网络接收报文,从而避免多应用收包时的报文拷贝或二次分发开销。
申请公布号 CN102006241A 申请公布日期 2011.04.06
申请号 CN201010597759.4 申请日期 2010.12.17
申请人 天津曙光计算机产业有限公司 发明人 刘朝辉;刘兴奎;窦晓光;李锋伟;刘灿
分类号 H04L12/56(2006.01)I 主分类号 H04L12/56(2006.01)I
代理机构 北京安博达知识产权代理有限公司 11271 代理人 徐国文
主权项 一种多个应用共享一个缓冲区的报文接收方法,其特征在于:包括硬件网卡、驱动软件、接口库软件,方法如下:A、硬件网卡的PCI控制器向主机注册PCI空间,定义接收报文相关的寄存器地址;PCI空间寄存器有:报文缓冲区地址、长度、软件从缓冲区读报文的读指针、硬件向缓冲区写报文的写指针,其中读指针有多个,每个应用有自己的读指针;B、驱动软件申请连续的物理内存,作为接收报文的缓冲区,并把缓冲区的物理地址和长度写入PCI空间的对应寄存器,并设置硬件的写指针和所有应用软件的读指针为初始值0;C、硬件网卡每次从网络接收到一个报文后,把报文传输到软件的报文缓冲区中,并根据报文长度,修改PCI空间的写指针;D、接口库中的API接口被一个应用调用时,首先把内核空间的缓冲区和硬件的PCI空间映射到该应用的用户空间,然后根据该应用是第几个应用,把PCI空间的第几个软件读指针寄存器作为该应用的读指针寄存器使用;E、应用软件循环收包,每次收包都要查看接口库中映射出的PCI空间寄存器,判断硬件写指针是否等于软件的读指针,如果不相等,则说明读指针和写指针之间是新的报文,则读取出来,并移动读指针;如果读指针追上了写指针,则说明缓冲区内报文已经全部读出,则等待一个时间片后,进行下一次轮询。
地址 300384 天津市西青区华苑产业区(环外)海泰华科大街15号1-3层