博客: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