天天看点

高性能网络I/O框架-netmap源码分析(4) 高性能网络I/O框架-netmap源码分析(4)

作者:[email protected]

博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net

微博:weibo.com/glinuxer

QQ技术群:4367710

前面的文章学习了netmap对驱动的修改,以及netmap的初始化和加载。接下来就要从netmap的使用,自上而下的学习分析一下netmap的代码了。

netmap的网站上给出了一个简单的例子——说简单,其实也涵盖了netmap的框架的调用。

咱们还是一路走来,走到哪看到哪。

这个其实跟netmap没有多大关系。记得前文中的netmap注册了一个misc设备netmap_cdevsw吗?

netmapcdevsw为对应的设备结构体定义,netmapfops为对应的操作函数。这里面没有自定义的open函数,那么应该就使用linux内核默认的open——这个是我的推测,暂时不去查看linux代码了。

ioctl就是内核的一个垃圾桶啊,什么都往里装,什么都能做。

进入netmap_ioctl,真正的netmap的ioctl处理函数

为了流程的清楚,对于netmap_ioctl的分析就到这里。依然按照之前的使用的流程走。

写到这里我发现netmap网站给的实例应该是老古董了。按照netmap当前的代码,上面的例子根本无法使用。不过木已成舟,大家凑合意会理解这个例子吧,还好流程没有太大的变化。

既然示例代码不可信了,那么就按照ioctl支持的命令顺序,来分析netmap吧。

用于返回netmap的基本信息

将特定的网卡设置为netmap模式

这个NIOCREGIF太长了,其它的case留到下一篇吧

http://info.iet.unipi.it/~luigi/netmap/ http://www.manualpages.de/FreeBSD/FreeBSD-8.3-RELEASE/man4/netmap.4.html

继续阅读