netdev_priv
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相关推荐
- netdev_priv() 函数
netdev_priv()函数的内部实现如下: static inline void *netdev_priv(const struct net_device *dev) {return (char ...
- Linux TCP/IP协议栈笔记
数据包的接收 作者:kendo Kernel:2.6.12 一.从网卡说起 这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析.这里以Intel的e100驱动为例进行分析 ...
- I210网卡LINUX的mac,linux i210 网卡驱动解读
从最常见的修改mac address 说起: section 1: 读mac address /* Only the MAC addr is required to be present in the ...
- Linux NAPI/非NAPI
本文主要介绍二层收包流程,包括NAPI与非NAPI方式: NAPI:数据包到来,第一个数据包产生硬件中断,中断处理程序将设备的napi_struct结构挂在当前cpu的待收包设备链表softnet_d ...
- 精彩---rtl8139网卡驱动程序分析
学习应该是一个先把问题简单化,再把问题复杂化的过程.一开始就着手处理复杂的问题,难免让人有心惊胆颤,捉襟见肘的感觉.读Linux网卡驱动 也是一样.那长长的源码夹杂着那些我们陌生的变量和符号,望而生畏 ...
- 网卡驱动和队列层中的数据包接收
一.从网卡说起 这并非是一个网卡驱动分析的专门文档,只是对网卡处理数据包的流程进行一个重点的分析.这里以Intel的e100驱动为例进行分析. 大多数网卡都是一个PCI设备,PCI设备都包含了一个标准 ...
- Linux内核网络数据发送(六)——网络设备驱动
Linux内核网络数据发送(六)--网络设备驱动 1. 前言 2. 驱动回调函数注册 3. `ndo_start_xmit` 发送数据 4. `igb_tx_map` 1. 前言 本文主要介绍设备通过 ...
- linux内核网络协议栈--监控和调优:发送数据(三十)
译者序 本文翻译自 2017 年的一篇英文博客 Monitoring and Tuning the Linux Networking Stack: Sending Data.如果能看懂英文,建议阅读原 ...
- KVM Vhost-net 和 Virtio-net代码详解(十八)
场景 Host上运行qemu kvm虚拟机,其中虚拟机的网卡类型为virtio-net,而Host上virtio-net backend使用vhost-net 数据包进入虚拟机代码分析 首先看vhos ...
- DPDK vhost-user之前后端通知机制场景分析(十)
所谓前后端通知,必然涉及两个方向:前端通知后端,后端通知前端.而我们知道vhost有txq和rxq,对于每种queue都伴随有这两种通知.而通知方式又根据是否支持event_idx有着不同的实现,最后 ...
最新文章
- 【译】SQL Server误区30日谈-Day1-正在运行的事务在服务器故障转移后继续执行
- 微生物组——宏基因组分析专题培训开课啦!!!
- MySQL数据库root账户密码忘记两种处理方法转载
- 经典排序算法 - 鸽巢排序Pigeonhole sort
- 蓝桥杯2016初赛-网友年龄-枚举
- java tcp 仿真工具_MODBUS-TCP Client Tester(免费从站仿真工具)V1.01 最新版
- linux 安卓svn,linux安装svn
- VB连接oracle数据库
- C++编写的在控制台界面操作的吃豆子游戏的代码
- android 让程序在后台运行,android – 如何让我的应用程序在后台运行?
- html 标签的语义化
- python核心技术与实战,Python核心技术与实战——十五|深入了解迭代器和生成器...
- mysql perl教程_使用 Perl 的 MySQL 事务
- PDF转PNG高清不失帧
- un4 unreal4 创建路径 曲线 管道 Spline组件 使用方法
- 中国移动号码手机开机以及注册gprs流程
- 基于ug的框架断路器抽屉座运动仿真
- 昨日关注:Herb Sutter:告别免费午餐时代,迎接20年来最大编程变革
- 在阿里云服务器部署程序并用域名直接访问
- WPF中的TreeView选中指定节点