随笔分类 - Linux网络内核协议栈
摘要:设备注册于设备除名 设备注册与设备除名一般有register_netdev和unregister_netdev完成。这两个是包裹函数,负责上锁,真正起作用的是其调用的register_netdevice和unregister_netdevice。参见:net/core/dev.c。 下图描述了设...
阅读全文
摘要:副标题:设备注册相关的基本结构的原理框架设备注册与删除时间 设备在下列两种情况下进行注册:1)加载NIC驱动时2)插入热插拔设备时 这里NIC与热插拔设备有些不同。a.对于非热插拔NIC来说,NIC的注册是伴随着其驱动的发生的,而NIC可以内建到内核,也可以作为模块载入,如果内建入内核,则NIC设备...
阅读全文
摘要:引导期间的内核选项 Linux允许用户把内核配置选项传给引导记录,再有引导记录传给内核,以便对内核进行调整。 start_kernel中调用两次parse_args,用于引导期间配置用户输入数据。 parse_param是一个函数,用于解析输入的内核配置选项的参数字符串。字符串的格式为:name...
阅读全文
摘要:概述 内核的PCI子系统(即PCI层)提供了不同设备一些通用的功能,以便简化各种设备驱动程序。 PCI层重要结构体如下:pci_device_id 设备标识,根据PCI标志定义的ID,而不是Linux本地的。pci_dev 类似于网络设备的net_device。每个PCI会被分配一个net_...
阅读全文
摘要:概述 内核的初始化过程过程中,与网络相关的工作如下所示: 内核引导时执行start_kernel,start_kernel结束之前会调用rest_init,rest_init初始化内核线程init(在Linux3-12中为kernel_init)。asmlinkage void __init st...
阅读全文
摘要:概述: 内核空间与用户空间经常需要进行交互。举个例子:当用户空间使用一些配置命令如ifconfig或route时,内核处理程序就要响应这些处理请求。 用户空间与内核有多种交互方式,最常用的有以下四种:通过/proc虚拟文件系统,通过/sys虚拟文件系统,通过ioctl系统调用,通过Netlink...
阅读全文
摘要:为什么要有内核通知表链: Linux由多个相互依赖的子系统组成。其中一些子系统可能需要对其他子系统的一些事件感兴趣。这样子系统之间需要一些通信机制来实现这一功能。 在接触Notification Chain之前,我们可能想到通过轮询来实现,事件发生时,子系统轮询所有其他的子系统,看看有没有对这一事...
阅读全文

浙公网安备 33010602011771号