Welcome 微信登录

首页 / 数据库 / MySQL / linux-2.6.22中API结构体的变化

主要是昨天在搞Hacking Linux Network Stack的时候,发现里面的代码,不能够在2.6.22下编译通过,并且提示找不到nh这个成员,我猜想一定是结构体发生了变化。查看/include/linux/skbuff.h发现没有了原先的联合h,nh和mac。

union {
struct tcphdr *th;
struct udphdr *uh;
struct icmphdr *icmph;
struct igmphdr *igmph;
struct iphdr *ipiph;
struct ipv6hdr *ipv6h;
unsigned char *raw;
} h;

union {
struct iphdr *iph;
struct ipv6hdr *ipv6h;
struct arphdr *arph;
unsigned char *raw;
} nh;

union {
unsigned char *raw;
} mac;

换成了
sk_buff_data_t transport_header;
sk_buff_data_t network_header;
sk_buff_data_t mac_header;

本身我并不是很支持联合的使用,即使它能够节省内存,但是实际运行时候还是有一定的时空开销的。这一改变将会导致很多程序不能够在2.6.22下使用,比如VMWare;几乎所有的网卡驱动需要打patch。感觉从2.6.18之后的变化比较大,看Kernel还是选择2.6.18比较合适。

另外,ktime替换掉了jiffies,这也算是网络部分改变比较大的一个地方了。嵌入式Linux全攻略 ACE程序移植过程详细讲解windows访问远程linux下mysql乱码问题相关资讯      linux-2.6.22  API 
  • 优秀API设计的十大原则  (09/24/2015 10:32:57)
  • 计算机科学家要求最高法院裁决API  (11/11/2014 17:21:59)
  • APIs.io:用来发布和发现API的利器  (11/22/2014 18:27:27)
  • 如何在Liunx中“快速阅读”?  (05/07/2014 05:43:25)
本文评论 查看全部评论 (0)
表情: 姓名: 字数