linux3.3.8 网络设备Net_dev_init初解析

本文详细解析了Linux网络子系统的初始化过程,包括关键函数的作用与流程,如Dev_proc_init(), netdev_kobject_init()等,深入探讨了软中断机制在网络数据处理中的应用,以及net_rx_action和process_backlog在数据接收中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

该函数所用的全局变量

1:Dev_proc_init()

2:netdev_kobject_init()

3:register_pernet_subsys(&netdev_net_ops)

4:open_softirq(NET_TX_SOFTIRQ, net_tx_action)

5: open_softirq(NET_TX_SOFTIRQ, net_rx_action)

6:net_rx_action收到数据执行的软中断。

7: process_backlog


Net_dev_init(/net/core/dev.c)

该函数所用的全局变量

1:dev_proc_ops

2:first_device 链表

3:net_namespace_list 网络设备链表用于寻找 net设备

4:net_ns_type_operations

1:Dev_proc_init()

其实这个函数就是在文件系统中 proc 中去得到相应的文件

设备功能初始化,其实在内部执行的为register_pernet_subsys(&dev_proc_ops)

在这个函数中其实是执行的 register_pernet_operations(first_device, ops); 这其中其实first_device其实就是一个链表,初始化一个链表的结构体。

这个函数的内部就是__register_pernet_operations(list, ops);

         ----- 目前假定函数宏CONFIG_NET_NS为1

         执行 list_add_tail(&ops->list, list) 表明将 first_device 加入到 dev_proc_ops的list结构中

         For_each_net(net)目前看是在寻找网络,在可执行的网络中,执行ops_init---

其实这个函数目的就是执行Ops->init(net), 寻找加入到net_namespace_list中的网络设备。

他就是执行dev_proc_ops下面的init 函数 dev_proc_net_init(struct net* net)

 

Proc_net_fops_creat( ) ------- 实际调用 proc_create(name, mode, net->proc_net, fops)

这个其实就是在proc 下面创建文件。对应的dev和 softnet_stat, ptype。

Proc/net/ 下对应的 dev, softnet_stat, ptype, wireless.

 

Proc/ net下面可以看到很有有用的信息 上面的几个文件对应的就是可以查看的信息。

 

2:netdev_kobject_init()

在内部执行的为 kobj_ns_type_register(&net_ns_type_operations)

3:register_pernet_subsys(&netdev_net_ops)

暂时没有关注。

4:open_softirq(NET_TX_SOFTIRQ, net_tx_action)

5: open_softirq(NET_TX_SOFTIRQ, net_rx_action)

接受网络数据的中断,先学习哈open_softirq函数

5.1:中断的下半部

         对于一个中断分为上半部和下半部,上半部处理对时间特别敏感一般来说和硬件相关的,并保证不被其他中断打断的任务。而实现下半部分的方法目前有三种方法,软中断,tasklet,工作队列,此处只是用于软中断。

         软中断其实包含了如下的结构:

         1:注册软中断:open_softirq

         2: 触发软中断: raise_softirq

         3: 执行软中断: do_softirq:

         4: 结束软中断

其中初始化时 有如下的init:

    for_each_possible_c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值