还有一个问题,zero-copy 肯定需要一次性分配很多连续的内存空间,用__get_free_pages一次好像只能得到1024个页面,即4Mbyte,lenn是怎么得到更多的内存空间的呢?
哈哈,你好笨哦,一次2M,多分配几次,搞个数组或者list存起来不就可以了么,干嘛还想着改核心参数阿,那样会带来不稳定的因素的.
有时候最笨的方法是最有效的,呵呵.
你把协议栈移植到用户空间,是你的想法还是你们的项目阿,这个好像比较困难吧.如果有钱,咱们一起研究下,哈哈. 汗!
1.list多麻烦啊.
2.现在正在想怎么搞,是我的项目,可以一起搞出来去收钱啊,哈哈.现在在关注互联网.哎,时间啊,时间,太少 谢谢分享!!! 怎么下吧 谢谢,我还是先学点内核,再去学驱动就轻松点,不敢贪多 好东东,收藏
提个小意见
文档写得不错.不过可能老兄不懂硬件,e100驱动实际上是intel8255x系列以太网控制器的驱动,并没有使用DMA,而是直接使用PCI内存读写命令来完成系统内存操作的.另外,对于以太网性能要求比较高的,以太网性能要求比较高的,建议直接使用查询方式.比较合理的次数是每秒2000次左右.
至于内存的分配,参考sk_buff的做法,创建一个高速缓存来实行就行了,kmem_cache_create/kmem_cache_alloc,只要你内存足够大....... 谢谢