现在,我正在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函数调用: