2019独角兽企业重金招聘Python工程师标准>>>

#define NETDEV_ALIGN        32
#define NETDEV_ALIGN_CONST  (NETDEV_ALIGN - 1)static inline void *netdev_priv(struct net_device *dev)
{return (char *)dev + ((sizeof(struct net_device)+ NETDEV_ALIGN_CONST)& ~NETDEV_ALIGN_CONST);
}

其中,

(sizeof(struct net_device) + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST

该句的运算结果:

当 0 < sizeof(struct net_device) <= 32,结果为32;

当 32 < sizeof(struct net_device) <= 64,结果为64;

当 64 < sizeof(struct net_device) <= 96,结果为96;

。。。。

由此可见该句是为了保证运算结果为32的整数倍。

以下是自己的理解:

NETDEV_ALIGN_CONST的值为31,取反之后就是 1111 1111 1111 1111 1111 1111 1110 0000,该值和任何一个数字做 & 运算,结果一定是32的整数倍。

至于此处为什么要取32的整数倍,楼主表示还没有研究透彻,待续吧。。。

转载于:https://my.oschina.net/jhdoctor/blog/278670

netdev_priv相关推荐

  1. netdev_priv() 函数

    netdev_priv()函数的内部实现如下: static inline void *netdev_priv(const struct net_device *dev) {return (char ...

  2. Linux TCP/IP协议栈笔记

    数据包的接收 作者:kendo Kernel:2.6.12 一.从网卡说起 这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析.这里以Intel的e100驱动为例进行分析 ...

  3. I210网卡LINUX的mac,linux i210 网卡驱动解读

    从最常见的修改mac address 说起: section 1: 读mac address /* Only the MAC addr is required to be present in the ...

  4. Linux NAPI/非NAPI

    本文主要介绍二层收包流程,包括NAPI与非NAPI方式: NAPI:数据包到来,第一个数据包产生硬件中断,中断处理程序将设备的napi_struct结构挂在当前cpu的待收包设备链表softnet_d ...

  5. 精彩---rtl8139网卡驱动程序分析

    学习应该是一个先把问题简单化,再把问题复杂化的过程.一开始就着手处理复杂的问题,难免让人有心惊胆颤,捉襟见肘的感觉.读Linux网卡驱动 也是一样.那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏 ...

  6. 网卡驱动和队列层中的数据包接收

    一.从网卡说起 这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析.这里以Intel的e100驱动为例进行分析. 大多数网卡都是一个PCI设备,PCI设备都包含了一个标准 ...

  7. Linux内核网络数据发送(六)——网络设备驱动

    Linux内核网络数据发送(六)--网络设备驱动 1. 前言 2. 驱动回调函数注册 3. `ndo_start_xmit` 发送数据 4. `igb_tx_map` 1. 前言 本文主要介绍设备通过 ...

  8. linux内核网络协议栈--监控和调优:发送数据(三十)

    译者序 本文翻译自 2017 年的一篇英文博客 Monitoring and Tuning the Linux Networking Stack: Sending Data.如果能看懂英文,建议阅读原 ...

  9. KVM Vhost-net 和 Virtio-net代码详解(十八)

    场景 Host上运行qemu kvm虚拟机,其中虚拟机的网卡类型为virtio-net,而Host上virtio-net backend使用vhost-net 数据包进入虚拟机代码分析 首先看vhos ...

  10. DPDK vhost-user之前后端通知机制场景分析(十)

    所谓前后端通知,必然涉及两个方向:前端通知后端,后端通知前端.而我们知道vhost有txq和rxq,对于每种queue都伴随有这两种通知.而通知方式又根据是否支持event_idx有着不同的实现,最后 ...

最新文章

  1. 【译】SQL Server误区30日谈-Day1-正在运行的事务在服务器故障转移后继续执行
  2. 微生物组——宏基因组分析专题培训开课啦!!!
  3. MySQL数据库root账户密码忘记两种处理方法转载
  4. 经典排序算法 - 鸽巢排序Pigeonhole sort
  5. 蓝桥杯2016初赛-网友年龄-枚举
  6. java tcp 仿真工具_MODBUS-TCP Client Tester(免费从站仿真工具)V1.01 最新版
  7. linux 安卓svn,linux安装svn
  8. VB连接oracle数据库
  9. C++编写的在控制台界面操作的吃豆子游戏的代码
  10. android 让程序在后台运行,android – 如何让我的应用程序在后台运行?
  11. html 标签的语义化
  12. python核心技术与实战,Python核心技术与实战——十五|深入了解迭代器和生成器...
  13. mysql perl教程_使用 Perl 的 MySQL 事务
  14. PDF转PNG高清不失帧
  15. un4 unreal4 创建路径 曲线 管道 Spline组件 使用方法
  16. 中国移动号码手机开机以及注册gprs流程
  17. 基于ug的框架断路器抽屉座运动仿真
  18. 昨日关注:Herb Sutter:告别免费午餐时代,迎接20年来最大编程变革
  19. 在阿里云服务器部署程序并用域名直接访问
  20. WPF中的TreeView选中指定节点

热门文章

  1. 常用的Linux的命令
  2. 教你React Native使用fetch实现图片上传
  3. Android开发技巧:给Button的点击上色
  4. Linux管理员常用网络资源(收集帖)
  5. 玩转SSRS第五篇---客户端报表
  6. hdu 4320 Arcane Numbers 1 多校联合赛(三)第一题
  7. Illustrator 教程,如何在 Illustrator 中描摹对象?
  8. indesign入门教程,如何向母版页添加内容?
  9. 重启 Mac 后停止更改壁纸的 4 种方法
  10. 如何在 Mac 上重命名 Apple Magic Mouse?