为什么Linux内核TCPIP堆栈不使用某些设计模式来处理skb之类的责任链?

时间:2018-11-09 14:17:43

标签: linux linux-kernel tcp-ip

现在,我正在Linux内核中阅读ipv6代码。我发现有很多函数可以相互调用来处理skb。像这样的代码:

Func1(skb) {  Func2(skb) }
Func2(skb) {  Func3(skb) }
Func3(skb) {  Func4(skb) }
...

问题是,在此过程中将出现 DEEP CALL TRACE ,例如:

Func4
Func3
Func2
Func1

那么为什么不这样编码:

Func(skb) { Subfunc1(skb); Subfunc2(skb); Subfunc3(skb); ...}

CALL TRACE仅2层。

SubfuncX
Func

如果CALL TRACE太深,我认为,1)调试困难,2)使用VETH对设备时可能会出现问题。

那么,如果是这样,那么设计这样的原因是什么?

这是ipv6函数调用:

enter image description here

0 个答案:

没有答案